使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
所有文档
menu

容器引擎 CCE

使用 cce-autoscaling-placeholder 实现秒级弹性伸缩

产品详情自助选购

组件介绍

使用 CCE 节点组并开启自动扩缩容后,当出现 Pod 由于资源不足导致调度失败时,集群会自动的进行节点扩容,整个流程通常需要若干分钟才能完成,当出现流量突发时,分钟级的扩容速度不能快速满足业务要求。本文介绍通过 K8S 的 PriorityClass 实现 Pod 占位,从而能在 CCE 上实现秒级伸缩,用以应对流量突发的场景。

实现原理

cce-autoscaling-placeholder 利用低优先级的 Pod 对资源进行提前占位,预留部分资源作为缓冲,当需要扩容 Pod 时,高优先级的 Pod 可以快速抢占低优先级 Pod 资源进行调度,而低优先级的 cce-autoscaling-placeholder 的 Pod 则会被 "抢占",状态变成 Pending,如果配置了节点组并启用弹性伸缩,就会触发节点的扩容。

这样,由于有了一些资源作为缓冲,即使节点扩容慢,也能保证一些 Pod 能够快速扩容并调度上,实现秒级伸缩。要调整预留的缓冲资源多少,可根据实际需求调整 cce-autoscaling-placeholder 的 request 或副本数。

操作步骤

  1. 创建节点组,并开启自动扩缩容,参考:CCE 节点组及自动扩缩容
  2. 进入 Helm 模板->百度智能云模板,部署 cce-autoscaling-placeholder 插件,如下:

image.png

按照需求修改各参数,如下:

image.png

  1. 试创建 Nginx Pod,可以发现 Nginx Pod 能快速抢占 Placeholder Pod 从而快速启动,Placeholder 会触发新的节点扩容,如下:

image.png

参数含义

cce-autoscaling-placeholder values.yaml 中各参数含义如下:

参数名称 参数含义 说明
replicaCount Pod 数 默认 3
imageID 镜像名称, 通用 pause
cpu 单个 Pod 占用 cpu -
mem 单个 Pod 占用 mem -
nodeSelector 自定义 nodeSelector 推荐和 InstanceGroup 一致
tolerations 自定义 tolerations -
affinity 自定义 affinity -

参考

上一篇
CCE 集群节点自动伸缩
下一篇
云原生AI