阿里云云原生容器工程师ACP认证(十一)—容器服务ACK弹性伸缩

 

容器服务ACK弹性伸缩概述

弹性伸缩是ACK上被广泛采用的功能,典型的场景包含:

  • 在线业务弹性
  • 大规模计算训练
  • 深度学习GPU或共享GPU的训练与推理
  • 定时周期性负载变化等

弹性伸缩分为两个维度:

  • 调度层弹性:主要是负责修改负载的调度容量变化。
  • 资源层弹性:主要是集群的容量规划不能满足集群调度容量时,会通过扩充资源的方式进行调度容量的补充。

ACK弹性伸缩组件介绍 https://help.aliyun.com/document_detail/176660.html

在这里插入图片描述

容器服务ACK弹性伸缩-资源层节点弹性介绍

  • 阿里云Kubernetes集群的一个重要特性,是集群的节点可以动态的增加或减少。
  • 有了这个特性,集群才能在计算资源不足的情况下扩容新的节点。
  • 同时,也可以在资源利用率降低的时候,释放节点以节省费用。

资源层扩缩容可以分为:手动扩缩容、自动扩缩容。

在这里插入图片描述

容器服务ACK资源层弹性-节点自动伸缩机制

在ACK容器服务中,节点自动伸缩的工作原理,与传统意义上基于使用率阈值的模型有所差别。这个也是很多开发者在从传统的IDC或者其他编排系统,例如:Swarm等迁移到Kubernetes后最难理解的地方。

  • 传统的弹性伸缩模型是基于使用率的 例如:一个集群中有3个节点,当集群中的某个节点CPU、内存使用率超过特定的阈值时,此时弹出新的节点。

Kubernetes节点伸缩是怎么解决这个问题的呢?

Kubernetes是通过调度与资源解耦的两层弹性模型来解决的。 简单的理解,可以基于资源的使用率来触发应用副本的变化,也就是调度单元的变化。 而当集群的调度水位达到100%的时候会触发资源层的弹性扩容,当资源弹出后,无法调度的单元会自动调度到新弹出的节点上,从而降低整个应用的负载状况。

容器服务ACK资源层弹性-节点自动伸缩实现原理

阿里云容器服务ACK的自动伸缩能力,是通过节点自动伸缩组件(cluster-autoscaler)实现的。可以按需弹出普通实例、GPU实例、竞价付费实例,支持多可用区、多实例规格、多种伸缩模式,满足不同的节点伸缩场景。

  • 伸缩配置:通过控制台配置伸缩节点的规格属性。
  • 自动伸缩组件监听:自动伸缩组件cluster-autoscale,它以 Pod的形式运行在K8S集群中,监听Pod状态,在Pod因为节点资源不足而不能被调度的状态时,启动自动伸缩规则。
  • 伸缩规则启动:根据“1伸缩配置”的内容,启动ESS弹性伸缩服务。
  • ESS弹性伸缩服务创建实例:通过ESS弹性伸缩服务按照配置创建实例后,继续进行集群监听。

容器服务ACK节点自动伸缩分为三个步骤:

执行自动伸缩

1.登录容器服务管理控制台。 2.在控制台左侧导航栏中,单击集群。 3.在集群列表页面,执行以下操作进入自动弹性伸缩配置页面。

路径一:在目标集群右侧的操作列下,选择更多>自动伸缩。

路径二:① 选择目标集群然后单击操作列的详情。② 在集群应用配置左侧导航栏,选择节点管理、节点池。③在节点池页面右上方,单击自动弹性伸缩配置。

弹性伸缩服务ESS授权

  1. 开通ESS服务。 单击弹出对话框中的第一个链接,进入弹性伸缩服务ESS页面。

在这里插入图片描述

单击开通ESS服务,进入云产品开通页。 选中我已阅读并同意复选框,单击立即开通。 开通成功后,在开通完成页签,单击管理控制台,进入弹性伸缩服务ESS页面。 单击前往授权,进入云资源访问授权页面,配置对云资源的访问权限。 单击同意授权。 页面自动跳转至弹性伸缩控制台,说明授权成功。关闭页面,继续配置授权角色。

  1. 授权角色。 单击弹出对话框中的第二个链接,进入RAM角色管理详情页面。

在这里插入图片描述

在云资源访问授权页面同意授权

配置自动伸缩

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

容器服务ACK调度层弹性

调度层弹性组件

调度层弹性组件是指所有的弹性动作都是和Pod相关的,并不关心具体的资源情况。

  • 容器水平伸缩(HPA)
  • 容器垂直伸缩(VPA)
  • 容器定时伸缩(CronHPA)

HPA:Pod水平伸缩的组件

  • 除了社区支持的 Resource Metrics 和 CustomMetrics, 阿里云容器服务 Kubernetes 还提供了external-metrics-adapter
  • 支持云服务的指标作为弹性伸缩的判断条件
  • 目前已经支持,例如: Ingress 的 QPS、RT, RMS 中应用的GC次数、慢SQL 次数等等多个产品不同维度的监控指标。

VPA:Pod的纵向伸缩的组件,主要面向有状态服务的扩容和升级场景。

CronHPA:定时伸缩组件,主要面向的是周期性负载,通过资源画像可以预测有规律的负载周期,并通过周期性伸缩,实现资源成本的节约。

在这里插入图片描述

通过容器服务ACK控制台创建HPA

  • 阿里云容器服务已经集成了HPA,您可以简便地通过容器服务控制台进行创建。您可以在创建应用 的时候创建HPA,也可以在已有应用的基础上开启HPA。

    1.登录容器服务管理控制台。 2.在控制台左侧导航栏中,单击集群。 3.在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。 4.在集群管理页左侧导航栏中,单击工作负载。 5.在无状态页面单击使用像创建 6.在应用基本信息页填写应用的名称,设置应用部署集群和命名空间,单击下一步。 7.在容器配置页进行容器设置,选择镜像,并设置所需的资源。然后单击下一步。 8.在高级设置页的访问设置区域,单击服务的创建,设置服务的相关信息 9.在高级设置页选中指标伸缩的开启,设置伸缩的条件和配置。

在这里插入图片描述

10.单击右下角的创建,一个支持HPA的Deployment就已经创建完毕。

验证结果 单击查看应用详情或者在工作负载>无状态中单击应用名称或操作列的详情,单击指标伸缩(HPA),您可在部署的详情中查看伸缩组信息。