12.5. 配置单个 NUMA 节点策略
NUMA Resources Operator 要求在集群中配置单个 NUMA 节点策略。这可以通过创建并应用性能配置集或配置 KubeletConfig 来实现。
配置单个 NUMA 节点策略的首选方法是应用性能配置集。您可以使用 Performance Profile Creator (PPC) 工具来创建性能配置集。如果在集群中创建了性能配置集,它会自动创建 KubeletConfig
和 tuned
配置集等其他调优组件。
有关创建性能配置集的更多信息,请参阅"添加资源"部分中的"关于 Performance Profile Creator"。
12.5.1. 为 NUMA 感知调度程序管理高可用性(HA) 复制链接链接已复制到粘贴板!
管理高可用性只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
NUMA Resources Operator 根据 NUMAResourcesScheduler
自定义资源(CR)中的 spec.replicas
字段管理 NUMA 感知二级调度程序的高可用性。默认情况下,NUMA Resources Operator 会自动为每个 control plane 节点创建一个调度程序副本来启用 HA 模式,最多有三个副本。
以下清单演示了这种默认行为。要自动启用副本检测,请省略 replicas
字段。
您可以使用以下选项之一控制调度程序行为:
- 自定义副本数量。
- 禁用 NUMA 感知调度。
12.5.1.1. 自定义调度程序副本 复制链接链接已复制到粘贴板!
通过更新 NUMAResourcesScheduler
自定义资源中的 spec.replicas
字段来设置特定数量的调度程序副本。这会覆盖默认的 HA 行为。
流程
使用以下 YAML 创建
NUMAResourcesScheduler
CR,如custom-ha.yaml
,将副本数设置为 2:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令部署 NUMA 感知 pod 调度程序:
oc apply -f custom-ha.yaml
$ oc apply -f custom-ha.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.1.2. 禁用 NUMA 感知调度 复制链接链接已复制到粘贴板!
禁用 NUMA 感知调度程序,停止所有正在运行的调度程序 pod,并防止新调度程序启动。
流程
在
nro-disable-scheduler.yaml
文件中保存以下最小所需的 YAML。通过将spec.replicas
字段设置为0
来禁用调度程序。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令禁用 NUMA 感知 pod 调度程序:
oc apply -f nro-disable-scheduler.yaml
$ oc apply -f nro-disable-scheduler.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.1.3. 验证调度程序高可用性(HA)状态 复制链接链接已复制到粘贴板!
验证 NUMA 感知调度程序的状态,以确保它根据您的配置使用预期的副本数。
流程
运行以下命令仅列出调度程序 pod:
oc get pods -n openshift-numaresources -l app=secondary-scheduler
$ oc get pods -n openshift-numaresources -l app=secondary-scheduler
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 预期输出
使用默认 HA 模式,pod 数量等于 control-plane 节点的数量。标准 HA OpenShift Container Platform 集群通常有三个 control-plane 节点,因此显示三个 pod:
NAME READY STATUS RESTARTS AGE secondary-scheduler-5b8c9d479d-2r4p5 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-k2f3p 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-q8c7b 1/1 Running 0 5m
NAME READY STATUS RESTARTS AGE secondary-scheduler-5b8c9d479d-2r4p5 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-k2f3p 1/1 Running 0 5m secondary-scheduler-5b8c9d479d-q8c7b 1/1 Running 0 5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果 自定义副本,则 pod 的数量与您设置的值匹配。
如果您禁用了调度程序, 则没有正在运行的带有此标签的 pod。
注意对 NUMA 感知调度程序强制执行 3 个副本的限制。在托管的 control plane 集群中,调度程序 pod 在 hosted-cluster 的 worker 节点上运行。
运行以下命令,验证副本数及其状态:
oc get deployment secondary-scheduler -n openshift-numaresources
$ oc get deployment secondary-scheduler -n openshift-numaresources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY UP-TO-DATE AVAILABLE AGE secondary-scheduler 3/3 3 3 5m
NAME READY UP-TO-DATE AVAILABLE AGE secondary-scheduler 3/3 3 3 5m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个输出中,3/3 表示 3 个副本已经从预期的 3 个副本中就绪。
如需更详细的信息,请运行以下命令:
oc describe deployment secondary-scheduler -n openshift-numaresources
$ oc describe deployment secondary-scheduler -n openshift-numaresources
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Replicas
行显示为 3 个副本配置的部署,所有 3 个更新且可用。Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
Replicas: 3 desired | 3 updated | 3 total | 3 available | 0 unavailable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.2. 性能配置集示例 复制链接链接已复制到粘贴板!
此 YAML 示例显示使用性能配置集创建器(PPC) 工具创建的性能配置集:
- 1
- 这个值需要与您要配置 NUMA Resources Operator 的
MachineConfigPool
值匹配。例如,您可以创建一个名为worker-cnf
的MachineConfigPool
对象,它指定电信工作负载在其中运行的一组节点。MachineConfigPool
的值必须与稍后在"创建 NUMAResourcesOperator 自定义资源"中配置的NUMAResourcesOperator
CR 中的machineConfigPoolSelector
值匹配。 - 2
- 确保
topologyPolicy
字段被设置为single-numa-node
,方法是在运行 PPC 工具时将topology-manager-policy
参数设置为single-numa-node
。注意对于托管的 control plane 集群,
MachineConfigPoolSelector
并没有任何功能上的效果。节点关联由特定的NodePool
对象决定。
12.5.3. 创建 KubeletConfig CR 复制链接链接已复制到粘贴板!
配置单个 NUMA 节点策略的建议方法是应用性能配置集。另一种方法是创建并应用 KubeletConfig
自定义资源 (CR),如下所示。
流程
创建
KubeletConfig
自定义资源 (CR) 来为机器配置集配置 pod admittance 策略:将以下 YAML 保存到
nro-kubeletconfig.yaml
文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于托管的 control plane 集群,
MachineConfigPoolSelector
设置并没有任何功能上的效果。节点关联由特定的NodePool
对象决定。要为托管的 control plane 集群应用KubeletConfig
,您必须创建一个包含配置的ConfigMap
,然后在NodePool
的spec.config
字段中引用该ConfigMap
。运行以下命令来创建
KubeletConfig
CR:oc create -f nro-kubeletconfig.yaml
$ oc create -f nro-kubeletconfig.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意应用性能配置集或
KubeletConfig
会自动触发节点重新引导。如果没有触发重启,您可以通过查看处理节点组的KubeletConfig
中的标签来排除此问题。