利用阿里云容器服务实现自定义节点伸缩

简介

阿里云容器服务很早就提供了基于集群CPU/内存的平均使用量触发节点自动伸缩功能,帮助许多客户自如应对业务压力的弹性变化。其原理是利用阿里云的云监控能力,在资源使用(cpu和memory)达到阈值时,触发节点伸缩。

同时还有一些企业级用户希望根据自身的监控数据和逻辑判断是否进行扩容和缩容操作,甚至可以按照固定时间进行节点扩容和缩容,针对这种场景,就需要调用的是扩容或者缩容触发器。

容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的需求. 本文将向您介绍完成这一能力的步骤。

创建节点伸缩触发器trigger_url

登录容器服务管理控制台。

单击左侧导航栏中的集群

集群列表页面,选择要设置的集群,点击管理

利用阿里云容器服务实现自定义节点伸缩_第1张图片

单击左侧导航栏中的节点伸缩,单击请新建自动伸缩规则

利用阿里云容器服务实现自定义节点伸缩_第2张图片

进入配置节点伸缩规则,勾选掉根据监控指标自动伸缩,并单击下一步

利用阿里云容器服务实现自定义节点伸缩_第3张图片

配置约束规则请注意:

扩容步长的可选范围是 1~5,缩容步长目前默认是 1,不支持配置。

设置集群最小节点数集群最大节点数。缩容时,如果节点数 ≤集群最小节点数,不会进行缩容操作;扩容时,如果节点数 ≥集群最大节点数,不会进行扩容操作。

配置实例规格, 并单击确认配置

有关实例规格配置的信息,参见创建集群。

使用节点伸缩触发器

可以在节点伸缩的页面,查看触发器的URL

利用阿里云容器服务实现自定义节点伸缩_第4张图片

在调用节点伸缩触发器时候,需要在触发器URL中添加一下参数:

参数名称必填语义可选值

type是伸缩类型缩容:scale_in

扩容:scale_out

step是伸缩配置正整数,1-100,只有扩容时使用

举例来说,当用户需要弹性扩展1个节点时,触发器的URL为

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

当用户需要弹性收缩时,触发器的URL为

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

注:目前弹性收缩只支持单个节点收缩

调用弹性伸缩时,可以很简单的利用curl命令触发

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

利用OpenAPI查询弹性扩展出的ECS节点信息

1. 先需要安装sdk的核心库

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

2. 利用python代码查询并且展示弹性扩展出的节点

示例代码如下:

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"]))

代码说明:

通过Access Key管理获取Your-Access-Key-Id和Your-Access-Key-Secret

Region-Id是地域对应的Id,比如华东2是cn-shanghai, 可以通过API查询

集群ID是容器集群的ID,可以通过集群管理页面查看

可以从运行结果中查询到ECS的ID,私有IP以及操作系统类型

样例输出:

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

总结

通过上述内容,您可以了解了如何创建节点伸缩触发器,利用阿里云提供的节点触发器,按时按需的自动化的触发集群扩容,并且查询扩容节点信息。

原文链接

你可能感兴趣的:(利用阿里云容器服务实现自定义节点伸缩)