×

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

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

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

目前,GCP 上的 64 位 ARM 机器不支持安全启动

验证集群兼容性

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

先决条件
  • 您已安装 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>"
    }

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

将多架构计算机器集添加到您的 GCP 集群

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

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

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

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

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

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

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

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

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

    GCP 64 位 ARM 或 64 位 x86 计算节点的示例MachineSet对象
    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id> (1)
      name: <infrastructure_id>-w-a
      namespace: openshift-machine-api
    spec:
      replicas: 1
      selector:
        matchLabels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id>
          machine.openshift.io/cluster-api-machineset: <infrastructure_id>-w-a
      template:
        metadata:
          creationTimestamp: null
          labels:
            machine.openshift.io/cluster-api-cluster: <infrastructure_id>
            machine.openshift.io/cluster-api-machine-role: <role> (2)
            machine.openshift.io/cluster-api-machine-type: <role>
            machine.openshift.io/cluster-api-machineset: <infrastructure_id>-w-a
        spec:
          metadata:
            labels:
              node-role.kubernetes.io/<role>: ""
          providerSpec:
            value:
              apiVersion: gcpprovider.openshift.io/v1beta1
              canIPForward: false
              credentialsSecret:
                name: gcp-cloud-credentials
              deletionProtection: false
              disks:
              - autoDelete: true
                boot: true
                image: <path_to_image> (3)
                labels: null
                sizeGb: 128
                type: pd-ssd
              gcpMetadata: (4)
              - key: <custom_metadata_key>
                value: <custom_metadata_value>
              kind: GCPMachineProviderSpec
              machineType: n1-standard-4 (5)
              metadata:
                creationTimestamp: null
              networkInterfaces:
              - network: <infrastructure_id>-network
                subnetwork: <infrastructure_id>-worker-subnet
              projectID: <project_name> (6)
              region: us-central1 (7)
              serviceAccounts:
              - email: <infrastructure_id>-w@<project_name>.iam.gserviceaccount.com
                scopes:
                - https://www.googleapis.com/auth/cloud-platform
              tags:
                - <infrastructure_id>-worker
              userDataSecret:
                name: worker-user-data
              zone: us-central1-a
    1 指定基于您在预配集群时设置的集群 ID 的基础架构 ID。您可以运行以下命令获取基础架构 ID:
    $ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
    2 指定要添加的角色节点标签。
    3 指定当前计算机器集中使用的镜像的路径。您需要项目的名称和镜像名称才能构建镜像路径。

    要访问项目和镜像名称,请运行以下命令:

    $ oc get configmap/coreos-bootimages \
      -n openshift-machine-config-operator \
      -o jsonpath='{.data.stream}' | jq \
      -r '.architectures.aarch64.images.gcp'
    示例输出
      "gcp": {
        "release": "415.92.202309142014-0",
        "project": "rhcos-cloud",
        "name": "rhcos-415-92-202309142014-0-gcp-aarch64"
      }

    使用输出中的projectname参数在您的机器集中创建镜像路径字段。镜像路径应遵循以下格式:

    $ projects/<project>/global/images/<image_name>
    4 可选:以键值对的形式指定自定义元数据。有关用例示例,请参阅 GCP 关于设置自定义元数据的文档。
    5 指定与所选操作系统镜像的 CPU 架构一致的机器类型。更多信息,请参见“64 位 ARM 基础架构上 GCP 的已测试实例类型”。
    6 指定您用于集群的 GCP 项目的名称。
    7 指定区域。例如,us-central1。确保您选择的区域拥有具有所需架构的机器。
  3. 运行以下命令创建计算机器集:

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

    $ oc get machineset -n openshift-machine-api

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

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

    $ oc get nodes