![](/img/trans.png)
[英]how to set/update enviroment variable for running pods in kubernetes
[英]How to update a set of pods running in kubernetes?
更新由 kubernetes 集群中的復制控制器控制的一組 pod(例如,在進行代碼更改並將底層 docker 鏡像推送到 docker hub 之后)的首選方式是什么?
我可以看到兩種方式:
kubectl rolling-update
通過rolling-update
我必須更改復制控制器名稱。 由於我將復制控制器定義存儲在 YAML 文件中而不是手動生成,因此必須更改文件以推出代碼更新似乎會帶來壞習慣,例如在復制控制器的 2 個名稱(例如控制器 A 和控制器 B)之間交替避免名稱沖突。
什么是更好的方法?
更新: kubectl rolling-update
已被棄用,替換命令為kubectl rollout
。 另請注意,由於我寫了原始答案,因此已添加部署資源,並且是比 ReplicaSets 更好的選擇,因為滾動更新是在服務器端而不是由客戶端執行的。
您應該使用kubectl rolling-update
。 我們最近添加了一個功能來執行“簡單滾動更新”,該功能將更新復制控制器中的圖像而無需重命名。 這是kubectl help rolling-update
輸出中顯示的最后一個示例:
// Update the pods of frontend by just changing the image, and keeping the old name
$ kubectl rolling-update frontend --image=image:v2
此命令還支持恢復——如果您取消更新並稍后重新啟動,它將從停止的地方恢復。 盡管它在幕后創建了一個新的復制控制器,但在更新結束時,新的復制控制器采用舊復制控制器的名稱,因此它看起來是純粹的更新,而不是切換到一個全新的復制控制器。
The following explanations are from
Kubernetes In Action s book
手動刪除和重新創建復制控制器
手動進行滾動更新既laborious
又error-prone
。 根據副本的數量,您需要以正確的順序運行十幾個或更多的命令來執行更新過程。 幸運的是,Kubernetes 允許您使用單個命令執行滾動更新。
使用 kubectl滾動更新
您可以讓 kubectl 執行它們,而不是手動使用 ReplicationControllers 執行滾動更新。 使用 kubectl 執行更新使過程變得更容易,但是,這現在是一種過時的應用程序更新方式。
為什么執行這樣的更新不如預期的好是因為它是必要的。 Kubernetes 如何讓你告訴它系統的期望狀態,並讓 Kubernetes 通過找出最好的方法來實現它自己的狀態。
使用部署以聲明方式更新應用程序--最佳替代方案--
Deployment 是一種更高級別的資源,用於部署應用程序並以聲明方式更新它們,而不是通過 ReplicationController 或 ReplicaSet 來完成,這兩者都被認為是較低級別的概念。
使用 Deployment 而不是較低級別的構造可以更輕松地更新應用程序,因為您通過單個 Deployment 資源定義所需的狀態,並讓 Kubernetes 處理其余的事情。
還有一件事,回滾部署是可能的,因為部署。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.