3.11. 使用 Multiarch Tuning Operator 管理多架构集群中的工作负载


Multiarch Tuning Operator 在多架构集群中优化工作负载管理,以及在到多架构环境的单架构集群中进行工作负载管理。

通过架构感知的工作负载调度,调度程序可以将 pod 放置到与 pod 镜像架构匹配的节点上。

默认情况下,调度程序不会在决定新 pod 放置到节点上时考虑 pod 容器镜像的架构。

要启用架构感知工作负载调度,您必须创建 ClusterPodPlacementConfig 对象。在创建 ClusterPodPlacementConfig 对象时,Multiarch Tuning Operator 会部署必要的操作对象来支持架构感知的工作负载调度。

创建 pod 时,操作对象执行以下操作:

  1. 添加 multiarch.openshift.io/scheduling-gate 调度门,以防止调度 pod。
  2. 计算一个调度 predicate,其中包含 kubernetes.io/arch 标签支持的架构值。
  3. 将调度 predicate 集成为 pod 规格中的 nodeAffinity 要求。
  4. 从 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

流程

  1. 运行以下命令,创建一个名为 openshift-multiarch-tuning-operator 的新项目:

    $ oc create ns openshift-multiarch-tuning-operator
  2. 创建一个 OperatorGroup 对象:

    1. 使用用于创建 OperatorGroup 对象的配置创建 YAML 文件。

      创建 OperatorGroup 对象的 YAML 配置示例:

      apiVersion: operators.coreos.com/v1
      kind: OperatorGroup
      metadata:
        name: openshift-multiarch-tuning-operator
        namespace: openshift-multiarch-tuning-operator
      spec: {}

    2. 运行以下命令来创建 OperatorGroup 对象:

      $ oc create -f <file_name> 1
      1
      <file_name> 替换为包含 OperatorGroup 对象配置的 YAML 文件的名称。
  3. 创建 Subscription 对象:

    1. 使用用于创建 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

    2. 运行以下命令来创建 Subscription 对象:

      $ oc create -f <file_name> 1
      1
      <file_name> 替换为包含 Subscription 对象配置的 YAML 文件的名称。
注意

有关配置 Subscription 对象和 OperatorGroup 对象的详情,请参阅"使用 CLI 安装 OperatorHub"。

验证

  1. 要验证是否安装了 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 阶段,则安装可以成功。

  2. 可选:要验证是否创建了 OperatorGroup 对象,请运行以下命令:

    $ oc get operatorgroup -n openshift-multiarch-tuning-operator

    输出示例

    NAME                                        AGE
    openshift-multiarch-tuning-operator-q8zbb   133m

  3. 可选:要验证是否已创建 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 控制台。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 进入到 Operators OperatorHub
  3. 在搜索字段中输入 Multiarch Tuning Operator
  4. Multiarch Tuning Operator
  5. Version 列表中选择 Multiarch Tuning Operator 版本。
  6. Install
  7. Operator 安装页面中设置以下选项 :

    1. 更新频道 设置为 stable
    2. Installation Mode 设置为 All namespaces on the cluster
    3. Installed Namespace 设置为 Operator recommended NamespaceSelect a Namespace

      推荐的 Operator 命名空间是 openshift-multiarch-tuning-operator。如果 openshift-multiarch-tuning-operator 命名空间不存在,它会在 Operator 安装过程中创建。

      如果选择 Select a namespace,则必须从 Select Project 列表中选择 Operator 的命名空间。

    4. Update approval 设置为 AutomaticManual

      如果选择 Automatic 更新,Operator Lifecycle Manager (OLM) 将自动更新 Multiarch Tuning Operator 的运行实例,而无需任何干预。

      如果选择 手动 更新,OLM 会创建一个更新请求。作为集群管理员,您必须手动批准更新请求,才能将 Multiarch Tuning Operator 更新至更新的版本。

  8. 可选:选择 Enable Operator recommended cluster monitoring on this Namespace 复选框。
  9. Install

