我正在尝试更改自己管理的Kubernetes集群的CPU管理器策略,如here所述,但是这样做却遇到了很多问题。
集群正在DigitalOcean中运行,这是到目前为止我尝试过的。
--cpu-manager-policy
是kubelet选项,因此我假设我无法通过API服务器对其进行更改,而必须手动进行更改在每个节点上。 (这个假设是顺便说一句吗?)ssh
进入其中一个节点(DigitalOcean术语中的液滴),并按照{{ 3}}。它给我消息kubelet --cpu-manager-policy=static
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.
检查了--config标志指向的文件,并发现其ps aux | grep kubelet
。 / li>
/etc/kubernetes/kubelet.conf
,还添加行cpuManagerPolicy: static
和kubeReserved
,因为它们如果指定systemReserved
,则成为必填字段。我对以下事情有些迷茫
答案 0 :(得分:1)
动态配置的一个问题是,如果节点无法重启,则API不会给出合理的响应来告诉您做错了什么,您必须ssh
进入节点并尾随kubelet日志。另外,您必须ssh
进入每个节点并始终设置--dynamic-config-dir
标志。
以下这些对我来说效果最好
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
和--system-reserved
标志,因为它们是设置--cpu-manager-policy
标志的先决条件
rm -rf /var/lib/kubelet/cpu_manager_state
sudo systemctl daemon-reload
sudo systemctl stop kubelet
sudo systemctl start kubelet
kubectl proxy
。curl -sSL "http://localhost:8001/api/v1/nodes/${NODE_NAME}/proxy/configz" | grep cpuManager
答案 1 :(得分:0)
这可能不是全球性的工作方式,但是我认为这将比您目前正在做的事情舒适得多。
首先,您需要运行
kubectl proxy --port=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。还有更多可能性,例如,如果出现任何问题,您可以返回默认设置。
此documentation section中的所有详细信息都描述了此过程。
希望这会有所帮助。
答案 2 :(得分:0)
如果您使用较新的 k8s 版本并且 kubelet 是由 kubelet 配置文件配置的,例如:config.yml。您可以按照上面提到的@satnam 的相同步骤进行操作。但不是添加 --kube-reserved
--system-reserved
--cpu-manager-policy
,您需要在 config.yml 中添加 kubeReserved
systemReserved
cpuManagerPolicy
。例如:
systemReserved:
cpu: "1"
memory: "100m"
kubeReserved:
cpu: "1"
memory: "100m"
cpuManagerPolicy: "static"
同时,请确保您的 CPUManager
已启用。