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}"
검증
다음 출력이 표시되면 클러스터에서 다중 아키텍처 페이로드를 사용하는 것입니다.
{ "release.openshift.io/architecture": "multi", "url": "https://access.redhat.com/errata/<errata_version>" }
그런 다음 클러스터에 다중 아키텍처 컴퓨팅 노드 추가를 시작할 수 있습니다.
다음 출력이 표시되면 클러스터에서 다중 아키텍처 페이로드를 사용하지 않습니다.
{ "url": "https://access.redhat.com/errata/<errata_version>" }
중요클러스터가 다중 아키텍처 컴퓨팅 머신을 지원하도록 클러스터를 마이그레이션하려면 다중 아키텍처 컴퓨팅 머신이 있는 클러스터로 마이그레이션 절차를 따르십시오.
4.2.2. Azure 이미지 개요를 사용하여 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
오브젝트가 표시되면 복사 프로세스가 완료됩니다.
다음 명령을 사용하여 이미지 모음을 만듭니다.
$ az sig create --resource-group ${RESOURCE_GROUP} --gallery-name ${GALLERY_NAME}
이미지 모음을 사용하여 이미지 정의를 만듭니다. 다음 예제 명령에서
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
파일, 스토리지 계정, 리소스 그룹 및 이미지 뷰를 사용하여 이미지 버전을 생성합니다. 다음 예에서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는 컴퓨팅 머신 세트의 re
courseID
매개변수에 사용됩니다.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
)를 설치합니다.
프로세스
컴퓨팅 시스템 세트를 생성하고 다음 명령을 사용하여
resourceID
및vmSize
매개변수를 수정합니다. 이 컴퓨팅 머신 세트는 클러스터의arm64
작업자 노드를 제어합니다.$ 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
추가 리소스