讓我們假設一個 K8s 集群存在一個具有 3 個副本的部署(應該不相關,但我們假設它是一個 AKS 集群)。
該容器使用 K8s .NET 客戶端庫運行 .NET 6 代碼。我們可以讀取主機 pod id,但是我們可以讀取主機 pod 副本號嗎?
例如,假設 3 個副本托管在名為 podA、podB、podC 的 pod 中。然后 podB 崩潰。K8s 將重新啟動副本,但使用不同的 pod 名稱,比如說 podD。我怎樣才能以編程方式找到剛剛啟動的 pod 正是復蘇的 podB?
uj5u.com熱心網友回復:
首先,當一個pod崩潰時,k8s并不一定會改變pod的名稱,因為正如你所說,它是重新啟動,而不是重新創建。將出現重新啟動,并且命令輸出RESTARTS列中的數字將遞增。kubectl get pods -n <namespace>如果每次重新啟動都會創建一個新的 pod,那么一開始就不需要RESTARTS列。
其次,在您的示例中,無法在部署中分配PodB完全隨機的名稱。PodD因為 k8s 將它們隨機分配給部署 pod。如果你想做到這一點,你應該使用StatefulSet而不是,Deployment因為 StatefulSet 中的每個 pod 都有一個唯一且穩定的網路身份。
作為k8s檔案點;
Like a Deployment, a StatefulSet manages Pods that are based on an identical container spec. Unlike a Deployment, a StatefulSet maintains a sticky identity for each of their Pods. These pods are created from the same spec, but are not interchangeable: each has a persistent identifier that it maintains across any rescheduling.
參考:https ://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/449535.html
標籤:。网 Kubernetes
上一篇:在腳本中將環境變數設定為命令
