ACK叢集通過調整節點池的期望節點數實現節點池擴縮容,將節點數目維持在期望數量。擴容節點池功能可以保證節點數量足夠支撐業務運行,縮容節省成本。擴縮容節點池均可自動化執行,提升了營運效率。
前提條件
已建立叢集且叢集中已有節點池,請參見建立節點池。
已通過kubectl工具串連叢集。具體操作,請參見擷取叢集KubeConfig並通過kubectl工具串連叢集。
節點池擴縮容介紹
期望節點數是指節點池應該維持的節點數量,代表節點池終態的節點數。指定節點池的期望節點數後,節點池將會根據當前節點池內節點數自動觸發擴容或縮容,將節點數目維持在期望數量,無需人工幹預。
擴容節點池
設定期望節點數大於當前節點池的節點數時,系統將觸發節點池擴容。推薦您通過增大期望節點數的方式擴容節點池。在出現彈出節點失敗的情況下,系統也會自動進行重試,直至節點池現有節點數滿足期望節點數。
彈出節點的配置將取決於節點池的配置,具體彈出的執行個體規格和可用性區域與節點池擴縮容策略相關。關於擴縮容策略,請參見擴縮容策略。
節點池擴容包含兩個步驟。
彈出ECS執行個體:ACK節點池底層依賴ESS(Auto Scaling服務)彈出節點。調整期望節點數後,ACK會修改ESS伸縮組期望執行個體數執行擴容,節點池將顯示為擴容中。ESS成功彈出ECS執行個體後,節點池將顯示為已啟用。關於期望執行個體數的更多資訊,請參見期望執行個體數。
重要神龍裸金屬GPU執行個體(ecs規格類型系列為ebmgn7、ebmgn7e)不支援自動MIG清理,因此ACK添加該類型節點時會對已有的MIG設定進行重設。由於重設時間不定,可能會出現重設時間過長導致自動添加節點失敗。
排查失敗原因,請參見裸金屬執行個體節點添加失敗怎麼辦?。
關於ebmgn7e,請參見GPU計算型ECS Bare Metal Instance執行個體規格類型系列ebmgn7e。
將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管理主控台,將訂用帳戶的執行個體轉換為隨用隨付的節點後再嘗試釋放。關於如何將訂用帳戶執行個體轉隨用隨付,請參見訂用帳戶轉隨用隨付
操作步驟
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在目標節點池列表的操作列,單擊更多 > 擴縮容。
(可選)如果您之前沒有為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執行個體,補充到期望節點數數量。 | |
通過Auto Scaling控制台或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密鑰為非啟用狀態。 | 請登入Key Management Service控制台檢查密鑰狀態。 |
InvalidInstanceType.NotSupported | 錯誤資訊 | |
InsufficientBalance.CreditPay | 您的賬戶餘額不足。 | 請先儲值再進行操作。 |
ApiServer.InternalError | 錯誤資訊 | 檢查叢集API Server是否可用或者可訪問。詳細資料,請參見控制台訪問叢集異常問題排查 。 |
RecommendEmpty.InstanceTypeNotAuthorized | 您指定的執行個體規格需要授權後使用。 | 請向Elastic Compute Service提交工單申請授權。 |
Account.Arrearage | 您的賬戶餘額不足。 | 請先儲值再進行操作。 |
Err.QueryEndpoints | 訪問ACK叢集的API Server失敗。 | 檢查您的叢集API Server是否可用或者可訪問。詳細資料,請參見控制台訪問叢集異常問題排查 。 |
RecommendEmpty.DiskTypeNoStock | 指定可用性區域下磁碟庫存不足。 | 嘗試增加節點池的可用性區域(vSwitch),或者更換磁碟類型後重試。 |
InvalidParameter.KMSKeyId.KMSUnauthorized | 沒有授權無法存取金鑰管理服務KMS。 | 登入ECS管理主控台為ECS配置訪問KMS服務角色AliyunECSDiskEncryptDefaultRole授權。詳細資料,請參見通過RAM角色授予訪問KMS密鑰的許可權。 |
InvalidParameter.Conflict | 錯誤資訊 | 您可以嘗試更換執行個體規格或者磁碟類型後重試。 |
NotSupportSnapshotEncrypted.DiskCategory | 系統硬碟加密僅支援ESSD類型雲端硬碟。 | 請更換雲端硬碟類型。關於雲端硬碟類型與加密,請參見建立節點池。 |
ScalingActivityInProgress | 當前節點池正在伸縮中,請稍後再操作。 | 為了避免伸縮活動衝突,請勿直接通過ESS進行節點擴縮容。 |
Instance.StartInstanceFailed | ECS執行個體啟動失敗。 | 請稍後嘗試重新操作。排查具體原因,請向Elastic Compute Service提交工單。 |
OperationDenied.NoStock | 您選擇的ECS執行個體規格在指定的可用性區域內庫存不足。 | 您可以選擇其他執行個體規格後重試。 彈性強度會根據即時庫存量化您節點池的擴容成功機率。詳細資料,請參見查看節點池彈性強度。 |
RecommendEmpty.InstanceTypeNoStock | 您選擇的ECS執行個體規格在指定的可用性區域內庫存不足。 | 您可以選擇其他執行個體規格後重試。 彈性強度會根據即時庫存量化您節點池的擴容成功機率。詳細資料,請參見查看節點池彈性強度。 |
NodepoolScaleFailed.WaitForDesiredSizeTimeout | 擴容任務逾時。 | 按照如下操作查看擴容詳情。
|
ApiServer.TooManyRequests | 擴容任務被API Server限流。 | 擴容任務被API Server限流,請減少API Server請求,或稍後重試。 |
NodepoolScaleFailed.PartialSuccess | 由於庫存原因,部分節點擴容成功。 | 選擇其他執行個體規格後重試。 彈性強度會根據即時庫存量化您節點池的擴容成功機率。詳細資料,請參見查看節點池彈性強度。 |
相關文檔
如需將叢集中的節點移出叢集,請參見移除節點瞭解具體操作及注意事項。
節點池的營運操作,例如升級節點池、節點自動回復、修複節點池OS CVE漏洞等,請參見節點池營運。
節點池相關的最佳實務,例如基於部署集將節點分散部署在不同的物理伺服器上以實現高可用、基於搶佔式執行個體建立節點池等,請參見節點與節點池最佳實務。