您可以通過調整節點池的期望節點數實現節點池的手動擴縮容,將節點數目維持在期望數量,提升運維效率。擴容節點池功能可以保證節點數量足夠支撐業務運行,縮容可以節省資源成本。
ACK還支持自動擴縮容,您可以選擇節點自動伸縮或節點即時彈性兩種彈性方案,自動擴縮節點資源以進行調度容量的補充。詳細信息,請參見節點伸縮概述。
節點池擴縮容介紹
期望節點數是指節點池應該維持的節點數量,代表節點池終態的節點數。指定節點池的期望節點數后,節點池將會根據當前節點池內節點數自動觸發擴容或縮容,將節點數目維持在期望數量,無需人工干預。
擴容節點池
設定期望節點數大于當前節點池的節點數時,系統將觸發節點池擴容。您可以通過增大期望節點數的方式擴容節點池。在出現彈出節點失敗的情況下,系統也會自動進行重試,直至節點池現有節點數滿足期望節點數。彈出節點的配置將取決于節點池的配置,具體彈出的實例規格和可用區與節點池擴縮容策略相關。關于擴縮容策略,請參見擴縮容策略。
在節點池的擴容過程中,將按照實際創建和使用的規格計費。例如,如果某一節點池同時配置2類實例規格,付費類型為按量付費,擴縮容策略配置為優先級策略。本次擴容在第一優先級的虛擬交換機所在的可用區新增了2個節點A,并在節點A資源不足時在第二優先級的虛擬交換機所在的可用區新增了3個節點B,那么1小時的費用為實例規格單價 x 節點數量 x 計費時長
,即節點A單價 x 2 x 1+ 節點B單價 x 3 x 1
。
節點池擴容包含兩個步驟。
彈出ECS實例:ACK節點池底層依賴ESS(彈性伸縮服務)彈出節點。調整期望節點數后,ACK會修改ESS伸縮組期望實例數,根據節點池配置執行擴容,節點池將顯示為擴容中。ESS成功彈出ECS實例后,節點池將顯示為已激活。關于期望實例數的更多信息,請參見期望實例數。
重要神龍裸金屬GPU實例(ecs規格族為ebmgn7、ebmgn7e)不支持自動MIG清理,因此ACK添加該類型節點時會對已有的MIG設置進行重置。由于重置時間不定,可能會出現重置時間過長導致自動添加節點失敗。
排查失敗原因,請參見裸金屬實例節點添加失敗怎么辦?。
關于ebmgn7e,請參見GPU計算型(gn/ebm/scc系列)。
將ECS實例添加到集群:ESS彈出ECS實例后,實例將自動運行
cloud-init
腳本(由ACK維護),對節點進行初始化,并將節點加入到節點池。運行的日志將保存到節點/var/log/messages文件中。您可以登錄節點執行grep cloud-init /var/log/messages
查看執行日志。說明如果節點成功加入到節點池,將會自動清除
/var/log/messages
中的日志信息,因此日志僅作為節點添加到集群失敗的參考信息。如果添加節點到集群失敗,
/var/log/messages
中的日志信息也將被截取關鍵信息到Task結果中。您可以單擊目標集群,在集群任務頁簽查看原因。
縮容節點池
設定期望節點數小于當前節點池的節點數,系統將觸發節點池的縮容并移除節點。
縮容節點時:
如果節點池擴縮容策略選擇優先級策略,系統會選擇最新創建的實例進行縮容。
如果節點池擴縮容策略選擇均衡分布策略,系統會按照均衡發布策略篩選ECS實例的可用區,再選擇最新創建的實例進行縮容,使移出ECS實例后伸縮組各可用區的ECS實例數量大致相當。
如果節點池擴縮容策略選擇成本優化策略,系統縮容時會按照vCPU單價從高到低嘗試移出ECS實例。
通過期望節點數縮容節點,即使節點排水失敗,節點仍會被移除。若您對節點排水有強需求,請使用指定節點移除。具體操作,請參見移除節點。
縮容節點時,包年包月的ECS實例不會被釋放,如果需要釋放包年包月的實例,請登錄ECS管理控制臺,將包年包月的實例轉換為按量付費的節點后再嘗試釋放。如需將包年包月實例轉按量付費,請參見包年包月轉按量付費。
操作步驟
登錄容器服務管理控制臺,在左側導航欄選擇集群。
在集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇 。
在目標節點池列表的操作列,單擊更多 > 擴縮容。
(可選)如果您之前沒有為OOS運維編排服務授權,需要進行此步驟。通過創建AliyunOOSLifecycleHook4CSRole角色,為OOS運維編排服務授權。
單擊AliyunOOSLifecycleHook4CSRole。
說明如果當前賬號是阿里云賬號,單擊AliyunOOSLifecycleHook4CSRole即可授權。
如果當前賬號是RAM用戶,請先確保對應的阿里云賬號已授權AliyunOOSLifecycleHook4CSRole,并為RAM用戶授予AliyunRAMReadOnlyAccess系統策略。具體操作,請參見為RAM用戶授權。
在云資源訪問授權頁面,單擊同意授權。
填寫期望節點數,按頁面提示提交配置。
在節點池列表的狀態列,若顯示擴容中,表明節點池正在擴容中。若顯示已激活,表明擴容已完成。
重要集群擴容節點時,如果安全組拒絕訪問100.64.0.0/10,會導致節點無法正常加入到集群。
在節點池列表的狀態列,若顯示移除節點中,表明節點池正在縮容中,若顯示已激活,表明縮容已完成。
非標操作及處理建議
期望節點數是指節點池應該維持的節點數量。一些非標準操作可能會導致節點池未按照預期擴容,從而帶來資產損失。常見的非標操作及對應建議如下。
不推薦您進行任何非標操作。
非標操作 | 節點池行為 | 建議 |
直接通過 | 期望節點數僅感知ESS伸縮組內ECS實例數量,不感知集群內Node數量。 通過API Server移除節點,由于ECS沒有被釋放,因此節點池節點數不會有任何變化。但由于節點已經移出了集群,所以節點池節點列表中的節點狀態會顯示為未知。 |
|
通過ECS控制臺或者OpenAPI釋放ECS。 | 節點池會感知到ECS的釋放,并自動彈出新ECS實例,補充到期望節點數數量。 | |
通過ESS將ECS實例移除伸縮組并且不修改期望實例數。 | 節點池會感知到ECS的釋放,并自動彈出新ECS實例,補充到期望節點數數量。 | 請勿直接操作節點池相關的伸縮組,以免造成節點池行為異常。 |
包年包月ECS實例到期釋放。 | 節點池會感知到ECS的釋放,并自動彈出新ECS實例,補充到期望節點數數量。 | |
通過彈性伸縮控制臺或OpenAPI手動開啟ESS伸縮組實例的健康檢查。 | ESS伸縮組開啟健康檢查后,每當檢測到存在不健康實例(如停機)時,會自動彈出新的ECS實例。 | ACK默認不開啟ESS健康檢查,僅在節點被釋放時才會補充新的ECS實例。請勿直接操作節點池的ESS伸縮組,否則可能會造成節點池行為異常。 |
擴縮容失敗錯誤碼及解決方法
在擴縮容節點池過程中,可能會由于庫存等原因造成擴縮容失敗。您可以在集群列表頁面單擊目標集群名稱,在集群任務頁簽查看集群任務列表,單擊查看原因查看節點池擴容失敗原因。
常見的擴容失敗錯誤碼如下。
錯誤碼 | 問題原因 | 解決方法 |
RecommendEmpty.InstanceTypeNoStock | 當前可用區下ECS實例庫存不足。 | 嘗試通過節點池編輯功能為節點池增加不同可用區交換機(vSwitch)以及配置多種實例規格,提高節點創建成功率。 說明 在節點池頁面單擊目標節點池名稱,在基本信息頁簽的伸縮組后面會提示彈性強度。您可以通過彈性強度查看您節點池的擴容成功概率。 |
NodepoolScaleFailed.FailedJoinCluster | 節點添加到ACK集群失敗。 | 登錄節點執行 |
InvalidAccountStatus.NotEnoughBalance | 您的賬戶余額不足。 | 充值后再進行操作。詳細信息,請參見充值操作指引。 |
InvalidParameter.NotMatch | 錯誤信息 | |
QuotaExceed.ElasticQuota | 在當前地域選擇的實例規格創建的ECS數量超出配額上限。 | 您可以進行如下操作。
|
InvalidResourceType.NotSupported | 您指定的ECS實例類型在當前可用區下不支持使用或者無庫存。 | 通過查詢實例規格查詢該可用區下的實例規格是否存在,并修改節點池的實例規格。 |
InvalidImage.NotSupported | 錯誤信息 | |
InvalidParameter.NotMatch | 錯誤信息 | |
QuotaExceeded.PrivateIpAddress | 交換機下可用的私有IP地址數量不足。 | 嘗試為節點池配置更多可用交換機后重試。 |
InvalidParameter.KmsNotEnabled | 您指定的KMS密鑰為非啟用狀態。 | |
InvalidInstanceType.NotSupported | 錯誤信息 | |
InsufficientBalance.CreditPay | 您的賬戶余額不足。 | 請先充值再進行操作。詳細信息,請參見充值操作指引。 |
ApiServer.InternalError | 錯誤信息 | 檢查集群API Server是否可用或者可訪問。詳細信息,請參見控制臺訪問集群異常問題排查 。 |
RecommendEmpty.InstanceTypeNotAuthorized | 您指定的實例規格需要授權后使用。 | 請向云服務器ECS提交工單申請授權。 |
Account.Arrearage | 您的賬戶余額不足。 | 請先充值再進行操作。詳細信息,請參見充值操作指引。 |
Err.QueryEndpoints | 訪問ACK集群的API Server失敗。 | 檢查您的集群API Server是否可用或者可訪問。詳細信息,請參見控制臺訪問集群異常問題排查 。 |
RecommendEmpty.DiskTypeNoStock | 指定可用區下磁盤庫存不足。 | 嘗試增加節點池的可用區(vSwitch),或者更換磁盤類型后重試。 |
InvalidParameter.KMSKeyId.KMSUnauthorized | 沒有授權無法訪問密鑰管理服務KMS。 | 登錄ECS管理控制臺為ECS配置訪問KMS服務角色AliyunECSDiskEncryptDefaultRole授權。詳細信息,請參見加密相關的權限說明。 |
InvalidParameter.Conflict | 錯誤信息 | 您可以嘗試更換實例規格或者磁盤類型后重試。 |
NotSupportSnapshotEncrypted.DiskCategory | 系統盤加密僅支持ESSD類型云盤。 | 請更換云盤類型。關于云盤類型與加密,請參見創建節點池。 |
ScalingActivityInProgress | 當前節點池正在伸縮中,請稍后再操作。 | 為了避免伸縮活動沖突,請勿直接通過ESS進行節點擴縮容。 |
Instance.StartInstanceFailed | ECS實例啟動失敗。 | 請稍后嘗試重新操作。排查具體原因,請向云服務器ECS提交工單。 |
OperationDenied.NoStock | 您選擇的ECS實例規格在指定的可用區內庫存不足。 | 您可以選擇其他實例規格后重試。 彈性強度會根據實時庫存量化您節點池的擴容成功概率。詳細信息,請參見查看節點池彈性強度。 |
RecommendEmpty.InstanceTypeNoStock | 您選擇的ECS實例規格在指定的可用區內庫存不足。 | 您可以選擇其他實例規格后重試。 彈性強度會根據實時庫存量化您節點池的擴容成功概率。詳細信息,請參見查看節點池彈性強度。 |
NodepoolScaleFailed.WaitForDesiredSizeTimeout | 擴容任務超時。 | 按照如下操作查看擴容詳情。
|
ApiServer.TooManyRequests | 擴容任務被API Server限流。 | 擴容任務被API Server限流,請減少API Server請求,或稍后重試。 |
NodepoolScaleFailed.PartialSuccess | 由于庫存原因,部分節點擴容成功。 | 選擇其他實例規格后重試。 彈性強度會根據實時庫存量化您節點池的擴容成功概率。詳細信息,請參見查看節點池彈性強度。 |
相關文檔
如需將集群中的節點移出集群,請參見移除節點了解具體操作及注意事項。
節點池的運維操作,例如升級節點池、節點自動恢復、修復節點池OS CVE漏洞等,請參見節點池運維。
節點池相關的最佳實踐,例如基于部署集將節點分散部署在不同的物理服務器上以實現高可用、基于搶占式實例創建節點池等,請參見節點與節點池最佳實踐。