2017-04-19 123 views
1

我運行一個需要所有客戶端ips列表進行同步的應用程序。我在Kubernetes中運行這個應用程序,並從這些客戶端窗口向https://kubernetes/api/v1/pods發出請求。所以我正在尋找一種可靠的方法來識別所有由同一部署(複製集)以這種方式創建的pod。找到兄弟豆莢(通過同一部署部署的豆莢)

因此,重要的是,在軋製升級過程中,還可以正確識別吊艙。

我有一對夫婦的想法,我想分享,甚至沒有真正勸說我:

1)使用標籤(?labelSelector=label=value):

1.A)定義自定義標籤只有這些豆莢具有:有效的解決方案,但由於解決方案應該是一般的,我不想定義一個特殊的標籤,豆莢需要有。也是這樣,我不能確定添加其他標籤的豆莢。

1.b)使用自動生成的pod-template-hash label:很遺憾,在滾動更新過程中會發生更改,因此發生更新時,選擇器無法正常工作。

2)使用自定義字段(?fieldSelector

我想使用一個所述nameownerReference.name屬性的子部分的。可惜的是fieldSelector是badly documented或根本不工作。我還想過通過jq解析完整的豆莢列表,但不太喜歡這種依賴關係。

3)通過引用一個共同的服務識別所有吊艙

我現在看到的方式來認識到服務(旁邊再次使用標籤)


該吊艙屬於是否有任何其他的想法找出兄弟莢?我有些驚訝,我沒有找到一個類似的問題。

+0

標籤/選擇器真的是你的樣子ng for。使用'kubectl get rs [name] -o = yaml'並查看'selector:'字段。 –

+0

當然,通常選擇應該使用標籤來完成。雖然我仍然很驚訝沒有通用的方式來選擇兄弟姐妹,但在與一些合作伙伴交談之後,我意識到沒有和標籤是要走的路。 – nik

回答

0

這就是app選擇器的典型用途。

您可以使用kubectl列出部署的窗格。

以下是從official docs

kubectl get pods -l app=nginx 

    NAME          READY  STATUS RESTARTS 
    AGE nginx-deployment-1771418926-7o5ns 1/1  Running 0   
    16h nginx-deployment-1771418926-r18az 1/1  Running 0 

您還可以通過YAML文件中列出莢:

$ kubectl get pod -f ./pod.yaml

名單由部署創建的豆莢

+1

這隻適用於在pod規範中實際聲明'app'標籤或使用'kubectl run'命令(隱式添加標籤)的情況。 –

+0

這是正確的,但仍然會被視爲做你正在努力達到的標準方式我相信。 –