更改Kubernetes中的CPU管理器策略

更改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命令,如中所述。它

我正在尝试更改我所管理的Kubernetes群集的CPU管理器策略,如前所述,但是,在这样做的过程中,我遇到了许多问题

该集群正在DigitalOcean中运行,以下是我迄今为止所做的尝试

  • 1.由于文章提到
    --cpu管理器策略
    是一个kubelet选项,我假设我无法通过API服务器更改它,必须在每个节点上手动更改它。(顺便说一句,这是假设吗?)
  • 2.I
    ssh
    进入其中一个节点(DigitalOcean行话中的水滴),然后运行
    kubelet--cpu管理器policy=static
    命令,如中所述。它给了我一条消息--cpu管理器策略已被弃用,这个参数应该通过Kubelet的--config标志指定的配置文件来设置。看见https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ 有关详细信息。
  • 3.因此我通过运行
    ps aux | grep kubelet
    检查--config标志指向的文件,发现它的
    /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
标志

下面这句话对我最有效

  • 将SSH连接到节点中。编辑
  • 添加以下行
  • 我们需要设置
    --kube reserved
    --system reserved
    标志,因为它们是设置
    --cpu管理器策略
    标志的先决条件

  • 然后排空节点并删除以下文件夹
  • 重新启动kubelet
  • 在节点上取消关联并检查策略。这假设您正在端口8001上运行
    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