當您不再需要該節點繼續工作時,請您在Container Service管理主控台的節點池頁面進行移除節點的標準化操作,以免帶來不符合預期的效果。移除節點會涉及Pod遷移,可能會影響業務,請在業務低峰期操作。
前提條件
已建立Kubernetes叢集。具體操作,請參見建立Kubernetes託管版叢集、建立Kubernetes專有版叢集。
已通過kubectl串連Kubernetes叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
工作原理
節點池移除節點是指將叢集中的節點移出叢集,ACK會自動調整期望節點數,調整後期望節點數為原期望節點數減去移除節點數。修改期望節點數,請參見修改期望節點數。
您可以通過勾選:
同時釋放ECS:節點移出叢集後釋放執行個體。
重要訂用帳戶執行個體不會被釋放。
自動排空節點:節點移出叢集前對節點進行排水。
說明移除節點任務的逾時時間為30min。如果您的Pod中配置了較大的terminationGracePeriodSeconds(優雅退出時間),比如40min。因為逾時時間的優先順序高於優雅退出時間,所以優先生效的是30min,而不是40min。排水任務在等待30min後會中斷流程,並判定排水失敗,需要自行重試。
排水失敗後移除節點任務將會立即暫停並退出,不會執行後續的移除步驟。因此如果您的業務Pod對優雅退出時間要求較高,您可以先通過執行命令
kubectl drain [node-name] [options]
手動排水再驅逐節點,待節點上沒有業務Pod運行後,取消勾選自動排空節點選項,對節點進行移除操作。
節點池移除節點將依次執行以下步驟:
如果勾選了自動排空節點,則會優先對節點進行排水。如果排水失敗,移除節點任務將立即暫停並退出。因此請您在做移除節點操作前,確保其他節點資源充足,避免業務無法調度的問題。您也可以通過執行
kubectl drain [node-name] [options]
命令,在移除節點前自行對節點進行排水,並在移除節點時不勾選自動排空節點。將節點從APIServer移除。
將節點從ESS伸縮組移除並釋放(是否會釋放取決於是否勾選同時釋放ECS)。如果節點是訂用帳戶的節點,即使勾選了同時釋放ECS,也不會釋放。需要您在移除節點完成後通過ECS控制台或介面手動處理。如果節點是隨用隨付節點,且您在移除節點時,勾選了同時釋放ECS,則會立即釋放ECS節點,請您提前做好資料備份。
使用說明
移除節點會涉及Pod遷移,可能會影響業務,請在業務低峰期操作。
操作過程中可能存在非預期風險,請提前做好相關的資料備份。
操作過程中,後台會將當前節點設定為不可調度狀態。
移除節點僅移除Worker節點,不會移除Master節點。
移除節點請通過控制台進行操作,如果使用kubectl delete node方式手動移除節點,則:
移除後的節點無法再添加到其他叢集上。
刪除叢集時,該節點所在的ECS執行個體會被釋放。
如果您沒有通過Container Service控制台,而是直接在ECS或者ESS控制台(或相關API)主動釋放節點、移除執行個體,或者因訂用帳戶到期而被動釋放節點,那麼節點或執行個體就會直接停機,自動從Container Service控制台中移出。如果節點池設定了期望節點數,那麼節點池為了能夠將節點個數維持在期望節點數,會根據相應節點池配置自動擴容其他執行個體至節點池,以達到期望節點數。
操作步驟
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在節點池頁面,單擊目標節點池名稱。在節點管理頁簽中,選中目標節點,並單擊移除節點。
可選:在移除節點對話方塊中,可選中同時釋放ECS和自動排空節點(drain)。
同時釋放ECS:
僅釋放按量未費類型的ECS執行個體及其資料盤,不被釋放的ECS執行個體會繼續收費。
對於預付費ECS執行個體,計費周期到期後,ECS執行個體會自動釋放。
若不選擇同時釋放ECS,該節點所在的ECS執行個體會繼續計費。
自動排空節點(drain):將待移除節點上的Pod轉移到其他節點。請確保叢集其他節點的資源充足。
您還可以通過執行命令
kubectl drain node-name [options]
的方式將待移除節點上的Pod轉移到其他節點。說明node-name格式為your-region-name.node-id。
your-region-name為您叢集所在的地區名稱。node-id為待移除節點所在的ECS執行個體ID。例如,cn-hangzhou.i-i-bp1asavedmte377c3**** 。
options
為該命令的可選配置參數。例如,可配置為--force --ignore-daemonsets --delete-local-data
。更多資訊,請執行命令kubectl drain --help
查看。
選中我已瞭解上述說明,確認移除節點,單擊確定。
說明如果提示節點移除失敗,取消勾選同時釋放ECS和自動排空節點(drain)後重新移除。
常見問題
為什麼節點池的節點管理頁簽中沒有目標節點,但目標節點屬於叢集?
您可以通過以下方式移除節點。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在節點頁面,選中所有要移除的節點,單擊大量移除。
在彈出頁面確認相關資訊,單擊確定。