TKE 开启 CPU 静态管理策略

操作背景

默认情况下,节点上的 Pod 默认共享节点 CPU 池中所有的 CPU核数, 当节点上运行了很多 CPU 密集的 Pod 时,工作负载可能会切换调度到不同的 CPU 核, 这样就导致有些工作负载的性能明显地受到 CPU 缓存亲和性以及调度延迟的影响。 对此,kubelet 提供了可选的 CPU 管理策略,可以实现某些关键 Pod 的静态绑核,避免 CPU 抢占和切换对业务带来的性能损耗。详情参考:控制节点上的 CPU 管理策略

TKE 如何开启配置

下面介绍在 TKE 中开启 CPU 静态管理策略的两种方式。

一、存量节点开启

1. 静态 CPU 策略配置

在 K8S 1.17 版本之前,可供 Pod 独占 CPU 资源数量等于节点的 CPU 总量减去通过--kube-reserved--system-reserved 参数保留的 CPU,从 1.17 版本开始,CPU保留列表可以通过 kublet 的 '--reserved-cpus' 参数显式地设置。由于 TKE 的 GA 版本 一般为偶数,所以:

  • 当 TKE 集群版本小于 1.18 时:

在节点 /etc/kubernetes/kubelet 文件中添加如下配置:

1...
2CPU_MANAGER_POLICY="--cpu-manager-policy=static"
3KUBE_RESERVED="--kube-reserved=cpu=xxx,memory=xxx"
4SYSTEM_RESERVED="--system-reserved=cpu=xxx,memory=xxx"
5...

其中, 给 Pods 独占 CPU 可用的资源数量等于节点的 CPU 总量减去通过 --kube-reserved--system-reserved 参数保留的 CPU,如果保留 CPU 数量设置非整数则向上取整,比如 250m,向上取整就是保留 1 核。

由于 TKE 的 systemd 启动参数环境变量是硬编码,所以这里需要再添加下 kubelet 的启动参数环境变量 CPU_MANAGER_POLICYSYSTEM_RESERVEDKUBE_RESERVED 变量默认已经存在了):

修改 kubelet 的 systemd 启动文件 /usr/lib/systemd/system/kubelet.service, 启动参数添加如下环境变量:

1...
2ExecStart=/usr/bin/kubelet ... ${CPU_MANAGER_POLICY} ${KUBE_RESERVED} ${SYSTEM_RESERVED} ...
3...
  • 当TKE 集群版本大于等于1.18 :

在节点 /etc/kubernetes/kubelet 文件中添加如下配置:

1...
2CPU_MANAGER_POLICY="--cpu-manager-policy=static"
3RESERVED_CPUS="--reserved-cpus=xxx"
4...

--reserved-cpus 参数显式的指定为 Pod 独占的一组 CPU 池,如"--reserved-cpus=0,1,2,3",或 CPU 范围列表 "--reserved-cpus=0-3" 都是可以的。

同样修改 kubelet 的 systemd 启动文件 /usr/lib/systemd/system/kubelet.service, 启动参数添加如下环境变量:

1...
2ExecStart=/usr/bin/kubelet ... ${CPU_MANAGER_POLICY} ${RESERVED_CPUS} ...
3...

2. 策略配置生效

接下来驱逐节点上的 Pods,并通过删除 kubelet 根目录中的状态文件 cpu_manager_state 来手动重置 CPU 管理器:

  1. 在 TKE 控制台 【节点列表】-> 【更多】 点【驱逐】选项或手动执行驱逐命令。
  2. 在 TKE 节点中执行删除 cpu_manager_state 文件并重启 kubelet 服务:
1rm /var/lib/kubelet/cpu_manager_state
2systemctl  daemon-reload
3systemctl  restart kubelet

二、新加节点开启(推荐)

直接通过自定义 kubelet 参数的方式完成上述的参数添加,策略配置逻辑和上述存量节点(第一步)描述一致,但目前自定义参数需要开白支持,可联系售后同学帮忙开启即可。

总结

上述内容仅描述了如何在 TKE 中开启静态CPU 管理策略, 关于工作负载的 CPU 静态绑核如何配置和注意事项,请参阅 static 策略

相关系列文章