使用 cce-autoscaling-placeholder 实现秒级弹性伸缩
更新时间:2025-05-28
组件介绍
使用 CCE 节点组并开启自动扩缩容后,当出现 Pod 由于资源不足导致调度失败时,集群会自动的进行节点扩容,整个流程通常需要若干分钟才能完成,当出现流量突发时,分钟级的扩容速度不能快速满足业务要求。本文介绍通过 K8S 的 PriorityClass 实现 Pod 占位,从而能在 CCE 上实现秒级伸缩,用以应对流量突发的场景。
实现原理
cce-autoscaling-placeholder 利用低优先级的 Pod 对资源进行提前占位,预留部分资源作为缓冲,当需要扩容 Pod 时,高优先级的 Pod 可以快速抢占低优先级 Pod 资源进行调度,而低优先级的 cce-autoscaling-placeholder 的 Pod 则会被 "抢占",状态变成 Pending,如果配置了节点组并启用弹性伸缩,就会触发节点的扩容,更多信息请见 节点组管理。
这样,由于有了一些资源作为缓冲,即使节点扩容慢,也能保证一些 Pod 能够快速扩容并调度上,实现秒级伸缩。要调整预留的缓冲资源多少,可根据实际需求调整 cce-autoscaling-placeholder 的 request 或副本数。
操作步骤
- 登录百度智能云官网,并进入管理控制台。
- 选择”产品导览>容器>容器引擎”,单击进入容器引擎管理控制台。
- 单击左侧导航栏中的”Helm>Helm模板”。
- 在“百度智能云模板”中选择cce-autoscaling-placeholder模板,单击安装进行部署。
- 在模板中完成以下配置。
参数名称 | 参数含义 | 说明 |
---|---|---|
replicaCount | Pod 数 | 默认 3 |
imageID | 镜像名称, 通用 pause | |
cpu | 单个 Pod 占用 cpu | - |
mem | 单个 Pod 占用 mem | - |
nodeSelector | 自定义 nodeSelector | 推荐和 InstanceGroup 一致 |
tolerations | 自定义 tolerations | - |
affinity | 自定义 affinity | - |
- 单击确定按钮完成部署。
- 创建 Nginx Pod,可以发现 Nginx Pod 能快速抢占 Placeholder Pod 从而快速启动,Placeholder 会触发新的节点扩容,如下: