容器服务kubernetes弹性伸缩高级用法
前言
近期,阿里云容器服務kubernetes發布了cluster-autoscaler的支持,開發者可以通過頁面簡單快捷的配置節點的彈性伸縮,支持普通實例、GPU實例以及競價實例幫助開發者實現架構彈性和運營成本之間的博弈。阿里云容器服務kubernetes的cluster-autoscaler的能力還有很多會陸續通過控制臺開放出來,對于cluster-autoscaler高級功能有強需求的開發者,也提供手動配置的方式進行實現,那么接下來我們一起來看一下cluster-autoscaler支持的高級功能。
高級功能解析
在解析高級特性之前,我們首先要了解的是彈性伸縮的主要原理,在阿里云容器服務kubernetes中,通過頁面配置的伸縮規則會轉換為ESS(彈性伸縮服務)中的伸縮組,主動下發組件cluster-autoscaler,并將組ID作為參數傳遞給cluster-autoscaler,然后cluster-autoscaler會根據相應的配置實現伸縮組的選擇以及具體彈出的實例規格。下發的cluster-autoscaler在命名空間kube-system下面,模板內容如下:
可以看到在cluster-autoscaler的啟動參數中包含了--node的參數,里面配置了伸縮組的ID,cluster-autoscaler就是通過這個組ID來識別伸縮組信息并實現伸縮的。在了解了這些原理后,我們來看下怎么使用阿里云容器服務kubernetes提供的高級特性。阿里云容器服務kubernetes的cluster-autoscaler支持如下高級特性:
| 單可用區、多可用區支持 | 支持 |
| 普通實例(CPU)、異構計算實例(GPU)、競價實例、神龍服務器 | 支持 |
| 多實例規格彈性伸縮配置 | 支持 |
| 定時伸縮、報警伸縮 | 支持 |
| 指定伸縮組調度 | 支持 |
| 自定義安裝腳本支持 | 支持 |
| ? | ? |
接下來我們針對上述的高級特性進行一一解析:
單可用區、多可用區支持
阿里云容器服務kubernetes集群支持單可用區與多可用區兩種形式,多可用區的kubernetes集群可以具備更好的集群魯棒性,不會因為單一可用區機房的宕機造成整個集群的不可用。那么多可用區的cluster-autoscaler有什么好處呢?多可用區的cluster-autoscaler可以提高實例彈性伸縮的成功率。因為云資源是動態調整的,每個地域每個可用區的庫存都會根據不同的時間不同的資源狀態進行調整,同樣規格的實例可能在可用區A中可以生產,但是在可用區B中無法生產。如果配置多個可用區,那么就擁有了在多個可用區中彈出實例的可能,提高了彈性伸縮的成功率。
目前在控制臺上只支持單可用區的伸縮組配置,那么怎么創建一個具有多可用區的彈性伸縮組并使用呢,從上文我們了解到cluster-autoscaler只需要識別伸縮組ID即可,那么只需要創建一個新的伸縮組,并配置給cluster-autoscaler即可。
伸縮組中的其他配置,建議拷貝一個已有的伸縮做來設置,降低配置的難度。最后將這個伸縮組的ID配置到yaml中即可
多實例規格的支持
多實例規格可以獲得更好的伸縮成功率,而且結合競價實例可以獲得更優的運營成本節約,對于競價實例不了解的開發者,可以先參考下這篇文檔。多實例規格的支持方式非常簡單,我們可以無需新建伸縮組,只需修改已有的配置即可。通過容器服務彈性伸縮的頁面點擊進入ESS的伸縮組配置。
點擊左側菜單的伸縮配置以及右側配置的修改按鈕,并添加希望加入的其他配置,此處需要特別注意的是容器的配置一定要保證規格一致,比如CPU和內存的大小必須保持一致
配置完成點擊確認配置即可生效。
定時伸縮與報警伸縮
定時伸縮是一個非常常見的伸縮場景,但是定時伸縮與cluster-autoscaler的伸縮策略是不完全相同的,那么如何實現呢。此處我們只需要依賴ESS(彈性伸縮服務)即可,首先參考多可用的配置,先創建一個伸縮組。然后在這個伸縮組中設置彈出的伸縮規則。
在定時任務中設置任務配置,選擇伸縮組與伸縮規則,并設置執行時間
?
此時,就設置完成了一個定時的伸縮,如果需要周期性設置,那么可以勾選下放的重復周期設置。同理,可以設置縮容的規則,以及縮容的時間。對于報警伸縮而言,和定時伸縮配置方法是一致的,他們都無需依賴cluster-autoscaler來實現。
自定義安裝腳本
在講解如何定義安裝腳本之前,需要額外講解下一個ECS的機器是如何加入到集群中的,在伸縮配置的高級選項中有一個base64的自定義數據,我們通過base64的解碼工具進行解析,可以看到里面內容如下:
#!/bin/sh curl http://aliacs-k8s-cn-shenzhen.oss-cn-shenzhen.aliyuncs.com/public/pkg/run/attach/1.10.4/attach_node.sh | bash -s -- --openapi-token [secret_token] --ess true --labels workload_type=spot上述的腳本的作用就是將一個ECS的節點加入到集群中的,我們自定義的安裝腳本可以添加到上述腳本后面,然后通過base64工具進行加密,并貼回原來的自定義數據框內即可。
最后
在本文中,給大家講解了如何使用cluster-autoscaler的高級特性來支持不同維度和場景的彈性伸縮,cluster-autoscaler也會在近期開源并提交給社區
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的容器服务kubernetes弹性伸缩高级用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网站常见问题1分钟定位(三)| 如何使用
- 下一篇: Dubbo Mesh | 阿里巴巴中间件