6.3. 调度 NUMA 感知工作负载
运行对延迟敏感工作负载的集群通常具有性能配置集,以帮助最小化工作负载延迟并优化性能。NUMA 感知调度程序根据可用的节点 NUMA 资源部署工作负载,并遵循应用到节点的任何性能配置集设置。NUMA 感知部署和工作负载的性能配置集相结合,确保以最大化性能的方式调度工作负载。
6.3.1. 创建 NUMAResourcesOperator 自定义资源 复制链接链接已复制到粘贴板!
安装 NUMA Resources Operator 后,创建 NUMAResourcesOperator 自定义资源 (CR) 来指示 NUMA Resources Operator 安装支持 NUMA 感知调度程序所需的所有集群基础架构,包括守护进程集和 API。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。 - 安装 NUMA Resources Operator。
流程
创建
MachineConfigPool自定义资源,为 worker 节点启用自定义 kubelet 配置:将以下 YAML 保存到
nro-machineconfig.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
MachineConfigPoolCR:oc create -f nro-machineconfig.yaml
$ oc create -f nro-machineconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
NUMAResourcesOperator自定义资源:将以下 YAML 保存到
nrop.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 应该与相关
MachineConfigPoolCR 中的 worker 节点匹配。
运行以下命令来创建
NUMAResourcesOperatorCR:oc create -f nrop.yaml
$ oc create -f nrop.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,验证 NUMA Resources Operator 是否已成功部署:
oc get numaresourcesoperators.nodetopology.openshift.io
$ oc get numaresourcesoperators.nodetopology.openshift.io
输出示例
NAME AGE numaresourcesoperator 10m
NAME AGE
numaresourcesoperator 10m
6.3.2. 部署 NUMA 感知辅助 pod 调度程序 复制链接链接已复制到粘贴板!
安装 NUMA Resources Operator 后,执行以下操作来部署 NUMA 感知辅助 pod 调度程序:
- 为所需机器配置集配置 pod admittance 策略
- 创建所需的机器配置池
- 部署 NUMA 感知二级调度程序
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。 - 安装 NUMA Resources Operator。
流程
创建
KubeletConfig自定义资源,为机器配置集配置 pod admittance 策略:将以下 YAML 保存到
nro-kubeletconfig.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
KubeletConfig自定义资源 (CR):oc create -f nro-kubeletconfig.yaml
$ oc create -f nro-kubeletconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
NUMAResourcesScheduler自定义资源来部署 NUMA 感知自定义 pod 调度程序:将以下 YAML 保存到
nro-scheduler.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
NUMAResourcesSchedulerCR:oc create -f nro-scheduler.yaml
$ oc create -f nro-scheduler.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证所需资源是否已成功部署:
oc get all -n openshift-numaresources
$ oc get all -n openshift-numaresources
输出示例
其他资源
6.3.3. 使用 NUMA 感知调度程序调度工作负载 复制链接链接已复制到粘贴板!
您可以使用 Deployment CR 将工作负载调度到 NUMA 感知调度程序,该 CR 指定处理工作负载的最低所需资源。
以下示例部署使用 NUMA 感知调度示例工作负载。
先决条件
-
安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin特权的用户身份登录。 - 安装 NUMA Resources Operator 并部署 NUMA 感知辅助调度程序。
流程
运行以下命令,获取集群中部署的 NUMA 感知调度程序名称:
oc get numaresourcesschedulers.nodetopology.openshift.io numaresourcesscheduler -o json | jq '.status.schedulerName'
$ oc get numaresourcesschedulers.nodetopology.openshift.io numaresourcesscheduler -o json | jq '.status.schedulerName'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
topo-aware-scheduler
topo-aware-schedulerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个
DeploymentCR,它使用名为topo-aware-scheduler的调度程序,例如:将以下 YAML 保存到
nro-deployment.yaml文件中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
schedulerName必须与集群中部署的 NUMA 感知调度程序的名称匹配,如topo-aware-scheduler。
运行以下命令来创建
DeploymentCR:oc create -f nro-deployment.yaml
$ oc create -f nro-deployment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证部署是否成功:
oc get pods -n openshift-numaresources
$ oc get pods -n openshift-numaresourcesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
topo-aware-scheduler是否在调度部署的 pod:oc describe pod numa-deployment-1-56954b7b46-pfgw8 -n openshift-numaresources
$ oc describe pod numa-deployment-1-56954b7b46-pfgw8 -n openshift-numaresourcesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 130m topo-aware-scheduler Successfully assigned openshift-numaresources/numa-deployment-1-56954b7b46-pfgw8 to compute-0.example.com
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 130m topo-aware-scheduler Successfully assigned openshift-numaresources/numa-deployment-1-56954b7b46-pfgw8 to compute-0.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意请求的资源超过可用于调度的部署将失败,并显示
MinimumReplicasUnavailable错误。当所需资源可用时,部署会成功。Pod 会一直处于Pending状态,直到所需资源可用。验证是否为节点列出了预期的分配资源。运行以下命令:
oc describe noderesourcetopologies.topology.node.k8s.io
$ oc describe noderesourcetopologies.topology.node.k8s.ioCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 由于已分配给有保证 pod 的资源,
可用的容量会减少。
通过保证 pod 使用的资源从
noderesourcetopologies.topology.node.k8s.io中列出的可用节点资源中减去。对具有
Best-effort或Burstable服务质量 (qosClass) 的pod 的资源分配不会反映在noderesourcetopologies.topology.node.k8s.io下的 NUMA 节点资源中。如果 pod 消耗的资源没有反映在节点资源计算中,请运行以下命令验证 pod 的Guaranteed具有qosClass:oc get pod <pod_name> -n <pod_namespace> -o jsonpath="{ .status.qosClass }"$ oc get pod <pod_name> -n <pod_namespace> -o jsonpath="{ .status.qosClass }"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Guaranteed
GuaranteedCopy to Clipboard Copied! Toggle word wrap Toggle overflow