啟用節(jié)點(diǎn)即時(shí)彈性
如果您的集群規(guī)模較大(例如彈性節(jié)點(diǎn)池中節(jié)點(diǎn)數(shù)大于100,或彈性節(jié)點(diǎn)池?cái)?shù)大于20)、對(duì)資源交付速度有更高要求、期望靈活實(shí)現(xiàn)多實(shí)例規(guī)格和跨可用區(qū)自動(dòng)伸縮,那么節(jié)點(diǎn)自動(dòng)伸縮可能無法滿足您擴(kuò)縮容的需求,推薦您使用節(jié)點(diǎn)即時(shí)彈性功能。節(jié)點(diǎn)即時(shí)彈性降低了開發(fā)者的使用門檻并提高了彈性效率,同時(shí)降低了運(yùn)維人員維護(hù)成本。
閱讀前提示
為了讓您更好地使用節(jié)點(diǎn)即時(shí)彈性功能,建議您在閱讀本文檔前,已閱讀節(jié)點(diǎn)伸縮概述并了解以下內(nèi)容:
節(jié)點(diǎn)即時(shí)彈性的工作原理
節(jié)點(diǎn)即時(shí)彈性的功能優(yōu)勢(shì)
哪些業(yè)務(wù)場(chǎng)景下,建議您選擇節(jié)點(diǎn)即時(shí)彈性
使用節(jié)點(diǎn)即時(shí)彈性前需要了解的注意事項(xiàng)
前提條件
已創(chuàng)建1.24及以上的ACK托管集群、ACK專有集群。相關(guān)操作,請(qǐng)參見創(chuàng)建ACK托管集群、創(chuàng)建ACK專有集群、手動(dòng)升級(jí)集群。
如果您是ACK托管集群,請(qǐng)完成AliyunCSManagedAutoScalerRole角色授權(quán),為集群添加節(jié)點(diǎn)伸縮的授權(quán)策略。
如果您是ACK專有集群,請(qǐng)完成KubernetesWorkerRole角色授權(quán)和AliyunCSManagedAutoScalerRolePolicy系統(tǒng)策略授權(quán),為集群添加節(jié)點(diǎn)伸縮的授權(quán)策略。
已獲得節(jié)點(diǎn)即時(shí)彈性白名單權(quán)限。如需使用,請(qǐng)提交工單并描述您的業(yè)務(wù)場(chǎng)景進(jìn)行申請(qǐng)。
如果您的集群節(jié)點(diǎn)池已開啟自動(dòng)彈性伸縮且節(jié)點(diǎn)池的伸縮模式為非極速模式,節(jié)點(diǎn)即時(shí)彈性可兼容原彈性節(jié)點(diǎn)池的語義與行為,并支持所有類型的應(yīng)用無感開啟與使用。但針對(duì)伸縮模式為極速模式的節(jié)點(diǎn)池,節(jié)點(diǎn)即時(shí)彈性無法兼容。
步驟一:開啟節(jié)點(diǎn)即時(shí)彈性
使用節(jié)點(diǎn)即時(shí)彈性功能前,您需要在節(jié)點(diǎn)池頁面開啟并配置集群自動(dòng)彈性伸縮,使節(jié)點(diǎn)具備伸縮能力。配置時(shí),請(qǐng)選擇節(jié)點(diǎn)伸縮方案為即時(shí)彈性。
登錄容器服務(wù)管理控制臺(tái),在左側(cè)導(dǎo)航欄選擇集群。
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在節(jié)點(diǎn)池頁面,單擊節(jié)點(diǎn)伸縮后方的去配置。
首次使用集群自動(dòng)彈性伸縮功能時(shí),按照頁面提示,開通ESS服務(wù)并完成授權(quán)(如已開通并授權(quán),請(qǐng)?zhí)^)。
在節(jié)點(diǎn)伸縮配置頁面,選擇節(jié)點(diǎn)伸縮方案為即時(shí)彈性,配置伸縮配置項(xiàng),然后單擊確定。
實(shí)施彈性伸縮時(shí),彈性組件會(huì)基于調(diào)度情況自動(dòng)觸發(fā)擴(kuò)容。您只需配置縮容條件。
配置項(xiàng)
說明
縮容閾值
啟用節(jié)點(diǎn)即時(shí)彈性的節(jié)點(diǎn)池中,單個(gè)節(jié)點(diǎn)的請(qǐng)求資源(Request)與單個(gè)節(jié)點(diǎn)資源容量的比值。
僅當(dāng)該比值低于配置的閾值時(shí),即節(jié)點(diǎn)的CPU和內(nèi)存資源利用率均低于縮容閾值時(shí),節(jié)點(diǎn)才有可能被縮容。
GPU 縮容閾值
GPU實(shí)例的縮容閾值。
僅當(dāng)該比值低于配置的閾值時(shí),即節(jié)點(diǎn)的CPU、內(nèi)存和GPU資源利用率均低于GPU 縮容閾值時(shí),GPU節(jié)點(diǎn)才有可能被縮容。
縮容觸發(fā)時(shí)延
從檢測(cè)到有縮容需求(達(dá)到縮容閾值)到實(shí)際執(zhí)行縮容操作(縮容Pod數(shù)量)之間的時(shí)間間隔。單位:分鐘。默認(rèn)值:10分鐘。
重要僅當(dāng)滿足縮容閾值配置,且達(dá)到縮容觸發(fā)時(shí)延后,彈性組件才有可能執(zhí)行節(jié)點(diǎn)縮容。
配置項(xiàng)
說明
Pod 終止超時(shí)時(shí)間
縮容節(jié)點(diǎn)時(shí)等待節(jié)點(diǎn)上Pod終止的最長時(shí)間。單位:秒。
Pod 最小副本數(shù)
節(jié)點(diǎn)縮容前每個(gè)ReplicaSet中允許的Pod最小數(shù)量。
開啟 Daemonset Pod 排水
開啟DaemonSet Pod排水后,節(jié)點(diǎn)縮容時(shí)會(huì)驅(qū)逐節(jié)點(diǎn)上的DaemonSet Pod。
跳過有 kube-system 命名空間下 Pod 所在節(jié)點(diǎn)
開啟后,當(dāng)集群執(zhí)行節(jié)點(diǎn)自動(dòng)縮容操作時(shí),可以忽略運(yùn)行在kube-system命名空間下的Pod所在的節(jié)點(diǎn),確保這些節(jié)點(diǎn)不受縮容的影響。
說明此功能對(duì)DaemonSet Pod和Mirror Pod不生效。
步驟二:配置開啟彈性的節(jié)點(diǎn)池
節(jié)點(diǎn)即時(shí)彈性的擴(kuò)縮對(duì)象為開啟自動(dòng)伸縮節(jié)點(diǎn)池的節(jié)點(diǎn)。因此,配置節(jié)點(diǎn)即時(shí)彈性后,您還需要配置至少一個(gè)開啟了彈性的節(jié)點(diǎn)池。
新建一個(gè)開啟自動(dòng)彈性伸縮的節(jié)點(diǎn)池。具體操作,請(qǐng)參見創(chuàng)建節(jié)點(diǎn)池。
配置已有節(jié)點(diǎn)池,為其開啟自動(dòng)彈性伸縮功能。具體操作,請(qǐng)參見編輯節(jié)點(diǎn)池。
說明配置已有節(jié)點(diǎn)池時(shí),請(qǐng)確保您的節(jié)點(diǎn)池未配置期望節(jié)點(diǎn)數(shù)。您可以在節(jié)點(diǎn)池列表進(jìn)入節(jié)點(diǎn)池詳情頁面,在基本頁簽查看期望節(jié)點(diǎn)數(shù)是否為空,也可以調(diào)用DescribeClusterNodePoolDetail - 查詢節(jié)點(diǎn)池配置接口,查詢
desired_size
是否為nil
。
推薦您擴(kuò)大節(jié)點(diǎn)池實(shí)例規(guī)格的可選范圍,例如為節(jié)點(diǎn)池配置多個(gè)可選的實(shí)例規(guī)格、使用實(shí)例規(guī)格泛化配置,或?yàn)楣?jié)點(diǎn)池配置多個(gè)可用區(qū),進(jìn)一步保障實(shí)例規(guī)格庫存充足,節(jié)點(diǎn)伸縮活動(dòng)執(zhí)行成功。
(可選)步驟三:結(jié)果驗(yàn)證
完成如上操作后,您便可以使用節(jié)點(diǎn)即時(shí)彈性功能。此時(shí),節(jié)點(diǎn)池將顯示已開啟自動(dòng)伸縮且集群已自動(dòng)安裝節(jié)點(diǎn)即時(shí)彈性組件。
節(jié)點(diǎn)池已開啟自動(dòng)伸縮
在節(jié)點(diǎn)池頁面,節(jié)點(diǎn)池列表將顯示已開啟自動(dòng)伸縮的節(jié)點(diǎn)池。
已安裝節(jié)點(diǎn)即時(shí)彈性組件
在集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇 。
在組件管理頁面,定位ACK GOATScaler組件,顯示已安裝。
節(jié)點(diǎn)即時(shí)彈性關(guān)鍵事件介紹
節(jié)點(diǎn)即時(shí)彈性涉及到以下關(guān)鍵事件(Event),以便查看節(jié)點(diǎn)即時(shí)彈性發(fā)生時(shí)內(nèi)部的狀態(tài)信息。
事件名稱 | 事件對(duì)象 | 說明 |
ProvisionNode | pod | 節(jié)點(diǎn)即時(shí)彈性觸發(fā)節(jié)點(diǎn)擴(kuò)容成功。 |
ProvisionNodeFailed | pod | 節(jié)點(diǎn)即時(shí)彈性觸發(fā)節(jié)點(diǎn)擴(kuò)容失敗。 |
ResetPod | pod | 節(jié)點(diǎn)即時(shí)彈性將滿足條件的、已觸發(fā)過擴(kuò)容的、但仍不可調(diào)度的Pod重新納入可觸發(fā)擴(kuò)容的范圍。 |
InstanceInventoryStatusChanged | ACKNodePool | 某個(gè)可用區(qū)的某個(gè)實(shí)例規(guī)格供給狀態(tài)發(fā)生變化。格式為 詳細(xì)信息,請(qǐng)參見查看節(jié)點(diǎn)即時(shí)彈性健康度。 |
節(jié)點(diǎn)即時(shí)彈性標(biāo)識(shí)介紹
節(jié)點(diǎn)即時(shí)彈性維護(hù)了以下標(biāo)識(shí)。請(qǐng)勿手動(dòng)操作,以免引發(fā)異常。
Node Label
node label | 說明 |
goatscaler.io/managed:true | 用于標(biāo)識(shí)被節(jié)點(diǎn)即時(shí)彈性管理的節(jié)點(diǎn)。針對(duì)帶此標(biāo)簽的節(jié)點(diǎn),節(jié)點(diǎn)即時(shí)彈性會(huì)周期性檢查是否滿足縮容條件。 |
k8s.aliyun.com: true | 用于標(biāo)識(shí)被節(jié)點(diǎn)即時(shí)彈性管理的節(jié)點(diǎn)的標(biāo)識(shí),針對(duì)帶此標(biāo)簽的節(jié)點(diǎn),節(jié)點(diǎn)即時(shí)彈性會(huì)周期性檢查是否滿足縮容條件。 |
goatscaler.io/provision-task-id:{task-id} | 用于標(biāo)識(shí)節(jié)點(diǎn)即時(shí)彈性擴(kuò)容節(jié)點(diǎn)的任務(wù)Task ID,以便您追蹤創(chuàng)建節(jié)點(diǎn)的觸發(fā)源。 |
Node Taint
Node Taint | 說明 |
goatscaler.io/node-terminating | 打上此污點(diǎn)的節(jié)點(diǎn)會(huì)被節(jié)點(diǎn)即時(shí)彈性執(zhí)行縮容。 |
Pod Annotation
Pod Annotation | 說明 |
goatscaler.io/provision-task-id | 用于標(biāo)識(shí)節(jié)點(diǎn)即時(shí)彈性為此Pod擴(kuò)容后節(jié)點(diǎn)的Task ID。針對(duì)有此Annotation的Pod,節(jié)點(diǎn)即時(shí)彈性會(huì)等待節(jié)點(diǎn)啟動(dòng),暫不重復(fù)擴(kuò)容。 |
goatscaler.io/reschedule-deadline | 用于標(biāo)識(shí)節(jié)點(diǎn)即時(shí)彈性等待Pod未被調(diào)度到節(jié)點(diǎn)上的時(shí)間。超出此時(shí)間后,若Pod仍然不可調(diào)度,節(jié)點(diǎn)即時(shí)彈性會(huì)將Pod重新納入可觸發(fā)擴(kuò)容的范圍。 |
相關(guān)操作
查看節(jié)點(diǎn)即時(shí)彈性健康度
節(jié)點(diǎn)即時(shí)彈性功能支持根據(jù)ECS實(shí)例的庫存情況來動(dòng)態(tài)選擇規(guī)格和可用區(qū)。如需感知并監(jiān)控實(shí)例規(guī)格庫存健康狀況,獲取節(jié)點(diǎn)池的實(shí)例配置優(yōu)化建議,從而進(jìn)一步保障節(jié)點(diǎn)伸縮活動(dòng)執(zhí)行成功,您可以查看節(jié)點(diǎn)池庫存健康度的ConfigMap,評(píng)估當(dāng)前節(jié)點(diǎn)池庫存是否健康,提前對(duì)實(shí)例規(guī)格配置進(jìn)行分析和調(diào)整。
詳細(xì)信息,請(qǐng)參見查看節(jié)點(diǎn)即時(shí)彈性健康度。
升級(jí)節(jié)點(diǎn)即時(shí)彈性組件
請(qǐng)及時(shí)升級(jí)節(jié)點(diǎn)即時(shí)彈性組件,以便享用最新的功能改進(jìn)和特性優(yōu)化。具體操作,請(qǐng)參見管理組件。