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