验证

  1. 导航到 Operators Installed Operators
  2. 验证 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 添加的标签:

表 3.2. 创建 pod 时 Multiarch Tuning Operator 的 Pod 标签
标签描述

multiarch.openshift.io/multi-arch: ""

pod 支持多种架构。

multiarch.openshift.io/single-arch: ""

pod 只支持单架构。

multiarch.openshift.io/arm64: ""

pod 支持 arm64 架构。

multiarch.openshift.io/amd64: ""

pod 支持 amd64 架构。

multiarch.openshift.io/ppc64le: ""

pod 支持 ppc64le 架构。

multiarch.openshift.io/s390x: ""

pod 支持 s390x 架构。

multirach.openshift.io/node-affinity: set

Operator 已为架构设置了节点关联性要求。

multirach.openshift.io/node-affinity: not-set

Operator 没有设置节点关联性要求。例如,当 pod 已具有架构的节点关联性时,Multiarch Tuning Operator 会将此标签添加到 pod。

multiarch.openshift.io/scheduling-gate: gated

pod 使用门功能。

multiarch.openshift.io/scheduling-gate: removed

pod 门被删除。

multiarch.openshift.io/inspection-error: ""

构建节点关联性要求时出错。

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

1
您必须将此字段值设置为 cluster
2
可选: 您可以将字段值设置为 Normal,Debug,Trace, 或 TraceAll。该值默认设置为 Normal
3
可选: 您可以配置 namespaceSelector 来选择 Multiarch Tuning Operator 的 pod 放置操作对象必须处理 pod 的 nodeAffinity 的命名空间。默认情况下,考虑所有命名空间。

在本例中,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。

流程

  1. 创建 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

  2. 运行以下命令来创建 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。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 导航到 Operators Installed Operators
  3. Installed Operators 页面中,点 Multiarch Tuning Operator
  4. Cluster Pod Placement Config 选项卡。
  5. 选择 Form viewYAML view
  6. 配置 ClusterPodPlacementConfig 对象参数。
  7. Create
  8. 可选:如果要编辑 ClusterPodPlacementConfig 对象,请执行以下操作:

    1. Cluster Pod Placement Config 选项卡。
    2. 从选项菜单中选择 Edit ClusterPodPlacementConfig
    3. YAML 并编辑 ClusterPodPlacementConfig 对象参数。
    4. 点击 Save

验证

  • Cluster Pod Placement Config 页面中,检查 ClusterPodPlacementConfig 对象是否处于 Ready 状态。

3.11.5. 使用 CLI 删除 ClusterPodPlacementConfig 对象

您只能创建 ClusterPodPlacementConfig 对象的一个实例。如果要重新创建此对象,您必须首先删除现有的实例。

您可以使用 OpenShift CLI (oc)删除此对象。

先决条件

  • 已安装 oc
  • 已以具有 cluster-admin 权限的用户身份登录 oc

流程

  1. 登录 OpenShift CLI (oc)。
  2. 运行以下命令来删除 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 对象。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 导航到 Operators Installed Operators
  3. Installed Operators 页面中,点 Multiarch Tuning Operator
  4. Cluster Pod Placement Config 选项卡。
  5. 从选项菜单中选择 Delete ClusterPodPlacementConfig
  6. 点击 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 可能会导致意外行为。

流程

  1. 运行以下命令,获取 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

  2. 运行以下命令,获取 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

  3. 运行以下命令来删除 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

  4. 运行以下命令,使用 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 可能会导致意外行为。

流程

  1. 登陆到 OpenShift Container Platform Web 控制台。
  2. 进入到 Operators OperatorHub
  3. 在搜索字段中输入 Multiarch Tuning Operator
  4. Multiarch Tuning Operator
  5. Details 标签页。
  6. Actions 菜单中,选择 Uninstall Operator
  7. 出现提示时,点 Uninstall

验证

  1. 导航到 Operators Installed Operators
  2. Installed Operators 页面中,验证 Multiarch Tuning Operator 没有被列出。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.