You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
调度
CPU Burst 能力最佳实践
复制全文
下载 pdf
CPU Burst 能力最佳实践
本文主要描述 CPU Burst 能力相关的最佳实践。​
功能概述​
在容器化环境中,为容器设置 CPU Limit 是常见的资源隔离手段。当业务出现突发流量时,容器可能因 CPU 限流(Throttle)而导致服务质量下降,表现为请求延迟升高、吞吐量下降等。​
CPU Burst 是 katalyst 提供的弹性 CPU 资源能力,可动态感知容器的 CPU Throttled 状态,并对容器的 CPU 参数进行自适应调节。在出现突发负载时,CPU Burst 临时为容器提供超出 CPU Limit 的 CPU 资源,缓解 CPU 限流带来的性能瓶颈,从而保障延迟敏感型应用的服务质量。更多功能说明,请参见 使用 Pod CPU Burst 能力。​
适用场景​
CPU Burst 主要适用于以下三类典型场景。​
毫秒级短时突发流量​
  • 典型表现:Pod CPU 被 CFS Quota 限流,P99 延迟出现尖刺,持续时间为毫秒级。​
  • 推荐策略:cpuBurstOnly(开启内核 Burst)或auto(自适应开启 cpuBurstOnly 和 cfsQuotaBurstOnly 两种弹性能力)。​
  • 预期效果:内核态借用未使用的 CPU 配额,P99 延迟显著下降。​
  • 适用业务:Web 服务、API 网关、微服务等延迟敏感型在线服务。​
​
秒至分钟级持续高负载​
  • 典型表现:内核 Burst 信用很快耗尽,仍然触发限流,TPS 下降,持续时间为秒级至分钟级。​
  • 推荐策略:auto。​
  • 预期效果:用户态动态放大 CFS Quota,TPS 与 P99 同步改善。​
  • 适用业务:Elasticsearch 搜索引擎、中间件服务、数据库代理等持续高负载服务。​
​
应用启动阶段 CPU 密集​
  • 典型表现:应用初始化阶段(如 JVM 预热、类加载)CPU 需求远超稳态,导致启动时间过长。​
  • 推荐策略:cpuBurstOnly或auto。​
  • 预期效果:启动阶段允许容器临时使用更多 CPU 资源,加速应用就绪。​
  • 适用业务:Java 应用、需要预热的 AI 推理服务。​
​
​
前提条件​
在使用 CPU Burst 能力前,请确认以下条件均已满足:​
  • 集群已部署 v0.5.13-vke.14 及以上版本的 katalyst 组件并启用了 CPU Burst 相关配置。 详情请参见 katalyst。​
  • 目标 Pod 所在节点/节点池已添加 Label:vke.node.katalyst.deploy=true。详情请参见 为节点添加 Label。​
