5.9.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-node 1 spec: kubeletConfig: autoSizingReserved: true 2 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.08
kubelet 使用
/etc/node-sizing.env
文件中的system-reserved
值。在上例中,worker 节点分配了0.08
CPU 和 3 Gi 内存。显示最佳值可能需要几分钟时间。