3.11. 使用 Multiarch Tuning Operator 管理多架构集群中的工作负载
Multiarch Tuning Operator 在多架构集群中优化工作负载管理,以及在到多架构环境的单架构集群中进行工作负载管理。
通过架构感知的工作负载调度,调度程序可以将 pod 放置到与 pod 镜像架构匹配的节点上。
默认情况下,调度程序不会在决定新 pod 放置到节点上时考虑 pod 容器镜像的架构。
要启用架构感知工作负载调度,您必须创建 ClusterPodPlacementConfig
对象。在创建 ClusterPodPlacementConfig
对象时,Multiarch Tuning Operator 会部署必要的操作对象来支持架构感知的工作负载调度。
创建 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。
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.v1.0.0
运行以下命令来创建
Subscription
对象:$ oc create -f <file_name> 1
- 1
- 将
<file_name>
替换为包含Subscription
对象配置的 YAML 文件的名称。
有关配置 Subscription
对象和 OperatorGroup
对象的详情,请参阅"使用 CLI 安装 OperatorHub"。
验证
要验证是否安装了 Multiarch Tuning Operator,请运行以下命令:
$ oc get csv -n openshift-multiarch-tuning-operator
输出示例
NAME DISPLAY VERSION REPLACES PHASE multiarch-tuning-operator.v1.0.0 Multiarch Tuning Operator 1.0.0 multiarch-tuning-operator.v0.9.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
3.11.2. 使用 Web 控制台安装 Multiarch Tuning Operator
您可以使用 OpenShift Container Platform Web 控制台安装 Multiarch Tuning Operator。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
进入到 Operators
OperatorHub。 - 在搜索字段中输入 Multiarch Tuning Operator。
- 点 Multiarch Tuning Operator。
- 从 Version 列表中选择 Multiarch Tuning Operator 版本。
- 点 Install
在 Operator 安装页面中设置以下选项 :
- 将 更新频道 设置为 stable。
- 将 Installation Mode 设置为 All namespaces on the cluster。
将 Installed Namespace 设置为 Operator recommended Namespace 或 Select a Namespace。
推荐的 Operator 命名空间是
openshift-multiarch-tuning-operator
。如果openshift-multiarch-tuning-operator
命名空间不存在,它会在 Operator 安装过程中创建。如果选择 Select a namespace,则必须从 Select Project 列表中选择 Operator 的命名空间。
将 Update approval 设置为 Automatic 或 Manual。
如果选择 Automatic 更新,Operator Lifecycle Manager (OLM) 将自动更新 Multiarch Tuning Operator 的运行实例,而无需任何干预。
如果选择 手动 更新,OLM 会创建一个更新请求。作为集群管理员,您必须手动批准更新请求,才能将 Multiarch Tuning Operator 更新至更新的版本。
- 可选:选择 Enable Operator recommended cluster monitoring on this Namespace 复选框。
- 点 Install。
验证
-
导航到 Operators
Installed Operators。 -
验证 Multiarch Tuning Operator 是否已列出,Status 字段在
openshift-multiarch-tuning-operator
命名空间中为 Succeeded。
3.11.3. Multiarch Tuning Operator pod 标签和构架支持概述
安装 Multiarch Tuning Operator 后,您可以验证集群中工作负载的多架构支持。您可以使用 pod 标签根据其架构兼容性来识别和管理 pod。这些标签会在新创建的 pod 上自动设置,以深入了解其架构支持。
下表描述了创建 pod 时 Multiarch Tuning Operator 添加的标签:
标签 | 描述 |
---|---|
| pod 支持多种架构。 |
| pod 只支持单架构。 |
|
pod 支持 |
|
pod 支持 |
|
pod 支持 |
|
pod 支持 |
| Operator 已为架构设置了节点关联性要求。 |
| Operator 没有设置节点关联性要求。例如,当 pod 已具有架构的节点关联性时,Multiarch Tuning Operator 会将此标签添加到 pod。 |
| pod 使用门功能。 |
| pod 门被删除。 |
| 构建节点关联性要求时出错。 |
3.11.4. 创建 ClusterPodPlacementConfig 对象
安装 Multiarch Tuning Operator 后,您必须创建 ClusterPodPlacementConfig
对象。在创建此对象时,Multiarch Tuning Operator 会部署一个操作对象,以启用架构感知的工作负载调度。
您只能创建 ClusterPodPlacementConfig
对象的一个实例。
ClusterPodPlacementConfig
对象配置示例
apiVersion: multiarch.openshift.io/v1beta1 kind: ClusterPodPlacementConfig metadata: name: cluster 1 spec: logVerbosityLevel: Normal 2 namespaceSelector: 3 matchExpressions: - key: multiarch.openshift.io/exclude-pod-placement operator: DoesNotExist
在本例中,operator
字段值设置为 DoesNotExist
。因此,如果将 key
字段值 (multiarch.openshift.io/exclude-pod-placement
) 设置为命名空间中的标签,则操作对象不会处理该命名空间中 pod 的 nodeAffinity
。相反,操作对象处理没有包含该标签的命名空间中 pod 的 nodeAffinity
。
如果您希望操作对象只处理特定命名空间中的 pod 的 nodeAffinity
,您可以配置 namespaceSelector
,如下所示:
namespaceSelector: matchExpressions: - key: multiarch.openshift.io/include-pod-placement operator: Exists
在本例中,operator
字段值设置为 Exists
。因此,操作对象仅在包含 multiarch.openshift.io/include-pod-placement
标签的命名空间中处理 pod 的 nodeAffinity
。
此 Operator 排除以 kube-
开始的命名空间中的 pod。它还排除要在 control plane 节点上调度的 pod。
3.11.4.1. 使用 CLI 创建 ClusterPodPlacementConfig 对象
要部署启用架构感知工作负载调度的 pod 放置操作对象,您可以使用 OpenShift CLI (oc
) 创建 ClusterPodPlacementConfig
对象。
先决条件
-
已安装
oc
。 -
已以具有
cluster-admin
权限的用户身份登录oc
。 - 已安装 Multiarch Tuning Operator。
流程
创建
ClusterPodPlacementConfig
对象 YAML 文件:ClusterPodPlacementConfig
对象配置示例apiVersion: multiarch.openshift.io/v1beta1 kind: ClusterPodPlacementConfig metadata: name: cluster spec: logVerbosityLevel: Normal namespaceSelector: matchExpressions: - key: multiarch.openshift.io/exclude-pod-placement operator: DoesNotExist
运行以下命令来创建
ClusterPodPlacementConfig
对象:$ oc create -f <file_name> 1
- 1
- 将
<file_name>
替换为ClusterPodPlacementConfig
对象 YAML 文件的名称。
验证
要检查
ClusterPodPlacementConfig
对象是否已创建,请运行以下命令:$ oc get clusterpodplacementconfig
输出示例
NAME AGE cluster 29s
3.11.4.2. 使用 Web 控制台创建 ClusterPodPlacementConfig 对象
要部署启用架构感知工作负载调度的 pod 放置操作对象,您可以使用 OpenShift Container Platform Web 控制台创建 ClusterPodPlacementConfig
对象。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
- 已安装 Multiarch Tuning Operator。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
导航到 Operators
Installed Operators。 - 在 Installed Operators 页面中,点 Multiarch Tuning Operator。
- 点 Cluster Pod Placement Config 选项卡。
- 选择 Form view 或 YAML view。
-
配置
ClusterPodPlacementConfig
对象参数。 - 点 Create。
可选:如果要编辑
ClusterPodPlacementConfig
对象,请执行以下操作:- 点 Cluster Pod Placement Config 选项卡。
- 从选项菜单中选择 Edit ClusterPodPlacementConfig。
-
点 YAML 并编辑
ClusterPodPlacementConfig
对象参数。 - 点击 Save。
验证
-
在 Cluster Pod Placement Config 页面中,检查
ClusterPodPlacementConfig
对象是否处于Ready
状态。
3.11.5. 使用 CLI 删除 ClusterPodPlacementConfig 对象
您只能创建 ClusterPodPlacementConfig
对象的一个实例。如果要重新创建此对象,您必须首先删除现有的实例。
您可以使用 OpenShift CLI (oc
)删除此对象。
先决条件
-
已安装
oc
。 -
已以具有
cluster-admin
权限的用户身份登录oc
。
流程
-
登录 OpenShift CLI (
oc
)。 运行以下命令来删除
ClusterPodPlacementConfig
对象:$ oc delete clusterpodplacementconfig cluster
验证
要检查
ClusterPodPlacementConfig
对象是否已删除,请运行以下命令:$ oc get clusterpodplacementconfig
输出示例
No resources found
3.11.6. 使用 Web 控制台删除 ClusterPodPlacementConfig 对象
您只能创建 ClusterPodPlacementConfig
对象的一个实例。如果要重新创建此对象,您必须首先删除现有的实例。
您可以使用 OpenShift Container Platform Web 控制台删除此对象。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 - 访问 OpenShift Container Platform web 控制台。
-
您已创建了
ClusterPodPlacementConfig
对象。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
导航到 Operators
Installed Operators。 - 在 Installed Operators 页面中,点 Multiarch Tuning Operator。
- 点 Cluster Pod Placement Config 选项卡。
- 从选项菜单中选择 Delete ClusterPodPlacementConfig。
- 点击 Delete。
验证
-
在 Cluster Pod Placement Config 页面中,检查
ClusterPodPlacementConfig
对象是否已删除。
3.11.7. 使用 CLI 卸载 Multiarch Tuning Operator
您可以使用 OpenShift CLI (oc
)卸载 Multiarch Tuning Operator。
先决条件
-
已安装
oc
。 -
已以具有
cluster-admin
权限的用户身份登录oc
。 已删除
ClusterPodPlacementConfig
对象。重要在卸载 Multiarch Tuning Operator 前,您必须删除
ClusterPodPlacementConfig
对象。在不删除ClusterPodPlacementConfig
对象的情况下卸载 Operator 可能会导致意外行为。
流程
运行以下命令,获取 Multiarch Tuning Operator 的
Subscription
对象名称:$ oc get subscription.operators.coreos.com -n <namespace> 1
- 1
- 将
<namespace>
替换为您要卸载 Multiarch Tuning Operator 的命名空间的名称。
输出示例
NAME PACKAGE SOURCE CHANNEL openshift-multiarch-tuning-operator multiarch-tuning-operator redhat-operators stable
运行以下命令,获取 Multiarch Tuning Operator 的
currentCSV
值:$ oc get subscription.operators.coreos.com <subscription_name> -n <namespace> -o yaml | grep currentCSV 1
- 1
- 将
<subscription_name>
替换为Subscription
对象名称。例如:openshift-multiarch-tuning-operator
。将<namespace>
替换为您要卸载 Multiarch Tuning Operator 的命名空间的名称。
输出示例
currentCSV: multiarch-tuning-operator.v1.0.0
运行以下命令来删除
Subscription
对象:$ oc delete subscription.operators.coreos.com <subscription_name> -n <namespace> 1
- 1
- 将
<subscription_name>
替换为Subscription
对象名称。将<namespace>
替换为您要卸载 Multiarch Tuning Operator 的命名空间的名称。
输出示例
subscription.operators.coreos.com "openshift-multiarch-tuning-operator" deleted
运行以下命令,使用
currentCSV
值删除目标命名空间中 Multiarch Tuning Operator 的 CSV:$ oc delete clusterserviceversion <currentCSV_value> -n <namespace> 1
- 1
- 将
<currentCSV>
替换为 Multiarch Tuning Operator 的currentCSV
值。例如:multiarch-tuning-operator.v1.0.0
。将<namespace>
替换为您要卸载 Multiarch Tuning Operator 的命名空间的名称。
输出示例
clusterserviceversion.operators.coreos.com "multiarch-tuning-operator.v1.0.0" deleted
验证
要验证 Multiarch Tuning Operator 是否已卸载,请运行以下命令:
$ oc get csv -n <namespace> 1
- 1
- 将
<namespace>
替换为已卸载 Multiarch Tuning Operator 的命名空间的名称。
输出示例
No resources found in openshift-multiarch-tuning-operator namespace.
3.11.8. 使用 Web 控制台卸载 Multiarch Tuning Operator
您可以使用 OpenShift Container Platform Web 控制台卸载 Multiarch Tuning Operator。
先决条件
-
您可以使用
cluster-admin
权限访问集群。 已删除
ClusterPodPlacementConfig
对象。重要在卸载 Multiarch Tuning Operator 前,您必须删除
ClusterPodPlacementConfig
对象。在不删除ClusterPodPlacementConfig
对象的情况下卸载 Operator 可能会导致意外行为。
流程
- 登陆到 OpenShift Container Platform Web 控制台。
-
进入到 Operators
OperatorHub。 - 在搜索字段中输入 Multiarch Tuning Operator。
- 点 Multiarch Tuning Operator。
- 点 Details 标签页。
- 在 Actions 菜单中,选择 Uninstall Operator。
- 出现提示时,点 Uninstall。
验证
-
导航到 Operators
Installed Operators。 - 在 Installed Operators 页面中,验证 Multiarch Tuning Operator 没有被列出。