5.10.2. 自动为节点分配资源
OpenShift Container Platform 可以自动决定与特定机器配置池关联的节点的最佳 system-reserved CPU 和内存资源,并在节点启动时使用这些值更新节点。默认情况下,system-reserved CPU 为 500m,system-reserved 内存为 1Gi。
要在节点上自动决定并分配 system-reserved 资源,请创建一个 KubeletConfig 自定义资源(CR)来设置 autoSizingReserved: true 参数。各个节点上的脚本根据每个节点上安装的 CPU 和内存容量,计算相应保留资源的最佳值。该脚本考虑了增加的容量要求保留资源的相应增加。
自动确定最佳的 system-reserved 设置可确保集群高效运行,并防止因为 CRI-O 和 kubelet 等系统组件的资源丢失而出现节点故障,而无需手动计算和更新值。
此功能默认为禁用。
先决条件
输入以下命令为您要配置的节点类型获取与静态
MachineConfigPool对象关联的标签:$ oc edit machineconfigpool <name>例如:
$ oc edit machineconfigpool worker输出示例
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: creationTimestamp: "2022-11-16T15:34:25Z" generation: 4 labels: pools.operator.machineconfiguration.openshift.io/worker: ""1 name: worker ...- 1
- 标签会出现在
Labels下。
提示如果标签不存在,请添加键/值对,例如:
$ oc label machineconfigpool worker custom-kubelet=small-pods
流程
为配置更改创建自定义资源(CR):
资源分配 CR 的示例配置
apiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: dynamic-node1 spec: autoSizingReserved: true2 machineConfigPoolSelector: matchLabels: pools.operator.machineconfiguration.openshift.io/worker: ""3 前面的示例在所有 worker 节点上启用自动资源分配。OpenShift Container Platform 排空节点、应用 kubelet 配置并重启节点。
运行以下命令来创建 CR:
$ oc create -f <file_name>.yaml
验证
输入以下命令登录到您配置的节点:
$ oc debug node/<node_name>将
/host设置为 debug shell 中的根目录:# chroot /host查看
/etc/node-sizing.env文件:输出示例
SYSTEM_RESERVED_MEMORY=3Gi SYSTEM_RESERVED_CPU=0.08kubelet 使用
/etc/node-sizing.env文件中的system-reserved值。在上例中,worker 节点分配了0.08CPU 和 3 Gi 内存。显示最佳值可能需要几分钟时间。