我正在尝试更改我管理的 Kubernetes 集群的 CPU 管理器策略,如上所述here https://kubernetes.io/docs/tasks/administer-cluster/cpu-management-policies/然而,我在这样做时遇到了很多问题。
该集群正在 DigitalOcean 中运行,这是我到目前为止所尝试的。
-
1.既然文章提到了
--cpu-manager-policy
是一个 kubelet 选项,我假设我无法通过 API 服务器更改它,并且必须在每个节点上手动更改它。 (顺便说一句,这是假设吗?)
-
2. I
ssh
进入其中一个节点(DigitalOcean 行话中的 Droplet)并运行kubelet --cpu-manager-policy=static
命令如中所述kubelet CLI 参考在这里 https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/。它给了我消息Flag --cpu-manager-policy has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.
-
3.所以我通过运行来检查 --config 标志指向的文件
ps aux | grep kubelet
并发现其/etc/kubernetes/kubelet.conf
.
-
4.我编辑文件并添加一行
cpuManagerPolicy: static
对它,还有kubeReserved
and systemReserved
因为如果指定,它们将成为必填字段cpuManagerPolicy
.
-
5.然后我终止正在运行该进程的进程并重新启动它。还出现了一些其他问题(删除此文件并耗尽节点等),我能够解决这些问题并最终重新启动 kubelet
我对以下事情有点迷失
- 我需要如何为所有节点执行此操作?我的集群有 12 个,为每个集群执行所有这些步骤似乎效率非常低。
- 有什么方法可以从全局(即集群范围)设置这些参数,而不是逐个节点设置这些参数?
- 我怎样才能确认我所做的确实改变了 CPU 管理器策略?
动态配置的一个问题是,如果节点无法重新启动,API 不会给出合理的响应来告诉您做错了什么,您必须ssh
进入节点并尾部 kubelet 日志。另外,你必须ssh
到每个节点并设置--dynamic-config-dir
无论如何,国旗。
以下最适合我
- 通过 SSH 进入节点。编辑
vim /etc/systemd/system/kubelet.service
- 添加以下行
--cpu-manager-policy=static \
--kube-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi \
--system-reserved=cpu=1,memory=2Gi,ephemeral-storage=1Gi \
我们需要设置--kube-reserved
and --system-reserved
标志,因为它们是设置的先决条件--cpu-manager-policy
flag
- 然后清空节点并删除以下文件夹
rm -rf /var/lib/kubelet/cpu_manager_state
- 重启 kubelet
sudo systemctl daemon-reload
sudo systemctl stop kubelet
sudo systemctl start kubelet
- 解除节点封锁并检查策略。这假设你正在运行
kubectl proxy
在端口 8001 上。
curl -sSL "http://localhost:8001/api/v1/nodes/${NODE_NAME}/proxy/configz" | grep cpuManager
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)