3.11. 使用 Multiarch Tuning Operator 管理多架构集群中的工作负载
Multiarch Tuning Operator 在多架构集群中优化工作负载管理,以及在到多架构环境的单架构集群中进行工作负载管理。
通过架构感知的工作负载调度,调度程序可以将 pod 放置到与 pod 镜像架构匹配的节点上。
默认情况下,调度程序不会在决定新 pod 放置到节点上时考虑 pod 容器镜像的架构。
要启用架构感知工作负载调度,您必须创建 ClusterPodPlacementConfig 对象。在创建 ClusterPodPlacementConfig 对象时,Multiarch Tuning Operator 会部署必要的操作对象来支持架构感知的工作负载调度。您还可以使用 ClusterPodPlacementConfig 对象中的 nodeAffinityScoring 插件来为节点架构设置集群范围的分数。如果启用 nodeAffinityScoring 插件,调度程序首先过滤兼容架构的节点,然后将 pod 放置到分数最高的节点上。
创建 pod 时,操作对象执行以下操作:
-
添加
multiarch.openshift.io/scheduling-gate调度门,以防止调度 pod。 -
计算一个调度 predicate,其中包含
kubernetes.io/arch标签支持的架构值。 -
将调度 predicate 集成为 pod 规格中的
nodeAffinity要求。 - 从 pod 中删除调度授权。
请注意以下操作对象行为:
-
如果
nodeSelector字段已配置了工作负载的kubernetes.io/arch标签,则操作对象不会更新该工作负载的nodeAffinity字段。 -
如果
nodeSelector字段没有使用工作负载的kubernetes.io/arch标签配置,则操作对象会更新该工作负载的nodeAffinity字段。但是,在这个nodeAffinity字段中,操作对象只更新没有使用kubernetes.io/arch标签配置的节点选择器术语。 -
如果已经设置了
nodeName字段,Multiarch Tuning Operator 不会处理 pod。 -
如果 pod 归 DaemonSet 所有,则 operand 不会更新
nodeAffinity字段。 -
如果为
kubernetes.io/arch标签设置了nodeSelector或nodeAffinity和preferredAffinity字段,则 operand 不会更新nodeAffinity字段。 -
如果为
kubernetes.io/arch标签只设置了nodeSelector或nodeAffinity字段,并且禁用了nodeAffinityScoring插件,则 operand 不会更新nodeAffinity字段。 -
如果
nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution字段已包含基于kubernetes.io/arch标签的分数节点的条件,则 operand 会忽略nodeAffinityScoring插件中的配置。
3.11.1. 使用 CLI 安装 Multiarch Tuning Operator 复制链接链接已复制到粘贴板!
您可以使用 OpenShift CLI (oc)安装 Multiarch Tuning Operator。
先决条件
-
已安装
oc。 -
已以具有
cluster-admin权限的用户身份登录oc。
流程
运行以下命令,创建一个名为
openshift-multiarch-tuning-operator的新项目:$ oc create ns openshift-multiarch-tuning-operator创建一个
OperatorGroup对象:使用用于创建
OperatorGroup对象的配置创建 YAML 文件。创建
OperatorGroup对象的 YAML 配置示例:apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: name: openshift-multiarch-tuning-operator namespace: openshift-multiarch-tuning-operator spec: {}运行以下命令来创建
OperatorGroup对象:$ oc create -f <file_name>1 - 1
- 将
<file_name>替换为包含OperatorGroup对象配置的 YAML 文件的名称。
创建
Subscription对象:使用用于创建
Subscription对象的配置创建 YAML 文件。创建
Subscription对象的 YAML 配置示例apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: openshift-multiarch-tuning-operator namespace: openshift-multiarch-tuning-operator spec: channel: stable name: multiarch-tuning-operator source: redhat-operators sourceNamespace: openshift-marketplace installPlanApproval: Automatic startingCSV: multiarch-tuning-operator.<version>运行以下命令来创建
Subscription对象:$ oc create -f <file_name>1 - 1
- 将
<file_name>替换为包含Subscription对象配置的 YAML 文件的名称。
有关配置 Subscription 对象和 OperatorGroup 对象的详情,请参阅"使用 CLI 从软件目录安装"。
验证
要验证是否安装了 Multiarch Tuning Operator,请运行以下命令:
$ oc get csv -n openshift-multiarch-tuning-operator输出示例
NAME DISPLAY VERSION REPLACES PHASE multiarch-tuning-operator.<version> Multiarch Tuning Operator <version> multiarch-tuning-operator.1.0.0 Succeeded如果 Operator 处于
Succeeded阶段,则安装可以成功。可选:要验证是否创建了
OperatorGroup对象,请运行以下命令:$ oc get operatorgroup -n openshift-multiarch-tuning-operator输出示例
NAME AGE openshift-multiarch-tuning-operator-q8zbb 133m可选:要验证是否已创建
Subscription对象,请运行以下命令:$ oc get subscription -n openshift-multiarch-tuning-operator输出示例
NAME PACKAGE SOURCE CHANNEL multiarch-tuning-operator multiarch-tuning-operator redhat-operators stable