如何在 kubernetes 中为 Pod 设置 CPU 亲和性?

如何在 kubernetes 中为 Pod 设置 CPU 亲和性?

我想在 kubernetes 中为 Pod 设置 CPU 亲和性。但是,我设置失败,并且很难找到相应的文档。

我的理解是:

  • 基本上,k8s 的 CPU 管理器将节点中的所有 CPU 核心视为共享池,并使用它们来运行部署在该节点的 pod。
  • 如果将 kubelet 的 CPU-manager-policy 字段设置为“static”,则可以通过在 .yaml 文件中将 CPU 请求/限制设置为整数来设置 Pod 的 CPU 亲和性。

我做了什么:

  1. 为了将 CPU-manager-policy 字段更改为静态,我尝试按照以下步骤更改 kubelet 的配置:关联
  2. 但是,CPU-manager-policy 字段没有改变,仍然为“无”。
  3. 因此,我更改了 /var/lib/kubelet/config.yaml 中的“cpuManagerPolicy”字段。
  4. 然后,我执行了“sudo systemctl restart kubelet”。
  5. 节点的状态变为“NotReady”,并且所有 pod 都进入待处理状态。

我正在使用的环境:

  • k8s版本:v1.13.2
  • CNI:Calico
  • 操作系统:Ubuntu 16.04
  • 节点数:2 (1 个主节点,1 个从节点)
  • 应用程序:istio 的示例应用程序名为图书信息

先感谢您!

答案1

我解决了。您必须在 config.yaml 文件中添加“kubeReserved”字段。此外,您必须删除 /var/lib/kubelet/cpu_manager_state 文件。然后,通过执行“systemctl restart kubelet”重新启动 kubelet。

相关内容