容器服务kubernetes弹性伸缩高级用法

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

前言

近期,阿里云容器服务kubernetes发布了cluster-autoscaler的支持,开发者可以通过页面简单快捷的配置节点的弹性伸缩,支持普通实例、GPU实例以及竞价实例帮助开发者实现架构弹性和运营成本之间的博弈。阿里云容器服务kubernetes的cluster-autoscaler的能力还有很多会陆续通过控制台开放出来,对于cluster-autoscaler高级功能有强需求的开发者,也提供手动配置的方式进行实现,那么接下来我们一起来看一下cluster-autoscaler支持的高级功能。

高级功能解析

在解析高级特性之前,我们首先要了解的是弹性伸缩的主要原理,在阿里云容器服务kubernetes中,通过页面配置的伸缩规则会转换为ESS(弹性伸缩服务)中的伸缩组,主动下发组件cluster-autoscaler,并将组ID作为参数传递给cluster-autoscaler,然后cluster-autoscaler会根据相应的配置实现伸缩组的选择以及具体弹出的实例规格。下发的cluster-autoscaler在命名空间kube-system下面,模板内容如下:
image
可以看到在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即可。
image
伸缩组中的其他配置,建议拷贝一个已有的伸缩做来设置,降低配置的难度。最后将这个伸缩组的ID配置到yaml中即可
image

多实例规格的支持

多实例规格可以获得更好的伸缩成功率,而且结合竞价实例可以获得更优的运营成本节约,对于竞价实例不了解的开发者,可以先参考下这篇文档。多实例规格的支持方式非常简单,我们可以无需新建伸缩组,只需修改已有的配置即可。通过容器服务弹性伸缩的页面点击进入ESS的伸缩组配置。
image

点击左侧菜单的伸缩配置以及右侧配置的修改按钮,并添加希望加入的其他配置,此处需要特别注意的是容器的配置一定要保证规格一致,比如CPU和内存的大小必须保持一致

image
image

配置完成点击确认配置即可生效。

定时伸缩与报警伸缩

定时伸缩是一个非常常见的伸缩场景,但是定时伸缩与cluster-autoscaler的伸缩策略是不完全相同的,那么如何实现呢。此处我们只需要依赖ESS(弹性伸缩服务)即可,首先参考多可用的配置,先创建一个伸缩组。然后在这个伸缩组中设置弹出的伸缩规则。
image

在定时任务中设置任务配置,选择伸缩组与伸缩规则,并设置执行时间

image

此时,就设置完成了一个定时的伸缩,如果需要周期性设置,那么可以勾选下放的重复周期设置。同理,可以设置缩容的规则,以及缩容的时间。对于报警伸缩而言,和定时伸缩配置方法是一致的,他们都无需依赖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也会在近期开源并提交给社区,有需求或者问题可以提交issues到github(https://github.com/AliyunContainerService/autoscaler

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
15天前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
18天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
161 77
|
5天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
43 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
2天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
16天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
17天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
28天前
|
运维 Kubernetes Docker
深入理解容器化技术:Docker与Kubernetes的协同工作
深入理解容器化技术:Docker与Kubernetes的协同工作
50 1
|
1月前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
弹性计算 缓存 运维
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
【运维知识进阶篇】用阿里云部署kod可道云网盘(DNS解析+CDN缓存+Web应用防火墙+弹性伸缩)(三)
230 0
|
7月前
|
弹性计算 监控 开发工具
【阿里云弹性计算】实战教程:如何高效利用阿里云ECS弹性伸缩应对业务高峰
【5月更文挑战第20天】本文介绍了如何使用阿里云ECS弹性伸缩服务应对业务高峰。通过自动调整云资源规模,弹性伸缩在流量增加时扩展实例,流量减少时收缩实例,实现成本与性能的优化。步骤包括开通服务、创建伸缩组、设定规则和监控指标。文中还提供了一个Python脚本示例,并强调了优化策略,如应用无状态设计、考虑冷却时间和结合云监控。通过实践和调整,企业可以有效应对业务波动。
168 5

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版