簡體   English   中英

有什么方法可以知道服務在 Kubernetes 中是哪個 pod 負載均衡的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM