4.2. 在 Azure 上使用多架构计算机器创建集群
要使用多架构计算机器部署 Azure 集群,您必须首先创建一个使用多架构安装程序二进制文件的单架构 Azure 安装程序置备集群。如需有关 Azure 安装的更多信息,请参阅使用自定义在 Azure 上安装集群。然后,您可以在集群中添加 ARM64 计算机器集,以使用多架构计算机器创建集群。
以下流程描述了如何生成 ARM64 引导镜像并创建使用 ARM64 引导镜像的 Azure 计算机器集。这会在集群中添加 ARM64 计算节点,并部署您需要的 ARM64 虚拟机 (VM) 的数量。
4.2.1. 使用 Azure 镜像 gallery 创建 ARM64 引导镜像
以下流程描述了如何手动生成 ARM64 引导镜像。
先决条件
-
已安装 Azure CLI (
az
)。 - 已使用多架构安装程序二进制文件创建了单架构 Azure 安装程序置备集群。
流程
登录到您的 Azure 帐户:
$ az login
创建存储帐户并将
arm64
虚拟硬盘 (VHD) 上传到您的存储帐户。OpenShift Container Platform 安装程序会创建一个资源组,但引导镜像也可以上传到名为资源组的自定义中:$ az storage account create -n ${STORAGE_ACCOUNT_NAME} -g ${RESOURCE_GROUP} -l westus --sku Standard_LRS 1
- 1
westus
对象是一个示例区域。
使用您生成的存储帐户创建存储容器:
$ az storage container create -n ${CONTAINER_NAME} --account-name ${STORAGE_ACCOUNT_NAME}
您必须使用 OpenShift Container Platform 安装程序 JSON 文件提取 URL 和
aarch64
VHD 名称:运行以下命令,提取
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')
运行以下命令,提取
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
生成共享访问令牌 (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`
将 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
对象,则复制过程已完成。
使用以下命令创建镜像 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
要获取 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)
使用
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}
现在生成您的
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.2. 在集群中添加多架构计算机器集
要在集群中添加 ARM64 计算节点,您必须创建一个使用 ARM64 引导镜像的 Azure 计算机器集。要在 Azure 上创建自己的自定义计算机器集,请参阅"创建 Azure 上的计算机器集"。
先决条件
-
已安装 OpenShift CLI(
oc
)。
流程
使用以下命令,创建计算机器集并修改
resourceID
和vmSize
参数。此计算机器集将控制集群中的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>"
验证
输入以下命令验证新的 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
您可以使用以下命令检查节点是否就绪并可访问:
$ oc get nodes
其他资源