操作場景
節點滾動升級就是先創建新節點,然后將工作負載遷移到新的節點上,再刪除老的節點。遷移流程如下圖所示:
圖 節點遷移流程

約束與限制
- 現有節點和工作負載待遷移的節點必須在同一集群。
- 當前僅支持在Kubernetes v1.13.10及以后集群版本執行此操作。
- 默認節點池DefaultPool不支持修改配置。
原有節點在默認節點池
步驟 2 創建新的節點池。具體請參見創建節點池。
步驟 2 單擊節點池名稱,在節點列表中可查看到新建節點的IP地址。
步驟 3 安裝配置kubectl。具體請參見通過kubectl連接集群。
步驟 4 遷移工作負載。
1、給需要遷移工作負載的節點打上Taint(污點)。
kubectl taint node [node] key=value: [effect]
其中, [node] 為待遷移工作負載所在節點的IP; [effect] 取值為NoSchedule、PreferNoSchedule或NoExecute,此處必須設置為NoSchedule。
- NoSchedule:一定不能被調度。
- PreferNoSchedule:盡量不要調度。
- NoExecute:不僅不會調度,還會驅逐Node上已有的Pod。
說明若需要重新設置污點時,可執行 kubectl taint node [node] key:[ effect] - 命令去除污點。
2、安全驅逐節點上的工作負載。
kubectl drain [node]*
其中, [node] 為待轉移工作負載所在節點的IP。
3、在左側導航欄中選擇“工作負載 > 無狀態負載 Deployment”。在工作負載列表中,待遷移工作負載的狀態由“運行中”變為“未就緒”。工作負載狀態再次變為“運行中”,表示遷移成功。
說明遷移工作負載時,若工作負載配置了節點親和性,則工作負載會一直提示“未就緒”等異常情況。請單擊工作負載名稱進入到負載詳情頁,在選擇“調度策略”頁簽,刪除原節點的親和性配置,配置新的節點親和性和反親和性策略,詳情請參見調度策略親和與反親和。
工作負載遷移成功后,在工作負載詳情頁的“實例列表”頁簽,可查看到工作負載狀已遷移到步驟1中所創建的節點上。
步驟 5 刪除原有節點。
工作負載遷移成功且運行正常后,即可刪除原有節點。
原有節點不在默認節點池
步驟 1 拷貝節點池并添加節點。具體請參見拷貝節點池。
步驟 2 單擊節點池名稱操作列的“節點列表”,在節點列表中可查看到新建節點的IP地址。
步驟 3 遷移工作負載。
1、單擊原節點池后的“編輯”配置Taints參數。
2、輸入污點(Taints)的Key和Value值,Effect選項有NoSchedule、PreferNoSchedule或NoExecute,此處必須選擇“NoExecute”,單擊“添加”。
- NoSchedule:一定不能被調度。
- PreferNoSchedule:盡量不要調度。
- NoExecute:不僅不會調度,還會驅逐Node上已有的Pod。
說明若需要重新設置污點,需刪除已配置污點。
3、單擊“確定”。
4、在左側導航欄中選擇“工作負載 > 無狀態負載 Deployment”。在工作負載列表中,待遷移工作負載的狀態由“運行中”變為“未就緒”。工作負載狀態再次變為“運行中”,表示遷移成功。
說明遷移工作負載時,若工作負載配置了節點親和性,則工作負載會一直提示“未就緒”等異常情況。請單擊工作負載名稱進入到負載詳情頁,在選擇“調度策略”頁簽,刪除原節點的親和性配置,配置新的節點親和性和反親和性策略,詳情請參見調度策略親和與反親和。
工作負載遷移成功后,在工作負載詳情頁的“Pods”頁簽,可查看到工作負載狀已遷移到步驟 1 中所創建的節點上。
步驟 4 刪除原有節點。
工作負載遷移成功且運行正常后,即可刪除原有節點。