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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器服务目前提供创建节点触发器的功能,调用节点触发器,并可以利用openAPI查看扩容出来的ECS节点方便管理和自动化的需求. 本文将向您介绍完成这一能力的步骤。

简介

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

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

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

创建节点伸缩触发器trigger_url

  1. 登录 容器服务管理控制台
  2. 单击左侧导航栏中的 集群
  3. 集群列表 页面,选择要设置的集群,点击 管理
    管理
  4. 单击左侧导航栏中的 节点伸缩,单击 请新建自动伸缩规则

节点伸缩

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

配置约束规则请注意:

  • 扩容步长 的可选范围是 1~5, 缩容步长 目前默认是 1,不支持配置。
  • 设置 集群最小节点数集群最大节点数。缩容时,如果节点数 ≤ 集群最小节点数,不会进行缩容操作;扩容时,如果节点数 ≥ 集群最大节点数,不会进行扩容操作。
  1. 配置实例规格, 并单击 确认配置
    有关实例规格配置的信息,参见 创建集群

使用节点伸缩触发器

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

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

参数名称 必填 语义 可选值
type 伸缩类型 缩容:scale_in
扩容:scale_out
step 伸缩配置 正整数,1-100,只有扩容时使用

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

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

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

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

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

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

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

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

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

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

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

示例代码如下:

from aliyunsdkcore.client import AcsClient
from aliyunsdkcs.request.v20151215 import DescribeClusterScaledNodeRequest
import json

req = DescribeClusterScaledNodeRequest.DescribeClusterScaledNodeRequest()
client = AcsClient(ak='<Your-Access-Key-Id>', secret='<Your-Access-Key-Secret>', region_id='<Region-Id>')
req.set_ClusterId('<集群ID>')

status, headers, body = client.get_response(req)
if status == 200:
    hosts = json.loads(body)
    for host in hosts:
        print("Scaledout Instance's ECS ID: {}, IP: {}, OSVersion: {} \n".format(host["InstanceId"], host["IP"], host["OperatingSystem"]))

代码说明:

通过Access Key管理获取Your-Access-Key-IdYour-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: Ubuntu 14.04.5 LTS

Scaledout Instance's ECS ID: i-2ze2qqe4tpakz4xidaw2, IP: 10.136.125.25, OSVersion: Ubuntu 14.04.5 LTS

总结

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

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
5天前
|
监控 网络协议 安全
阿里云DNS常见问题之阿里云DNS的自定义线路用途不知道如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
5天前
|
域名解析 网络协议 Serverless
阿里云DNS常见问题之阿里云DNS不再支持自定义NS名称功能如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
5天前
|
存储 算法 C语言
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
【C++ 迭代器实现 终篇】深入理解C++自定义容器和迭代器的实现与应用
72 0
|
5天前
|
运维 JavaScript Java
Serverless 应用引擎产品使用之在阿里云函数计算中想为两个不同的服务分别开通自定义域名如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
35 1
|
23小时前
|
运维 Kubernetes Serverless
阿里云容器服务
小陈在大刘的指导下学习Kubernetes,发现搭建和维护Kubernetes集群有一定难度。大刘建议小陈考虑使用阿里云的容器服务ACK,它基于Kubernetes,但进行了云原生优化,简化了集群管理和运维工作。ACK有三种形态:专有版、托管版和Serverless版。小陈认为ACK Serverless更适合,因为它无需运维,开箱即用,适合专注于业务开发。ACK Serverless基于弹性容器实例ECI,提供无服务器的容器运行环境,支持Kubernetes兼容,降低了使用门槛。
|
5天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
5天前
|
Java Linux 数据安全/隐私保护
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
Docker自定义JDK镜像并拉取至阿里云镜像仓库全攻略
|
5天前
|
存储 弹性计算 运维
Docker数据集与自定义镜像:构建高效容器的关键要素
Docker数据集与自定义镜像:构建高效容器的关键要素
|
5天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里云函数计算中,容器运行过程中的最大内存使用量获取如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
43 2
|
5天前
|
运维 IDE Serverless
Serverless 应用引擎产品使用之阿里函数计算中,阿里云容器镜像服务(Container Registry)中创建自定义镜像,然后将其部署到FC上如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
31 0

相关产品

  • 容器计算服务