×

要创建具有多架构计算机的 AWS 集群,您必须首先使用多架构安装程序二进制文件创建一个单架构 AWS 安装程序预配集群。有关 AWS 安装的更多信息,请参阅 使用自定义设置在 AWS 上安装集群

您还可以将当前具有单架构计算机的集群迁移到具有多架构计算机的集群。有关更多信息,请参阅 迁移到具有多架构计算机的集群

创建多架构集群后,您可以向集群添加具有不同架构的节点。

验证集群兼容性

在开始向集群添加不同架构的计算节点之前,必须验证集群是否与多架构兼容。

先决条件
  • 您已安装 OpenShift CLI (oc)。

步骤
  1. 登录到 OpenShift CLI (oc)。

  2. 您可以通过运行以下命令来检查集群是否使用架构有效负载

    $ oc adm release info -o jsonpath="{ .metadata.metadata}"
验证
  • 如果您看到以下输出,则您的集群正在使用多架构有效负载

    {
     "release.openshift.io/architecture": "multi",
     "url": "https://access.redhat.com/errata/<errata_version>"
    }

    然后您可以开始向集群添加多架构计算节点。

  • 如果看到以下输出,则您的集群未使用多架构有效负载。

    {
     "url": "https://access.redhat.com/errata/<errata_version>"
    }

    要迁移集群以使其支持多架构计算机器,请按照迁移到具有多架构计算机器的集群中的步骤操作。

向您的 AWS 集群添加多架构计算机器集

创建多架构集群后,您可以添加具有不同架构的节点。

您可以通过以下方式向多架构集群添加多架构计算机器

  • 向使用 64 位 ARM 控制平面机器并已包含 64 位 ARM 计算机器的集群添加 64 位 x86 计算机器。在这种情况下,64 位 x86 被视为辅助架构。

  • 向使用 64 位 x86 控制平面机器并已包含 64 位 x86 计算机器的集群添加 64 位 ARM 计算机器。在这种情况下,64 位 ARM 被视为辅助架构。

在向集群添加辅助架构节点之前,建议安装 Multiarch Tuning Operator 并部署ClusterPodPlacementConfig自定义资源。有关更多信息,请参阅“使用 Multiarch Tuning Operator 管理多架构集群上的工作负载”。

先决条件
  • 您已安装 OpenShift CLI (oc)。

  • 您使用安装程序使用多架构安装程序二进制文件创建了 64 位 ARM 或 64 位 x86 单架构 AWS 集群。

步骤
  1. 登录到 OpenShift CLI (oc)。

  2. 创建一个 YAML 文件,并添加配置以创建计算机器集来控制集群中的 64 位 ARM 或 64 位 x86 计算节点。

    AWS 64 位 ARM 或 x86 计算节点的示例MachineSet对象
    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
      name: <infrastructure_id>-aws-machine-set-0 (1)
      namespace: openshift-machine-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
          machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone> (2)
      template:
        metadata:
          labels:
            machine.openshift.io/cluster-api-cluster: <infrastructure_id>
            machine.openshift.io/cluster-api-machine-role: <role> (3)
            machine.openshift.io/cluster-api-machine-type: <role> (3)
            machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone> (2)
        spec:
          metadata:
            labels:
              node-role.kubernetes.io/<role>: ""
          providerSpec:
            value:
              ami:
                id: ami-02a574449d4f4d280 (4)
              apiVersion: awsproviderconfig.openshift.io/v1beta1
              blockDevices:
                - ebs:
                    iops: 0
                    volumeSize: 120
                    volumeType: gp2
              credentialsSecret:
                name: aws-cloud-credentials
              deviceIndex: 0
              iamInstanceProfile:
                id: <infrastructure_id>-worker-profile (1)
              instanceType: m6g.xlarge (5)
              kind: AWSMachineProviderConfig
              placement:
                availabilityZone: us-east-1a (6)
                region: <region> (7)
              securityGroups:
                - filters:
                    - name: tag:Name
                      values:
                        - <infrastructure_id>-worker-sg (1)
              subnet:
                filters:
                  - name: tag:Name
                    values:
                      - <infrastructure_id>-private-<zone>
              tags:
                - name: kubernetes.io/cluster/<infrastructure_id> (1)
                  value: owned
                - name: <custom_tag_name>
                  value: <custom_tag_value>
              userDataSecret:
                name: worker-user-data
    1 指定基于您在配置集群时设置的集群 ID 的基础架构 ID。如果您安装了 OpenShift CLI (oc),则可以通过运行以下命令获取基础架构 ID
    $ oc get -o jsonpath={.status.infrastructureName}{\n}’ infrastructure cluster
    2 指定基础架构 ID、角色节点标签和区域。
    3 指定要添加的角色节点标签。
    4 为您的 AWS 区域中的节点指定 Red Hat Enterprise Linux CoreOS (RHCOS) Amazon 机器映像 (AMI)。RHCOS AMI 必须与机器架构兼容。
    $ oc get configmap/coreos-bootimages \
    	  -n openshift-machine-config-operator \
    	  -o jsonpath='{.data.stream}' | jq \
    	  -r '.architectures.<arch>.images.aws.regions."<region>".image'
    5 指定与所选 AMI 的 CPU 架构一致的机器类型。有关更多信息,请参阅“AWS 64 位 ARM 的测试实例类型”。
    6 指定区域。例如,us-east-1a。确保您选择的区域具有具有所需架构的机器。
    7 指定区域。例如,us-east-1。确保您选择的区域具有具有所需架构的机器。
  3. 运行以下命令创建计算机器集

    $ oc create -f <file_name> (1)
    1 <file_name>替换为包含计算机器集配置的 YAML 文件的名称。例如:aws-arm64-machine-set-0.yamlaws-amd64-machine-set-0.yaml
验证
  1. 运行以下命令查看计算机器集列表

    $ oc get machineset -n openshift-machine-api

    输出必须包含您创建的机器集。

    示例输出
    NAME                                                DESIRED  CURRENT  READY  AVAILABLE  AGE
    <infrastructure_id>-aws-machine-set-0                   2        2      2          2  10m
  2. 您可以通过运行以下命令检查节点是否已准备好并可调度

    $ oc get nodes