當您不再需要某Worker節點繼續工作時,可以在Container Service管理主控台將節點從節點池或叢集中移除。請參見本文的注意事項和功能說明,在業務低峰期執行標準化操作。
適用情境
節點池功能推出前建立的老叢集中,存在未被節點池管理的游離Worker節點。期望從叢集中移除該節點。當後續仍需使用時,期望將其添加到已有節點池,便於節點批量營運。
購買新ECS執行個體後,需要替換節點池中老ECS執行個體,期望將新執行個體添加到節點池中運行,將老執行個體移除。
節點池開啟了手動擴容或自動擴容,期望縮容指定的ECS執行個體,節省資源成本。
需要將一個節點池中的節點遷移到另一個節點池,期望從原節點池中移除對應節點,然後添加到新節點池中。
ECS執行個體需升降配資源,期望移除對應節點,在ECS控制台升降配後再將其添加到節點池中。
ECS執行個體需轉換付費類型(例如隨用隨付轉訂用帳戶),期望移除對應節點,在ECS控制台轉換後再將其添加到節點池中。
節點異常時,期望通過移除節點再添加到叢集中的方式完成節點初始化。
此操作會通過替盤重設節點(替換節點系統硬碟)完成,請務必備份系統硬碟中的重要資料。
注意事項
移除節點時,請在Container Service管理主控台執行標準化操作。請勿使用
kubectl delete node方式手動移除節點。請勿直接在ECS或者ESS控制台(或通過相關API)主動釋放節點、移除執行個體,或因訂用帳戶執行個體到期而被動釋放節點。這些情況下,節點會直接停機,自動從Container Service管理主控台中移除。
如果節點池設定了期望節點數,為了將節點個數始終維持在期望節點數,節點池會根據相應配置自動擴容其他執行個體。
移除節點涉及Pod的遷移,可能會影響業務,請在業務低峰期操作。操作過程中可能存在非預期風險,請提前做好相關的資料備份。
移除節點時,ACK會執行排水操作,請確保叢集其他節點的資源充足,以避免業務Pod無法調度。
需檢查待移除節點上的Pod的節點親和性規則和調度策略,確保Pod不會因為節點移除而無法調度到其他節點。
功能說明
移除節點是指將某個或某些Worker節點從節點池或叢集中移除。如果您的節點池開啟了期望節點數(節點池應該維持的總節點數量),節點池會自動調整該數值。
如移除後仍需將執行個體添加到叢集中,請參見自動或手動添加節點。
移除前,支援按需選擇是否自動排空節點(將節點上的Pod安全驅逐到其他節點)以及是否同時釋放ECS(釋放ECS執行個體及其資料盤)。
自動排空節點(drain)
節點移除前,對節點進行排水,將節點上的Pod安全地驅逐到其他節點,避免服務中斷。執行操作前,請確保叢集其他節點的資源充足,以避免業務Pod無法調度。同時關注以下注意事項。
優雅退出時間配置:移除節點時,系統預設的 Pod 優雅退出逾時時間為 30 分鐘。 即使 Pod 自身配置了更長的terminationGracePeriodSeconds優雅退出時間(例如 40 分鐘),系統也會優先遵循 30 分鐘的逾時時間。 超過 30 分鐘後,即使 Pod 尚未完成優雅退出,系統會強制中斷並判定排水失敗,停止後續的節點移除操作,需要手動重試。
如業務Pod對優雅退出時間要求較高,建議先通過
kubectl drain <nodeName> [options]手動排水再驅逐節點。待節點上沒有業務Pod運行後,取消勾選自動排空節點(drain),再對節點進行移除操作。Pod Disruption Budget(PDB)配置:節點排水操作會在遵循PDB的前提下將節點上的Pod驅逐至其他可用節點。請檢查並調整或刪除PDB規則,避免排水異常。
同時釋放 ECS
節點移除後同時釋放ECS執行個體及其資料盤。請提前做好資料備份。 若不選擇,對應的ECS執行個體仍會繼續計費。
僅釋放隨用隨付類型的ECS執行個體及其資料盤,不被釋放的ECS執行個體會繼續收費。
訂用帳戶的ECS執行個體會在計費周期到期後自動釋放。您可以在ECS執行個體到期前申請退款,提前釋放執行個體,或將訂用帳戶執行個體轉隨用隨付執行個體後釋放。
操作步驟
從節點池中移除
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
單擊目標節點池名稱,在節點管理頁面選中目標節點,單擊頁面下方的大量移除。
選擇是否需要自動排空節點(drain)和同時釋放 ECS,仔細閱讀頁面注意事項後按照頁面提示完成操作。
關於自動排空節點(drain)和同時釋放 ECS的注意事項,請參見上文的功能說明。
從叢集中移除
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
選中目標節點,單擊頁面下方的大量移除。
選擇是否需要自動排空節點(drain)和同時釋放 ECS,仔細閱讀頁面注意事項後按照頁面提示完成操作。
關於自動排空節點(drain)和同時釋放 ECS的注意事項,請參見上文的功能說明。
常見問題
節點移除失敗如何處理?
節點可能會因為優雅退出時間、PDB配置等原因移除失敗,請參見前文的功能說明。此時,建議先通過kubectl drain <nodeName> [options]手動排水再驅逐節點。待節點上沒有業務Pod運行後,再對節點進行移除操作。
<nodeName>:格式為<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查看。
相關文檔
您也可以通過OpenAPI移除節點,請參見RemoveNodePoolNodes - 移除節點池節點、DeleteClusterNodes - 移除叢集節點。
如需將游離節點納入節點池進行管理,請參見遷移游離節點至節點池。
ACK支援通過調整節點池的期望節點數手動實現節點池擴縮容,將節點數目維持在期望數量,請參見手動擴縮容節點池。
如果購買ECS執行個體後需將該雲端服務器添加到ACK叢集中作為Worker節點,或移除Worker節點後需將節點執行個體重新加入節點池,您可以在Container Service管理主控台自動添加或手動添加節點,請參見添加已有節點。
如需重設ECS執行個體或清除系統硬碟的資料,請參見重新初始化系統硬碟(重設作業系統)。