有没有办法访问 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”
在 Pig 中使用 Hcat Loader 访问在 Hive 中创建的视图
GKE 上的 Istio Mixer 缺少 promhttp 和 promtck
如何在具有默认 istio beta 功能的 GKE 中安装带有 prometheus 的 Kiali Dashboard?