最近想学习在K8S环境给容器绑定CPU,曾经参考过一篇帖子,绑核成功,但第二次操作就莫名其妙再没每成功过。

又找了几篇帖子,而且还把老的v1.17.4卸了,重装一个v1.20.15,再次试验。

原来的操作

1,停止kubelet(未进行节点驱逐的操作)

2,修改config.yaml (/var/lib/kubelet/config.yaml)添加 cpuManagerPolicy: static

3,删除cpu_manager_state

4,systemctl restart kubelet 就这里有问题,发现kubelet无法成功重启,所以并不能生成新的cpu_manager_state文件。

新操作

1,修改 /lib/systemd/system/kubelet.service.d/10-kubeadm.conf
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS --feature-gates=CPUManager=true --cpu-manager-policy=static --kube-reserved=cpu=1
2,删除 /var/lib/kubelet/cpu_manager_state状态文件
3,重载systemctl daemon-reload
4,重启systemctl restrart kubelet
容器不用重新部署,原本是Pod 属于 Guaranteed QoS 类型的会自动绑定CPU.

5,进入容器查询绑核情况。
kubectl exec -it POD -c container -n NS bash

taskset -cp 1

总结一下:

上面两种方法,第一种没有systemctl daemon-reload,会不会这个导致kubelet没有重启成功。嗯,下次再试试。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