利用阿里云容器服務(wù)實(shí)現(xiàn)自定義節(jié)點(diǎn)伸縮

簡(jiǎn)介

阿里云容器服務(wù)很早就提供了基于集群CPU/內(nèi)存的平均使用量觸發(fā)節(jié)點(diǎn)自動(dòng)伸縮功能,幫助許多客戶自如應(yīng)對(duì)業(yè)務(wù)壓力的彈性變化。其原理是利用阿里云的云監(jiān)控能力,在資源使用(cpu和memory)達(dá)到閾值時(shí),觸發(fā)節(jié)點(diǎn)伸縮。

同時(shí)還有一些企業(yè)級(jí)用戶希望根據(jù)自身的監(jiān)控?cái)?shù)據(jù)和邏輯判斷是否進(jìn)行擴(kuò)容和縮容操作,甚至可以按照固定時(shí)間進(jìn)行節(jié)點(diǎn)擴(kuò)容和縮容,針對(duì)這種場(chǎng)景,就需要調(diào)用的是擴(kuò)容或者縮容觸發(fā)器。

容器服務(wù)目前提供創(chuàng)建節(jié)點(diǎn)觸發(fā)器的功能,調(diào)用節(jié)點(diǎn)觸發(fā)器,并可以利用openAPI查看擴(kuò)容出來(lái)的ECS節(jié)點(diǎn)方便管理和自動(dòng)化的需求. 本文將向您介紹完成這一能力的步驟。

創(chuàng)建節(jié)點(diǎn)伸縮觸發(fā)器trigger_url

登錄容器服務(wù)管理控制臺(tái)。

單擊左側(cè)導(dǎo)航欄中的集群。

集群列表頁(yè)面,選擇要設(shè)置的集群,點(diǎn)擊管理

單擊左側(cè)導(dǎo)航欄中的節(jié)點(diǎn)伸縮,單擊請(qǐng)新建自動(dòng)伸縮規(guī)則。

進(jìn)入配置節(jié)點(diǎn)伸縮規(guī)則,勾選掉根據(jù)監(jiān)控指標(biāo)自動(dòng)伸縮,并單擊下一步。

配置約束規(guī)則請(qǐng)注意:

擴(kuò)容步長(zhǎng)的可選范圍是 1~5,縮容步長(zhǎng)目前默認(rèn)是 1,不支持配置。

設(shè)置集群最小節(jié)點(diǎn)數(shù)集群最大節(jié)點(diǎn)數(shù)。縮容時(shí),如果節(jié)點(diǎn)數(shù) ≤集群最小節(jié)點(diǎn)數(shù),不會(huì)進(jìn)行縮容操作;擴(kuò)容時(shí),如果節(jié)點(diǎn)數(shù) ≥集群最大節(jié)點(diǎn)數(shù),不會(huì)進(jìn)行擴(kuò)容操作。

配置實(shí)例規(guī)格, 并單擊確認(rèn)配置。

有關(guān)實(shí)例規(guī)格配置的信息,參見創(chuàng)建集群

使用節(jié)點(diǎn)伸縮觸發(fā)器

可以在節(jié)點(diǎn)伸縮的頁(yè)面,查看觸發(fā)器的URL

在調(diào)用節(jié)點(diǎn)伸縮觸發(fā)器時(shí)候,需要在觸發(fā)器URL中添加一下參數(shù):

參數(shù)名稱必填語(yǔ)義可選值

type是伸縮類型縮容:scale_in

擴(kuò)容:scale_out

step是伸縮配置正整數(shù),1-100,只有擴(kuò)容時(shí)使用

舉例來(lái)說(shuō),當(dāng)用戶需要彈性擴(kuò)展1個(gè)節(jié)點(diǎn)時(shí),觸發(fā)器的URL為

https://cs.console.aliyun.com/hook/trigger?triggerUrl==&secret=&type=scale_out&step=1

當(dāng)用戶需要彈性收縮時(shí),觸發(fā)器的URL為

https://cs.console.aliyun.com/hook/trigger?triggerUrl==&secret=&type=scale_in

注:目前彈性收縮只支持單個(gè)節(jié)點(diǎn)收縮

調(diào)用彈性伸縮時(shí),可以很簡(jiǎn)單的利用curl命令觸發(fā)

curl "https://cs.console.aliyun.com/hook/trigger?triggerUrl==&secret=&type=scale_in"

利用OpenAPI查詢彈性擴(kuò)展出的ECS節(jié)點(diǎn)信息

1. 先需要安裝sdk的核心庫(kù)

sudo pip install aliyun-python-sdk-coresudo pip install aliyun-python-sdk-cs==2.2.0

2. 利用python代碼查詢并且展示彈性擴(kuò)展出的節(jié)點(diǎn)

示例代碼如下:

from aliyunsdkcore.clientimport AcsClientfrom aliyunsdkcs.request.v20151215import DescribeClusterScaledNodeRequestimport jsonreq = DescribeClusterScaledNodeRequest.DescribeClusterScaledNodeRequest()client = AcsClient(ak='', secret='', region_id='')req.set_ClusterId('<集群ID>')status, headers,body= client.get_response(req)ifstatus ==200:? ? hosts = json.loads(body)forhostinhosts:? ? ? ? print("Scaledout Instance's ECS ID: {}, IP: {}, OSVersion: {} \n".format(host["InstanceId"], host["IP"], host["OperatingSystem"]))

代碼說(shuō)明:

通過(guò)Access Key管理獲取Your-Access-Key-Id和Your-Access-Key-Secret

Region-Id是地域?qū)?yīng)的Id,比如華東2是cn-shanghai, 可以通過(guò)API查詢

集群ID是容器集群的ID,可以通過(guò)集群管理頁(yè)面查看

可以從運(yùn)行結(jié)果中查詢到ECS的ID,私有IP以及操作系統(tǒng)類型

樣例輸出:

Scaledout Instance's ECS ID:i-2zec33gu8do3wrlscdi5, IP:10.136.125.22, OSVersion: Ubuntu14.04.5LTSScaledout Instance's ECS ID:i-2ze2qqe4tpakz4xidaw2, IP:10.136.125.25, OSVersion: Ubuntu14.04.5LTS

總結(jié)

通過(guò)上述內(nèi)容,您可以了解了如何創(chuàng)建節(jié)點(diǎn)伸縮觸發(fā)器,利用阿里云提供的節(jié)點(diǎn)觸發(fā)器,按時(shí)按需的自動(dòng)化的觸發(fā)集群擴(kuò)容,并且查詢擴(kuò)容節(jié)點(diǎn)信息。

原文鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容