更改Kubernetes中的CPU管理器策略
我正在尝试更改我所管理的Kubernetes群集的CPU管理器策略,如前所述,但是,在这样做的过程中,我遇到了许多问题 该集群正在DigitalOcean中运行,以下是我迄今为止所做的尝试更改Kubernetes中的CPU管理器策略,kubernetes,digital-ocean,devops,kubelet,Kubernetes,Digital Ocean,Devops,Kubelet,我正在尝试更改我所管理的Kubernetes群集的CPU管理器策略,如前所述,但是,在这样做的过程中,我遇到了许多问题 该集群正在DigitalOcean中运行,以下是我迄今为止所做的尝试 1.由于文章提到--cpu管理器策略是一个kubelet选项,我假设我无法通过API服务器更改它,必须在每个节点上手动更改它。(顺便说一句,这是假设吗?) 2.Issh进入其中一个节点(DigitalOcean行话中的水滴),然后运行kubelet--cpu管理器policy=static命令,如中所述。它
- 1.由于文章提到
是一个kubelet选项,我假设我无法通过API服务器更改它,必须在每个节点上手动更改它。(顺便说一句,这是假设吗?)--cpu管理器策略
- 2.I
进入其中一个节点(DigitalOcean行话中的水滴),然后运行ssh
命令,如中所述。它给了我一条消息--cpu管理器策略已被弃用,这个参数应该通过Kubelet的--config标志指定的配置文件来设置。看见https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ 有关详细信息。kubelet--cpu管理器policy=static
- 3.因此我通过运行
检查--config标志指向的文件,发现它的ps aux | grep kubelet
/etc/kubernetes/kubelet.conf
- 4.我编辑该文件并在其中添加一行
,以及cpuManagerPolicy:static
和kubeReserved
,因为如果指定systemReserved
,它们将成为必填字段cpuManagerPolicy
- 5。然后我杀死运行该进程的进程并重新启动它。其他一些事情出现了(删除这个文件并清空节点等),我能够通过,并最终能够重新启动kubelet
- 我需要如何为所有节点执行此操作?我的集群有12个,并且为每个集群执行所有这些步骤似乎效率很低李>
- 是否有任何方法可以从全局(即集群范围)设置这些参数,而不是逐节点设置
- 我如何才能确认我所做的实际上改变了CPU管理器策略
kubectl代理--端口=8001&
下载配置:
NODE_NAME="the-name-of-the-node-you-are-reconfiguring"; curl -sSL "http://localhost:8001/api/v1/nodes/${NODE_NAME}/proxy/configz" | jq '.kubeletconfig|.kind="KubeletConfiguration"|.apiVersion="kubelet.config.k8s.io/v1beta1"' > kubelet_configz_${NODE_NAME}
相应地编辑它,并将配置推送到控制平面。如果一切顺利,您将看到有效的响应。然后,您必须编辑配置,以便节点开始使用新的ConfigMap。还有更多的可能性,例如,如果出现任何问题,您可以返回默认设置
本节详细介绍了该过程
希望这有帮助 动态配置的一个问题是,如果节点无法重新启动,API不会给出合理的响应,告诉您错误所在,您必须
ssh
进入节点并跟踪kubelet日志。另外,您必须ssh
进入每个节点,并设置--dynamic config dir
标志
下面这句话对我最有效
--kube reserved
和--system reserved
标志,因为它们是设置--cpu管理器策略
标志的先决条件
kubectl proxy
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 \
rm -rf /var/lib/kubelet/cpu_manager_state
sudo systemctl daemon-reload
sudo systemctl stop kubelet
sudo systemctl start kubelet
curl -sSL "http://localhost:8001/api/v1/nodes/${NODE_NAME}/proxy/configz" | grep cpuManager