CCE的自動伸縮能力是通過節點自動伸縮組件autoscaler實現的,可以按需彈出節點實例,支持多可用區、多實例規格、多種伸縮模式,滿足不同的節點伸縮場景。
使用節點伸縮功能前,需要安裝autoscaler插件,插件版本要求1.13.8及以上。
節點伸縮策略中不能直接設置縮容策略,你可以在安裝autoscaler時進行設置。
節點縮容僅支持資源分配率縮容機制,當集群下CPU和內存分配率低于您設置的門限(在安裝/編輯autoscaler插件時設置)時將對節點池下節點啟動縮容(該功能可以關閉)。
步驟 1 在CCE控制臺中,單擊左側導航欄的“彈性伸縮”,在“節點伸縮”頁簽下,單擊“創建節點伸縮策略”按鈕。
步驟 2 進入創建節點伸縮策略頁面,在“插件檢測”步驟中:
- 若插件名稱后方顯示
,請單擊插件后方的“現在安裝”按鈕,根據業務需求配置插件參數后單擊“立即安裝”,等待插件安裝完成。 - 若插件名稱后方顯示
,則說明插件已安裝成功。
步驟 3 確認插件已安裝成功后,單擊“下一步:策略配置”。
說明:如果插件已提前安裝成功,單擊“創建節點伸縮策略”按鈕后,在“插件檢測”步驟中經過短暫檢測后將直接進入“策略配置”步驟。
步驟 4 在打開的“創建節點伸縮策略”頁面中,參照下表設置策略參數。
表-節點伸縮策略參數配置
參數 | 參數說明 |
策略名稱 | 新建策略的名稱,請自定義。 |
關聯節點池 | 請單擊“添加節點池”后選擇要操作的節點池。您可以關聯多個節點池,以使用相同的伸縮策略。 |
執行規則 | 單擊“添加規則”,在彈出的添加規則窗口中設置如下參數: 規則名稱:請輸入規則名稱,可自定義。 規則類型:可選擇“指標觸發”或“周期觸發”,兩種類型區別如下:
? 觸發條件:請選擇“CPU分配率”或“內存分配率”,輸入百分比的值。該百分比應大于autoscaler插件中配置的縮容百分比。 說明: 分配率 = 節點池容器組(Pod)資源申請量 / 節點池Pod可用資源量 (Node Allocatable) 。 ? 執行動作:與上述“觸發條件”相對應,達到觸發條件值后所要執行的動作。
? 觸發時間:可選擇每天、每周、每月或每年的具體時間點。 ? 執行動作:與上述“觸發時間”相對應,達到觸發時間值后所要執行的動作。 您可以單擊“添加規則”,設置多條節點伸縮策略。您最多可以添加1條CPU使用率指標規則、1條內存使用率指標規則,且規則總數小于等于10條。 |
步驟 5 設置完成后,單擊“創建”,在“完成”步驟中若顯示“創建節點伸縮策略***任務提交成功”,可單擊“返回節點策略”。
步驟 6 在“節點伸縮”頁簽下,可以看到剛創建的節點伸縮策略。
節點伸縮策略Yaml樣例如下:
apiVersion: autoscaling.cce.io/v1alpha1
kind: HorizontalNodeAutoscaler
metadata:
creationTimestamp: "2020-02-13T12:47:49Z"
generation: 1
name: xxxx
namespace: kube-system
resourceVersion: "11433270"
selfLink: /apis/autoscaling.cce.io/v1alpha1/namespaces/kube-system/horizontalnodeautoscalers/xxxx
uid: c2bd1e1d-60aa-47b5-938c-6bf3fadbe91f
spec:
disable: false
rules:
- action:
type: ScaleUp
unit: Node
value: 1
cronTrigger:
schedule: 47 20 * * *
disable: false
ruleName: cronrule
type: Cron
- action:
type: ScaleUp
unit: Node
value: 2
disable: false
metricTrigger:
metricName: Cpu
metricOperation: '>'
metricValue: "40"
unit: Percent
ruleName: metricrule
type: Metric
targetNodepoolIds:
- 7d48eca7-3419-11ea-bc29-0255ac1001a8
表-關鍵參數說明
參數 | 參數類型 | 描述 |
spec.disable | Bool | 伸縮策略開關,會對策略中的所有規則生效 |
spec.rules | Array | 伸縮策略中的所有規則 |
spec.rules[x].ruleName | String | 規則名稱 |
spec.rules[x].type | String | 規則類型,當前支持“Cron”和“Metric”兩種類型 |
spec.rules[x].disable | Bool | 規則開關,當前僅支持“false” |
spec.rules[x].action.type | String | 規則操作類型,當前僅支持“ScaleUp” |
spec.rules[x].action.unit | String | 規則操作單位,當前僅支持“Node” |
spec.rules[x].action.value | Integer | 規則操作數值 |
spec.rules[x].cronTrigger | / | 可選,僅在周期規則中有效 |
spec.rules[x].cronTrigger.schedule | String | 周期規則的cron表達式 |
spec.rules[x].metricTrigger | / | 可選,僅在指標規則中有效 |
spec.rules[x].metricTrigger.metricName | String | 指標規則對應的指標,當前支持“Cpu”和“Memory”兩種類型 |
spec.rules[x].metricTrigger.metricOperation | String | 指標規則的比較符,當前僅支持“>” |
spec.rules[x].metricTrigger.metricValue | String | 指標規則的閾值,支持1-100之間的所有整數,需以字符串表示 |
spec.rules[x].metricTrigger.Unit | String | 指標規則閾值的單位,當前僅支持“%” |
spec.targetNodepoolIds | Array | 伸縮策略關聯的所有節點池 |
spec.targetNodepoolIds[x] | String | 伸縮策略關聯節點池的uid |