2017-06-14 80 views
0

我正在運行2個吊艙和一個Type:NodePort服務,以在吊艙之間平衡請求。我想知道何時向服務發送請求,該請求轉發到哪個窗格。有沒有辦法找到這個,因爲看看響應,看起來所有的請求都是由同一個pod處理的。如何查找正在處理請求的Kubernetes吊艙

回答

0
  1. 你可以看一下應用程序日誌文件,如果你使用一個。如果您在標準輸出中打印任何內容,請使用kubectl logs <pod>來查看消息。

  2. 對於測試,您可以在響應中包含pod主機名。

+0

我試過'kubectl日誌',它是空的。 – PMat

+0

你記錄什麼了嗎? –

0

很可能是因爲您的上下文和命名空間不足,您無法看到日誌。

嘗試使用kubectl get pods -o wide --all-namespaces | grep <pod>來獲取pod所在的名稱空間以及節點IP地址的信息。

然後喂,進入下面的命令來獲得最後100行日誌 kubectl --namespace <namespace> logs --tail 100 -f <pod>

另外還有一點莢不與服務相關聯的遠程機會的運行尾巴。要檢查運行kubectl describe services --namespace <namespace> <service>並在Selector:部分中查找應用程序名稱

您也可以執行到容器中,查看該端口本身是否可以訪問或綁定端口。如果它不在收聽或回答,很可能是由於該服務沒有與名稱空間中的應用程序相關聯。

+0

選擇器指向我的部署 – PMat

2

默認情況下,kubernetes Service將使用WRR進行負載平衡。在創建服務時,將在節點中生成iptables規則。

可以肯定的是,ssh進入節點並運行iptables-save|less。搜索服務的名稱。在下面的示例中,服務microbot負載平衡具有3個副本的microbot部署。你的案例中應該有2個條目,因爲你只有2個豆莢。

-A KUBE-SVC-LX5ZXALLN4UQ7ZFL -m comment --comment "default/microbot:" -m statistic --mode random --probability 0.33332999982 -j KUBE-SEP-OZCDYTQTC3KQGJK5 
-A KUBE-SVC-LX5ZXALLN4UQ7ZFL -m comment --comment "default/microbot:" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-SKIRAXBCCQB5R4MV 
-A KUBE-SVC-LX5ZXALLN4UQ7ZFL -m comment --comment "default/microbot:" -j KUBE-SEP-SPMPNZCOIJIRSNNQ 

如果iptables輸出並不像上述情況,很可能是您的服務配置不正確。就像Heidi所說的那樣,這個吊艙與服務無關。

+0

我有兩個pod,我的看起來像這樣'-A KUBE-SVC-RCFZYSCVQORLOLVD -m註釋 - 註釋「default/memory-service:」-m statistic --mode random --probability 0.50000000000 - j KUBE-SEP-CXEQ55XIH4PURQSE -A KUBE-SVC-RCFZYSCVQORLOLVD -m註釋 - 註釋「default/memory-service:」-j KUBE-SEP-QL7KI24MTSZRY3Q3' – PMat

+0

iptables規則看起來是正確的,應該正確地進行負載平衡。你可以讓每個命中的'memory-service'守護進程日誌?這樣你就可以用'kubectl logs -f'這個容器來觀察。或者,在部署中公開另外1個端口並將其與服務關聯。一旦你這樣做了''kubectl exec'到pod中,安裝netcat並讓它在額外的端口上連續監聽。然後再次運行你的測試。我就是這樣調試的。 –

相關問題