4.2. 在 Azure 上使用多架构计算机器创建集群


要使用多架构计算机器部署 Azure 集群,您必须首先创建一个使用多架构安装程序二进制文件的单架构 Azure 安装程序置备集群。如需有关 Azure 安装的更多信息,请参阅使用自定义在 Azure 上安装集群。然后,您可以在集群中添加 ARM64 计算机器集,以使用多架构计算机器创建集群。

以下流程描述了如何生成 ARM64 引导镜像并创建使用 ARM64 引导镜像的 Azure 计算机器集。这会在集群中添加 ARM64 计算节点,并部署您需要的 ARM64 虚拟机 (VM) 的数量。

4.2.1. 验证集群兼容性

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

先决条件

  • 已安装 OpenShift CLI (oc)

流程

  • 您可以运行以下命令来检查集群是否使用构架有效负载:

    $ oc adm release info -o jsonpath="{ .metadata.metadata}"

验证

  1. 如果您看到以下输出,集群将使用多架构有效负载:

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

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

  2. 如果您看到以下输出,集群不使用多架构有效负载:

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

    要迁移集群以便集群支持多架构计算机器,请按照使用多架构计算机器迁移到集群的步骤进行操作。

4.2.2. 使用 Azure 镜像 gallery 创建 ARM64 引导镜像

以下流程描述了如何手动生成 ARM64 引导镜像。

先决条件

  • 已安装 Azure CLI (az)。
  • 已使用多架构安装程序二进制文件创建了单架构 Azure 安装程序置备集群。

