簡體   English   中英

將節點標簽注入 Kubernetes pod

[英]Inject node labels into Kubernetes pod

我希望將服務部署到在多個區域上運行的 Kubernetes 集群,並希望能夠使用環境變量將區域/區域標簽注入到我的 pod 中。

我已經研究了向下的 API,但是這似乎只允許您從 pod/服務而不是從運行 pod 的節點注入標簽/元數據。

如果無法注入節點標簽,我想到的另一種解決方案是讓容器查詢 kubernetes/AWS API 以獲取此信息,但這意味着給我的容器增加了相當多的復雜性。

我想過讓容器查詢 kubernetes/AWS API 來獲取這些信息,但這意味着給我的容器增加了相當多的復雜性。

這是當前推薦的獲取向下 API 中不可用的信息的方法。 為了避免容器中的額外復雜性,您可以使用“邊車”和Tobias 解決方案的變 Sidecar 將是 pod 中的一個額外容器,它連接到 kubernetes API ,查詢您正在尋找的信息(節點標簽),並將輸出寫入共享卷。 這可以實現為一個init 容器,或者一個與 API 持續同步的邊車。

實現此目的的一種選擇是在每個節點上存儲一個自定義文件,其中包含您想要的環境變量的定義。 然后將包含該文件的文件夾掛載到容器中,並將文件內容作為容器啟動的一部分。

這里描述了一種類似的 Kubernetes 秘密方法: https : //github.com/kubernetes/kubernetes/blob/master/docs/design/secrets.md#deferral-sumption-secrets-as-environment-variables

作為 Tim St. Clair 答案的衍生物,您還可以考慮從PostStart 容器鈎子中寫出 pod 元數據。 眾所周知的 URL 中獲取您想要的元數據。 然后通過 API將其寫出到 k8s。 這樣做的優點是它是一次性執行。 無需保持邊車運行,因為區域和區域信息不會改變。

如前所述,可以通過 kubernetes API 訪問標簽。

我繼續制作了一個完整的工作版本來證明這一點(包括所需的 RBAC): https : //github.com/scottcrossen/kube-node-labels

在這個例子中,你可以在任何你會引用環境變量的地方引用節點標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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