[英]Is there any way to know which pod the service is load-balanced in Kubernetes?
我通過 Deployment 管理 3 個 Pod,並通過 NodePort of Service 連接。
我想知道每當我從外部連接時服務負載平衡的 pod。
Pods日志很難查,可以通過event或者kubectl命令查到嗎?
我不確定這是否正是您想要的,但您可以使用Istio為所有服務通信生成詳細的遙測數據。
您可能對分布式跟蹤特別感興趣:
Istio 為每個服務生成分布式跟蹤跨度,使操作員能夠詳細了解網格內的調用流和服務依賴關系。
通過使用分布式跟蹤,您可以在每個請求通過網格時對其進行監控。
有關使用 Istio 進行分布式跟蹤的更多信息,請參閱分布式跟蹤文檔的常見問題解答。
Istio 支持多個跟蹤后端(例如Jaeger )。
Jaeger 是一個類似於OpenZipkin的分布式跟蹤系統,我們可以在jaegertracing 文檔中找到:
它用於監控和故障排除基於微服務的分布式系統,包括:
- 分布式上下文傳播
- 分布式事務監控
- 根本原因分析
- 服務依賴分析
- 性能/延遲優化
當然,您無需安裝 Istio 即可使用 Jaeger,但您必須檢測您的應用程序,以便將來自堆棧不同部分的跟蹤數據發送到 Jaeger。
我將向您展示如何使用 Jaeger 來監控示例請求。
假設我有一個app-1
Deployment
,其中包含三個使用Pods
服務公開的NodePort
。
$ kubectl get pod,deploy,svc
NAME READY STATUS RESTARTS AGE IP
app-1-7ddf4f77c6-g682z 2/2 Running 0 25m 10.60.1.11
app-1-7ddf4f77c6-smlcr 2/2 Running 0 25m 10.60.0.7
app-1-7ddf4f77c6-zn7kh 2/2 Running 0 25m 10.60.2.5
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/app-1 3/3 3 3 21m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/app-1 NodePort 10.64.0.88 <none> 80:30881/TCP 25m
此外,我部署了jaeger
(使用istio
):
$ kubectl get deploy -n istio-system | grep jaeger
jaeger 1/1 1 1 67m
為了檢查 Jaeger 是否按預期工作,我將嘗試從集群外部連接到這個app-1
應用程序(使用NodePort
服務):
$ curl <PUBLIC_IP>:30881
app-1
讓我們用 Jaeger 找到這個蹤跡:
如您所見,我們可以輕松找出哪個 Pod 收到了我們的請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.