功能最佳配置推荐​
策略选择指南​
katalyst 提供四种 CPU Burst 策略,您可以根据业务负载特征选择合适的策略。​
​
策略​
CPU Burst​
CFS Quota 弹性​
适用场景​
none​
不启用​
不启用​
关闭所有弹性能力(默认值)。​
cpuBurstOnly​
启用​
不启用​
应对毫秒级短时突发流量场景。​
cfsQuotaBurstOnly​
不启用​
启用​
应对秒级至分钟级持续高负载导致的限流或节点内核不支持 CPU Burst 的场景。​
auto(推荐)​
启用​
启用​
同时应对短时突发和持续高负载的场景。综合效果最优。​
说明​
大多数在线服务场景建议使用auto策略,可同时获得内核 Burst(应对毫秒级突发)和 CFS Quota 弹性(应对分钟级高负载)的双重保护。​
​
参数配置推荐​
​
参数​
默认值​
推荐值​
说明​
cpu_burst_percent​
100​
100​
内核 CPU Burst 上限(相对 CPU Limit 的百分比)。​
cfs_quota_burst_percent​
300​
200~300​
CFS Quota 可放大的最大百分比。300 表示最多扩大到原始 Quota 的 3 倍。​
cfs_quota_burst_period_seconds​
-1(表示不限制)​
​
根据业务特征设置。​
容器持续消耗最大上限 CPU 的时间限制。设置正整数限制持续时间,防止长时间霸占资源。​
sharePoolThresholdPercent​
50​
50~70​
节点共享池 CPU 使用率安全水位。超过此阈值会强制缩容所有已放大的 Quota(仅集群粒度可配)。​
​
典型场景配置​
以下提供两类典型场景的完整配置示例,包含场景描述、操作步骤和验证步骤。​
​
场景一:在线 Web 服务
场景二:持续高负载服务
​
场景描述​
适用于大多数在线服务,例如 Nginx、API 网关、微服务等。该场景以短时突发流量为主,开启auto策略后其他参数使用默认值即可获得良好效果。​
操作步骤​
  1. 连接目标集群,详情请参见 使用 kubectl 连接集群。​
  1. 在 Pod 的metadata.annotations中添加katalyst.kubewharf.io/cpu_enhancement注解,并启用 CPU Burst 的auto策略。​
  • ​
    apiVersion: apps/v1​
    kind: Deployment​
    metadata:​
    name: web-service # Deployment 名称。​
    namespace: default # Deployment 所在命名空间。​
    spec:​
    replicas: 1 # Deployment 副本数。​
    selector:​
    matchLabels:​
    app: demo-nginx​
    template:​
    metadata:​
    annotations:​
    katalyst.kubewharf.io/cpu_enhancement: '{"cpu_burst_policy":"auto"}' # 开启 CPU Burst 能力并配置 auto 策略。​
    labels:​
    app: demo-nginx​
    spec:​
    containers:​
    - name: container-1​
    image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0 # 容器镜像地址和 Tag,请替换为您自己的容器镜像。若使用公网镜像,请确保您的集群能够访问公网。​
    resources:​
    limits: # 容器的 CPU 或内存上限。开启 CPU Burst 能力时,须配置 CPU Limit。​
    cpu: "2"​
    memory: "2Gi"​
    requests: # 容器的 CPU 或内存请求。​
    cpu: "1"​
    memory: "1Gi"​
    ​
验证步骤​
  1. 在 Pod 所在节点上确认内核 CPU Burst 是否已启用。详细操作,请参见 验证结果。​
  1. 通过监控平台(例如 VMP)观察 Pod 的 CPU Throttled 指标。​
  • 目前 VMP 提供container_cpu_cfs_throttled_periods_total和container_cpu_cfs_periods_total基础指标,可直接通过 Explore 查询。您也可以通过 VMP 监控看板 自行实现更多 Pod 资源监控。​
​
常见问题​
开启 CPU Burst 后效果不明显怎么办?​
  • 确认 Pod 已设置 CPU Limit,未设置 Limit 的 Pod 无法启用 CPU Burst 能力。​
  • 检查节点内核版本是否满足要求。​
  • 注意​
  • 内核版本为 5.4、5.10、5.15 的 veLinux 公共镜像​
  • 内核版本为 5.15 的 Ubuntu 公共镜像​
  • 基于上述两个内核版本公共镜像制作的自定义镜像​
​
如何选择 cpuBurstOnly、cfsQuotaBurstOnly 和 auto?​
​
sharePoolThresholdPercent 设置多少合适?​
​
cfs_quota_burst_period_seconds 如何设置?​
  • 默认值-1表示不限制持续时间,适用于业务高负载持续时间不确定或业务无法容忍任何 CPU 限流的场景。​
  • 设置为正整数表示限制持续时间,适用于业务高负载持续时间相对确定、且可容忍短时 CPU 限流的场景。​
​
最近更新时间:2026.06.30 14:11:14
这个页面对您有帮助吗?
有用
有用
无用
无用