- 文档首页
容器服务
容器服务 VKE
用户指南
调度管理
QoS 感知调度
CPU Burst
CPU Burst
容器服务基于 Katalyst(字节跳动开源的资源管理系统)为 Pod 提供 CPU Burst 能力。
背景信息
在 Kubernetes 中,CPU Burst 是一种优化策略,用于提升延迟敏感型应用的容器性能表现。它允许容器在 CPU 空闲时积累一些 CPU 时间片,用于满足突发时的资源需求,进而提升容器性能、降低延迟指标。
CPU Burst 策略的工作原理是在容器的 CPU 使用量低于其 CPU Limit 时,积累额外的 CPU 时间片,这些时间片可以在容器需要处理突发任务时使用,例如突然增加的流量或请求。当容器需要在短时间内处理更多任务时,它可以利用这些积累的时间片来避免 CPU 限流(CPU Throttle)问题,从而减少响应时间延迟。
VKE 在内核 CPU Burst 基础上,通过调节内核cpu.cfs_quota_us参数,允许容器在节点有空闲算力时临时突破 Limit,少量超额使用 CPU,平稳度过流量尖峰,无需调大规格即可改善响应延迟。
使用限制
- 目前仅支持为云服务器(ECS)方式部署的 Pod 开启 CPU Burst 能力,以弹性容器实例(VCI)方式部署的 Pod 暂不支持。
- 完整使用该能力依赖 v0.5.13-vke.14 及以上版本的 katalyst 组件。
- CPU Burst 能力对如下 VKE 系统组件所在命名空间下的 Pod 不生效:
- apmplus-opentelemetry-operator
前提条件
- 集群处于 运行中 状态,且集群中存在可用的 ECS 节点。详细操作,请参见 新增节点、添加已有节点。
- 集群已安装 v0.5.13-vke.14 及以上版本的 katalyst 组件,并在组件参数配置页面勾选 QoS 感知调度 开启 CPU Burst 开关。详情请参见 katalyst。
使用方法
配置节点 Label 后,您可以使用 katalyst 组件的 CPU Burst 能力,管理对应的节点。
- 在集群管理页面,按如下方式为 Pod 所在节点添加 Label。
从节点池维度添加 Label
从节点维度添加 Label
说明
推荐使用该方法添加 Label,可以批量为节点池内的节点增加 Label。
- 在 节点池 页面找到目标节点池,单击对应 操作 列下的 编辑。
- 在 编辑节点池 页面的 ①节点池配置 步骤 高级配置 模块下配置 节点标签(Labels)并勾选 开启节点标签及污点自动更新。
- 标签键:vke.node.katalyst.deploy
-
- 在 节点 页面,找到目标节点,单击对应 操作 列下的...按钮选择 标签管理。
- 在 节点详情页 的 标签 页签下单击 添加标签,为节点添加如下标签后单击 确定。
- 标签键:vke.node.katalyst.deploy
步骤二:为 Pod 开启 CPU Burst 能力
VKE 支持从 Pod 或集群两个层面为 Pod 开启 CPU Burst 能力。
注意
- 关闭 Pod 层面 CPU Burst 功能时,只能通过在 Annotation 中设置cpuBurstPolicy为none来关闭,不能直接删除 Annotation。
- 关闭集群层面 CPU Burst 功能时,只能通过在 AdminQoSConfiguration CRD 中设置cpuBurstPolicy为none来关闭,不能直接删除 CRD。
详细的操作说明,请参见本文下方 更多操作。
通过为 Pod 添加特定的 Annotation 来为单个 Pod 配置 CPU 弹性策略。Annotation 说明如下表所示。
JSON 参数说明
下文以创建无状态负载(Deployment)为例,更多工作负载相关操作,请参见 工作负载。 - 通过 kubectl 连接集群。详细操作,请参见 连接集群。
- 创建 Deployment 的 YAML 文件。示例 YAML 文件cpu-burst-demo.yaml代码如下。
在集群层面为集群下所有 ECS 方式部署的 Pod 开启 CPU Burst 能力时,需要在 katalyst-system 命名空间中,配置名为 katalyst-config 的 AdminQoSConfiguration 对象。
说明
- katalyst-system 命名空间在安装 katalyst 组件后,由系统自动生成。
- AdminQoSConfiguration 是 katalyst 组件精细化资源管理的配置。
- 通过 kubectl 连接集群。详细操作,请参见 连接集群。
- 创建 AdminQoSConfiguration 对象,YAML 文件katalyst-config.yaml的示例代码如下。
- 创建一个 KatalystCustomConfig (KCC) 对象。KCC 用于描述 AdminQosConfiguration 的 Group、Version、Resource(GVR)信息和托管行为。
验证结果
- 查看已开启 CPU Burst 能力的 Pod 的 UID。
- 查看 Pod 下容器(Container)的 ID。
- 查看容器 cgroup 中 CPU 的 burst_us值。
- 其中<pod_uid>和<container-id>替换为上方步骤中已获取的值。
- 查看容器 cgroup 中 CPU 的quota_us值。
- 按如下方法,计算cpu.cfs_burst_us和cpu.cfs_quota_us的值。
- 若 cpu.cfs_burst_us = cpu.cfs_quota_us * 您设置的 CPU Burst 可放大的百分比上限值,则表示 Pod 的 CPU Burst 配置已正确下发。
如需关闭 Pod CPU Burst 功能,按如下方法操作。
需要在对应的 Pod 上更新 CPU Burst 相关 Annotation,将 Annotation Value 改为none,即:katalyst.kubewharf.io/cpu_enhancement: '{"cpu_burst_policy":"none","cpu_burst_percent":"100"}'。
将名为 katalyst-config 的 AdminQoSConfiguration 对象 YAML 文件中的 CPU Burst 相关 Annotation Value 改为none,即:cpuBurstPolicy: "none"。
集群维度关闭 Pod CPU Burst 功能以后,集群内的所有 Pod 将自动关闭该能力。
最近更新时间:2026.10.19 11:29:10