Kubernetes:详解如何将CPU Manager做到游刃有余

本文详细介绍了Kubernetes中的CPU Manager,解释了为何需要使用它以优化CPU资源分配,尤其是在CPU密集型工作负载场景下。讨论了CPU Manager的缺点,如无法在集群层面选择最佳CPU Core组合,以及只对Guaranteed Pod生效。接着阐述了如何开启和配置CPU Manager,包括更改策略,如从none切换到static,并提供了模板示例。同时,文章还提醒了使用CPU Manager时的注意事项,如预留CPU和调整策略选项,以避免性能问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

k8s中为什么要用CPU Manager?

默认情况下,kubelet 使用CFS配额来执行 Pod 的 CPU 约束。Kubernetes的Node节点会运行多个Pod,其中会有部分的Pod属于CPU密集型的工作负载。在这种情况下,Pod之间会争抢节点的CPU资源。当争抢剧烈的时候,Pod会在不同的CPU Core之间进行频繁的切换,更糟糕的是在NUMA Node之间的切换。这种大量的上下文切换,会影响程序运行的性能。

什么是cpu密集型?

通俗来讲就是对cpu依赖很高,操作cpu的频率非常高,充分的使用cpu资源来实现本地计算任务。

另外还有io密集型:

io密集型就是讲磁盘/内存的io操作会非常频繁,文件读写、网络请求等,这种一般cpu利用率会非常低

CPU Manager有什么缺点?

CPU Manager特性是节点级别的CPU调度选择,所以无法在集群维度中选择最优的CPU Core组合。同时CPU Manager特性要求Pod是Guaranteed时(Pod中的每个容器必须指定CPU Request和CPU Limit,并且两者要相等)才能生效,且无法适用于所有类型的Pod。

如何开启CPU Manager

cpu Manager 在 Kubernetes v1.12 引用为 [beta],故想要更好的使用它,版本需>=v1.12。

CPU 管理策略通过 kubelet 参数 --cpu-manager-policy 或 KubeletConfiguration 中的 cpuManagerPolicy 字段来指定。支持两种策略:

  • none: 默认策略,表示现有的调度行为。可以理解为不开启cpu manager。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值