流程

  1. 登录到您的 Azure 帐户:

    $ az login
  2. 创建存储帐户并将 arm64 虚拟硬盘 (VHD) 上传到您的存储帐户。OpenShift Container Platform 安装程序会创建一个资源组,但引导镜像也可以上传到名为资源组的自定义中:

    $ az storage account create -n ${STORAGE_ACCOUNT_NAME} -g ${RESOURCE_GROUP} -l westus --sku Standard_LRS 1
    1
    westus 对象是一个示例区域。
  3. 使用您生成的存储帐户创建存储容器:

    $ az storage container create -n ${CONTAINER_NAME} --account-name ${STORAGE_ACCOUNT_NAME}
  4. 您必须使用 OpenShift Container Platform 安装程序 JSON 文件提取 URL 和 aarch64 VHD 名称:

    1. 运行以下命令,提取 URL 字段并将其设置为 RHCOS_VHD_ORIGIN_URL

      $ RHCOS_VHD_ORIGIN_URL=$(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' | jq -r '.architectures.aarch64."rhel-coreos-extensions"."azure-disk".url')
    2. 运行以下命令,提取 aarch64 VHD 名称并将其设置为 BLOB_NAME 作为文件名:

      $ BLOB_NAME=rhcos-$(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' | jq -r '.architectures.aarch64."rhel-coreos-extensions"."azure-disk".release')-azure.aarch64.vhd
  5. 生成共享访问令牌 (SAS) 令牌。通过以下命令,使用此令牌将 RHCOS VHD 上传到存储容器:

    $ end=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'`
    $ sas=`az storage container generate-sas -n ${CONTAINER_NAME} --account-name ${STORAGE_ACCOUNT_NAME} --https-only --permissions dlrw --expiry $end -o tsv`
  6. 将 RHCOS VHD 复制到存储容器中:

    $ az storage blob copy start --account-name ${STORAGE_ACCOUNT_NAME} --sas-token "$sas" \
     --source-uri "${RHCOS_VHD_ORIGIN_URL}" \
     --destination-blob "${BLOB_NAME}" --destination-container ${CONTAINER_NAME}

    您可以使用以下命令检查复制过程的状态:

    $ az storage blob show -c ${CONTAINER_NAME} -n ${BLOB_NAME} --account-name ${STORAGE_ACCOUNT_NAME} | jq .properties.copy

    输出示例

    {
     "completionTime": null,
     "destinationSnapshot": null,
     "id": "1fd97630-03ca-489a-8c4e-cfe839c9627d",
     "incrementalCopy": null,
     "progress": "17179869696/17179869696",
     "source": "https://rhcos.blob.core.windows.net/imagebucket/rhcos-411.86.202207130959-0-azure.aarch64.vhd",
     "status": "success", 1
     "statusDescription": null
    }

    1
    如果 status 参数显示 success 对象,则复制过程已完成。
  7. 使用以下命令创建镜像 gallery:

    $ az sig create --resource-group ${RESOURCE_GROUP} --gallery-name ${GALLERY_NAME}

    使用镜像 gallery 创建镜像定义。在以下示例中,rhcos-arm64 是镜像定义的名称。

    $ az sig image-definition create --resource-group ${RESOURCE_GROUP} --gallery-name ${GALLERY_NAME} --gallery-image-definition rhcos-arm64 --publisher RedHat --offer arm --sku arm64 --os-type linux --architecture Arm64 --hyper-v-generation V2
  8. 要获取 VHD 的 URL,并将其设置为 RHCOS_VHD_URL 作为文件名称,请运行以下命令:

    $ RHCOS_VHD_URL=$(az storage blob url --account-name ${STORAGE_ACCOUNT_NAME} -c ${CONTAINER_NAME} -n "${BLOB_NAME}" -o tsv)
  9. 使用 RHCOS_VHD_URL 文件、您的存储帐户、资源组和镜像 gallery 创建镜像版本。在以下示例中,1.0.0 是镜像版本。

    $ az sig image-version create --resource-group ${RESOURCE_GROUP} --gallery-name ${GALLERY_NAME} --gallery-image-definition rhcos-arm64 --gallery-image-version 1.0.0 --os-vhd-storage-account ${STORAGE_ACCOUNT_NAME} --os-vhd-uri ${RHCOS_VHD_URL}
  10. 现在生成您的 arm64 引导镜像。您可以使用以下命令访问镜像的 ID:

    $ az sig image-version show -r $GALLERY_NAME -g $RESOURCE_GROUP -i rhcos-arm64 -e 1.0.0

    以下示例镜像 ID 在计算机器设置的 recourseID 参数中使用:

    resourceID 示例

    /resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Compute/galleries/${GALLERY_NAME}/images/rhcos-arm64/versions/1.0.0

4.2.3. 在集群中添加多架构计算机器集

要在集群中添加 ARM64 计算节点,您必须创建一个使用 ARM64 引导镜像的 Azure 计算机器集。要在 Azure 上创建自己的自定义计算机器集,请参阅"创建 Azure 上的计算机器集"。

先决条件

  • 已安装 OpenShift CLI(oc)。

流程

  • 使用以下命令,创建计算机器集并修改 resourceIDvmSize 参数。此计算机器集将控制集群中的 arm64 worker 节点:

    $ oc create -f arm64-machine-set-0.yaml

    使用 arm64 引导镜像的 YAML 计算机器集示例

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id>
        machine.openshift.io/cluster-api-machine-role: worker
        machine.openshift.io/cluster-api-machine-type: worker
      name: <infrastructure_id>-arm64-machine-set-0
      namespace: openshift-machine-api
    spec:
      replicas: 2
      selector:
        matchLabels:
          machine.openshift.io/cluster-api-cluster: <infrastructure_id>
          machine.openshift.io/cluster-api-machineset: <infrastructure_id>-arm64-machine-set-0
      template:
        metadata:
          labels:
            machine.openshift.io/cluster-api-cluster: <infrastructure_id>
            machine.openshift.io/cluster-api-machine-role: worker
            machine.openshift.io/cluster-api-machine-type: worker
            machine.openshift.io/cluster-api-machineset: <infrastructure_id>-arm64-machine-set-0
        spec:
          lifecycleHooks: {}
          metadata: {}
          providerSpec:
            value:
              acceleratedNetworking: true
              apiVersion: machine.openshift.io/v1beta1
              credentialsSecret:
                name: azure-cloud-credentials
                namespace: openshift-machine-api
              image:
                offer: ""
                publisher: ""
                resourceID: /resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Compute/galleries/${GALLERY_NAME}/images/rhcos-arm64/versions/1.0.0 1
                sku: ""
                version: ""
              kind: AzureMachineProviderSpec
              location: <region>
              managedIdentity: <infrastructure_id>-identity
              networkResourceGroup: <infrastructure_id>-rg
              osDisk:
                diskSettings: {}
                diskSizeGB: 128
                managedDisk:
                  storageAccountType: Premium_LRS
                osType: Linux
              publicIP: false
              publicLoadBalancer: <infrastructure_id>
              resourceGroup: <infrastructure_id>-rg
              subnet: <infrastructure_id>-worker-subnet
              userDataSecret:
                name: worker-user-data
              vmSize: Standard_D4ps_v5 2
              vnet: <infrastructure_id>-vnet
              zone: "<zone>"

    1
    resourceID 参数设置为 arm64 引导镜像。
    2
    vmSize 参数设置为安装中使用的实例类型。一些实例类型是 Standard_D4ps_v5D8ps

验证

  1. 输入以下命令验证新的 ARM64 机器是否正在运行:

    $ oc get machineset -n openshift-machine-api

    输出示例

    NAME                                                DESIRED  CURRENT  READY  AVAILABLE  AGE
    <infrastructure_id>-arm64-machine-set-0                   2        2      2          2  10m

  2. 您可以使用以下命令检查节点是否就绪并可访问:

    $ oc get nodes
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.