如何在 RKE2 集群中配置 CPU 管理器策略
本文永久链接: https://www.xtplayer.cn/how-to-configure-cpu-manager-policy-in-an-rke2-or-k3s-cluster/
环境
- Rancher 配置的或独立的 RKE2 集群
配置方法
本文详细介绍了如何在 RKE2 集群中配置Kubernetes CPU 管理器策略。该策略通过 kubelet 标志进行配置,同时还需使用--cpu-manager-policy相关的--kube-reserved、--system-reserved和标志--reserved-cpus``--cpu-manager-policy-options。
Rancher UI 创建的 RKE2 集群
新集群创建时的配置
旧版本(v1.32 之前):通过配置文件添加 kubelet 参数
在通过集群配置表单填写完所有所需的配置后,单击页面底部的“以 YAML 格式编辑” 。
根据以下示例,将所需的 kubelet-arg 标志添加到 rkeConfig 下的 machineGlobalConfig 块中:
[...]
spec:
[...]
rkeConfig:
[...]
machineGlobalConfig:
kubelet-arg:
- cpu-manager-policy=static
- system-reserved=cpu=1,memory=1548Mi,ephemeral-storage=30Gi
[...]然后单击“创建”按钮创建集群。
新版本(v1.32 及以上):使用 Kubelet 配置文件
从 RKE2 v1.32 开始,遵循上游 Kubernetes 实践,不能再通过命令行参数配置 kubelet。需要创建独立的 Kubelet 配置文件 。
在目录 /var/lib/rancher/rke2/agent/etc/kubelet.conf.d/ 下创建文件,例如 01-cpu-pinning.conf:
apiVersion: kubelet.config.k8s.io/v1beta1 |
重启服务使配置生效
根据节点角色执行重启(二选一):
# RKE2 Agent 节点
systemctl restart rke2-agent
# RKE2 Server 节点
systemctl restart rke2-server
现有集群修改配置
旧版本(v1.32 之前):通过配置文件添加 kubelet 参数
导航至集群 管理
单击所需下游集群的“编辑配置”按钮
点击“编辑为 YAML”
根据以下示例,将所需的 kubelet-arg 标志添加到 rkeConfig 下的 machineGlobalConfig 块中:
[...]
spec:
[...]
rkeConfig:
[...]
machineGlobalConfig:
kubelet-arg:
- cpu-manager-policy=static
- system-reserved=cpu=1,memory=1548Mi,ephemeral-storage=30Gi
[...]单击“保存”以使用新的 CPU 管理器策略更新集群。
集群将进入更新状态,集群节点将卡在协调状态,并显示消息“等待探测:kubelet”。
当节点进入此状态时,打开与该节点的 SSH 会话,并删除旧的 CPU 管理器状态文件:
# rm -rf /var/lib/kubelet/cpu_manager_state
节点随后将成功完成协调。
重复步骤 6,直到所有节点成功协调,集群恢复到活动状态。
新版本(v1.32 及以上):使用 Kubelet 配置文件
从 RKE2 v1.32 开始,遵循上游 Kubernetes 实践,不能再通过命令行参数配置 kubelet。需要创建独立的 Kubelet 配置文件 。
在目录 /var/lib/rancher/rke2/agent/etc/kubelet.conf.d/ 下创建文件,例如 01-cpu-pinning.conf:
apiVersion: kubelet.config.k8s.io/v1beta1 |
删除旧的 CPU 管理器状态文件
# rm -rf /var/lib/kubelet/cpu_manager_state
重启服务使配置生效
根据节点角色执行重启(二选一):
# RKE2 Agent 节点
systemctl restart rke2-agent
# RKE2 Server 节点
systemctl restart rke2-server
独立安装的 RKE2 集群
新集群创建时的配置
在每个节点上首次启动 rke2-server、rke2-agent 服务之前,应在每个节点的RKE2或K3s配置文件中定义所需的 kubelet 配置参数,例如:
kubelet-arg: |
现有集群修改配置
您可以按照Kubernetes CPU 管理器策略文档中概述的过程,在集群中的每个节点上执行配置更新:
驱逐节点
停止 RKE2 进程:
在 RKE2 服务器节点上运行
systemctl stop rke2-server和rke2-killall.sh在 RKE2 工作节点上运行
systemctl stop rke2-agent和rke2-killall.sh
删除 CPU 管理器状态文件:
rm -rf /var/lib/kubelet/cpu_manager_state在节点上的 RKE2 配置文件中定义所需的 kubelet 标志 ,例如:
kubelet-arg:
- cpu-manager-policy=static
- system-reserved=cpu=1,memory=1548Mi,ephemeral-storage=30Gi启动 RKE2 服务:
在 RKE2 服务器节点上运行
systemctl start rke2-server在 RKE2 代理节点上运行
systemctl start rke2-agent

