第 4 章 在 OpenShift Container Platform 集群中配置多架构计算机器
带有多架构计算机器的 OpenShift Container Platform 集群是一个支持具有不同架构的计算机器的集群。您可以使用多架构安装程序二进制文件创建 Azure 安装程序置备的集群,使用多架构计算机器部署集群。对于 Azure 安装,请参阅使用自定义在 Azure 上安装集群。
多架构计算机器技术预览功能在安装、升级和运行有效负载时具有有限的可用性。
以下流程解释了如何生成 ARM64 引导镜像,并使用 ARM64 引导镜像创建 Azure 计算机器。这会在集群中添加 ARM64 计算节点,并部署所需的 ARM64 虚拟机 (VM)。本节还演示了如何将现有集群升级到支持多架构计算机器的集群。具有多架构计算机器的集群仅在带有 x86_64 control plane 机器的 Azure 安装程序置备的基础架构中可用。
在 Azure 安装程序置备的基础架构安装中使用多架构计算机器的 OpenShift Container Platform 集群只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
4.1. 使用 Azure 镜像 gallery 创建 ARM64 引导镜像
要使用多架构计算机器配置集群,您必须创建一个 ARM64 引导镜像并将其添加到 Azure 计算机器集中。以下流程描述了如何手动生成 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