容器服务 Cluster Autoscaler 说明

Cluster Autoscaler(简称 CA)组件基于模拟调度算法为集群提供节点自动扩缩容能力,支持在资源不足时扩容新节点,在资源闲置时缩容旧节点。

相关产品
容器服务 产品页,含版本规格、价格与购买入口。

一、组件介绍

注意:说明:

二、部署在集群内的 Kubernetes 对象

Kubernetes 对象名称 类型 资源量 Namespaces
cluster-autoscaler PodDisruptionBudget – kube-system
cluster-autoscaler ServiceAccount – kube-system
cluster-autoscaler Secret – kube-system
cluster-autoscaler ClusterRole – –
cluster-autoscaler ClusterRoleBinding – –
cluster-autoscaler Role – kube-system
cluster-autoscaler RoleBinding – kube-system
cluster-autoscaler Service – kube-system
cluster-autoscaler Deployment 0.5C1G(针对新建) kube-system

三、使用场景

·当集群中出现因资源不足而无法调度的实例(Pod)时,自动触发节点扩容,通过模拟调度选择合适的节点类型,为你减少人力成本。

·当满足节点空闲缩容条件时,自动触发节点缩容,为你节约资源成本。

四、限制条件

K8s 集群版本 >= 1.16

五、扩容原理

1. 当集群中资源不足时(集群的计算/存储/网络等资源满足不了 Pod 的 Request /亲和性规则),CA 会监测到因无法调度而 Pending 的 Pod。

2. CA 根据每个节点池的节点模板进行调度判断,挑选合适的节点模板。

3. 若有多个模板合适,即有多个可扩的节点池备选,CA 会调用 expanders 从多个模板挑选最优模板并对对应节点池进行扩容。


六、缩容原理

1. CA(Cluster Autoscaler)监测到分配率(即 Request 值,取 CPU 分配率和 MEM 分配率的最大值)低于设定的节点。计算分配率时,可以设置 Daemonset 类型不计入 Pod 占用资源。

2. CA 判断集群的状态是否可以触发缩容,需要满足如下要求:

·节点空闲时长要求(默认10分钟)。

·集群扩容缓冲时间要求(默认10分钟)。

3. CA 判断该节点是否符合缩容条件。你可以按需设置以下不缩容条件(满足条件的节点不会被 CA 缩容):

·含有本地存储的节点。

·含有 Kube-system namespace 下非 DaemonSet 管理的 Pod 的节点。

4. CA 驱逐节点上的 Pod 后释放/关机节点。

·完全空闲节点可并发缩容(可设置最大并发缩容数)。

·非完全空闲节点逐个缩容。

注意:包年包月类型的普通节点和原生节点不支持自动缩容。

七、参数说明

模块 功能项 参数值介绍
扩容 扩容算法 随机(默认):如果可扩容节点池有多个,从中任意选择一个节点池进行扩容。 most-pods:如果可扩容节点池有多个,从中选择运行 Pod 数量最多的节点池进行扩容。 least-waste:如果可扩容节点池有多个,从中选择一个资源浪费最少的节点池进行扩容。 priority:如果可扩容节点池有多个,会按照你自定义的 ConfigMap(详情参考下方),选择优先级高的节点池进行扩容(该特性仅支持原生节点池,配置后普通节点池不参与扩容)。
缩容 最大并发缩容数 发起缩容时,同时支持缩容的节点数量。说明:只缩容符合完全空闲的空节点;如果存在 Pod, 每次缩容最多一个节点。
 缩容条件 阈值:Pod 占用资源/可分配资源百分比小于 x%时开始判断缩容条件。
  触发时延:节点连续空闲 x 分钟后被缩容。
  静默时间:集群扩容 x 分钟开始判断缩容条件。
 不缩容节点 含有本地存储 Pod 的节点(本地存储包括 hostPath 和 emptyDir)。 含有 kube-system namespace 下非 DaemonSet 管理的 Pod 的节点。

八、自定义 ConfigMap 使用 priority 扩容算法

注意:说明:

示例如下:

apiVersion: v1data: priorities: |- 100: – np-l5wmakan #np-l5wmakan(节点池id)优先级为100。 50: – np-9r9rh7kp #np-9r9rh7kp(节点池id)优先级为50。kind: ConfigMapmetadata: name: cluster-autoscaler-priority-expander #名称需固定为 cluster-autoscaler-priority-expander namespace: kube-system

创建 YAML 后可选择集群左侧导航中的配置管理,在 ConfigMap 页签,在操作栏单击更新配置或编辑 yaml 中设置优先级。

九、相关链接

·创建原生节点

·创建普通节点

赞 (0)
上一篇 4天前
下一篇 4天前