有没有办法访问 Istio 在 GKE 中创建的 promsd 服务?

Posted

技术标签:

【中文标题】有没有办法访问 Istio 在 GKE 中创建的 promsd 服务?【英文标题】:Is there a way access the promsd service created by Istio in GKE? 【发布时间】:2020-05-20 20:38:38 【问题描述】:

我想从集群中的另一个 pod 访问由 Istio 运行的 Prometheus 服务。在我使用Kind 的本地开发环境中,我可以通过http://prometheus.istio-system.svc.cluster.local:9090 访问它。我希望在 GKE 上做同样的事情,所以我在 GKE 中使用 Istio addon 建立了一个集群:

gcloud beta container clusters create $GCLOUD_CLUSTER_NAME \
       --addons=HorizontalPodAutoscaling,Istio \
       --machine-type=n1-standard-2 \
       --num-nodes=4 \
       --cluster-version=latest --zone=$GCLOUD_CLUSTER_ZONE \
       --enable-stackdriver-kubernetes --enable-ip-alias \
       --enable-autorepair \
       --scopes cloud-platform \
       --preemptible

起初,我很困惑,因为我在istio-system 命名空间中没有看到prometheus 服务,然后我得知它们是renamed the prometheus service to promsd for Istio on GKE。我试图通过http://promsd.istio-system.svc.cluster.local:9090/ 访问 Prometheus,但没有成功。我尝试从另一个 pod 向它发送 telnet 以测试连接性,但我得到了 Connection Refused

root@shiny-wordcloud-69684cd88-lhxc8:/# telnet promsd.istio-system.svc.cluster.local 9090
Trying 10.0.1.215...
telnet: Unable to connect to remote host: Connection refused

然后我看到有 instructions for enabling Prometheus for Istio on GKE 并且很困惑,因为我认为 Prometheus 是开箱即用的 Istio。

我的问题是:

有没有办法访问 promsd 服务? instructions for enabling Prometheus for Istio on GKE 的用途是什么?这是在 GKE 中访问 Prometheus 指标的正确方法吗?

【问题讨论】:

【参考方案1】:

我已经处理了您的情况并遵循此文档:

a) 您必须启用 istio 网关和虚拟服务以允许在 envoy 代理级别进行配置,然后允许连接到 prometheus:

运行这个命令可以得到转发:

$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=promsd -o jsonpath='.items[0].metadata.name') 9090:9090
Forwarding from 127.0.0.1:9090 -> 9090

它正在工作。

这是我遵循的文档:

gke-istio-telemetry-demo

关于你的第二个问题:

我在 Google 的公共文档中找到了这个链接: Monitoring Prometheus

希望对你有帮助。

【讨论】:

我认为正确的命令是:kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=promsd -o jsonpath='.items[0] .metadata.name') 9090:9090【参考方案2】:

关于您的第一个问题,我想说您必须expose promsd 服务才能访问它。公开此服务意味着可以从 Internet 上查看集群中的指标。所以,请注意这一点。为此,您可以执行类似的命令,例如:

kubectl expose deployment promsd --type=LoadBalancer --name=promsd

对于第二个,purpose of using Prometheus 取决于哪种监控工具最适合您。 要访问此指标,您可以使用 Stackdriver Monitoring 或 Graphana。

【讨论】:

我想我们之间可能有误会。我正在尝试从集群内的另一个 pod 访问 promsd,而不是从外部 Internet。我不应该能够通过集群内的internal DNS for services 访问吗?看起来 9090 端口应该是打开的,所以我不确定连接被拒绝的原因。

以上是关于有没有办法访问 Istio 在 GKE 中创建的 promsd 服务?的主要内容,如果未能解决你的问题,请参考以下文章

带有 istio 的 GKE 上的 websockets 给出了“没有健康的上游”和“CrashLoopBackOff”

在 GKE + istio 上安装 Prometheus

访问未找到在网络上的 vba 中创建的 excel 文件

在 Pig 中使用 Hcat Loader 访问在 Hive 中创建的视图

GKE 上的 Istio Mixer 缺少 promhttp 和 promtck

如何在具有默认 istio beta 功能的 GKE 中安装带有 prometheus 的 Kiali Dashboard?