天天看點

雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

一個 Deployment 控制器為 Pods 和 ReplicaSets 提供聲明式的更新能力。

雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

你負責描述 Deployment 中的 目标狀态,而 Deployment 控制器以受控速率更改實際狀态, 使其變為期望狀态。你可以定義 Deployment 以建立新的 ReplicaSet,或删除現有 Deployment, 并通過新的 Deployment 收養其資源。

不要管理 Deployment 所擁有的 ReplicaSet 。 如果存在下面未覆寫的使用場景,請考慮在 

Kubernetes  倉庫中提出 Issue。

場景

建立 Deployment 以将 ReplicaSet 上線。 ReplicaSet 在背景建立 Pods。 檢查 ReplicaSet 的上線狀态,檢視其是否成功。

通過更新 Deployment 的 PodTemplateSpec,聲明 Pod 的新狀态 。 新的 ReplicaSet 會被建立,Deployment 以受控速率将 Pod 從舊 ReplicaSet 遷移到新 ReplicaSet。 每個新的 ReplicaSet 都會更新 Deployment 的修訂版本。

如果 Deployment 的目前狀态不穩定,復原到較早的 Deployment 版本。 每次復原都會更新 Deployment 的修訂版本。

擴大 Deployment 規模以承擔更多負載。

暫停 Deployment 以應用對 PodTemplateSpec 所作的多項修改, 然後恢複其執行以啟動新的上線版本。

建立 Deployment

下面是 Deployment 示例。其中建立了一個 ReplicaSet,負責啟動三個 nginx Pods:

使用 Deployment 狀态 來判定上線過程是否出現停滞。

清理較舊的不再需要的 ReplicaSet 。

雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

常用指令

kubectl get deployments

檢查 Deployment 是否已建立

雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

在檢查叢集中的 Deployment 時,所顯示的字段有:

  • NAME

    叢集中 Deployment 的名稱。

  • READY

    應用程式的可用的 副本 數。顯示的模式是“就緒個數/期望個數”。

  • UP-TO-DATE

    為了打到期望狀态已經更新的副本數。

  • AVAILABLE

    應用可供使用者使用的副本數。

  • AGE

    應用程式運作的時間。

請注意期望副本數是根據 .spec.replicas 字段設定 3。

kubectl get deployment -o wide      
雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

更新 Deployment

僅當 Deployment Pod 模闆(即 .spec.template)發生改變時,例如模闆的标簽或容器鏡像被更新, 才會觸發 Deployment 上線。 其他更新(如對 Deployment 執行擴縮容的操作)不會觸發上線動作。

按照以下步驟更新 Deployment:

先來更新 nginx Pod 以使用 nginx:1.13 鏡像,而不是 nginx:1.12.2 鏡像。

kubectl --record deployment.apps/nginx-deployment set image \
   deployment.v1.apps/nginx-deployment nginx=nginx:1.9.1      

或使用如下指令

kubectl set image deployment nginx-deployment nginx=nginx:1.13      
雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

檢查 Deployment 上線曆史

按照如下步驟檢查復原曆史:

首先,檢查 Deployment 修訂曆史:

kubectl rollout history deployment.v1.apps/nginx-deployment      

輸出:

雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

CHANGE-CAUSE 的内容是從 Deployment 的 kubernetes.io/change-cause 注解複制過來的。 複制動作發生在修訂版本建立時。你可以通過以下方式設定 CHANGE-CAUSE 消息:

使用 kubectl annotate deployment.v1.apps/nginx-deployment kubernetes.io/change-cause=“image updated to 1.9.1” 為 Deployment 添加注解。

追加 --record 指令行标志以儲存正在更改資源的 kubectl 指令。

手動編輯資源的清單。

滾動釋出

雲原生容器實戰(四)-Kubernetes工作負載資源之Deployment場景建立 Deployment更新 Deployment檢查 Deployment 上線曆史滾動釋出

繼續閱讀