4.2. Azure에서 다중 아키텍처 컴퓨팅 머신을 사용하여 클러스터 생성
다중 아키텍처 컴퓨팅 머신을 사용하여 Azure 클러스터를 배포하려면 먼저 다중 아키텍처 설치 프로그램 바이너리를 사용하는 단일 아키텍처 Azure 설치 관리자 프로비저닝 클러스터를 생성해야 합니다. Azure 설치에 대한 자세한 내용은 사용자 지정을 사용하여 Azure에 클러스터 설치를 참조하십시오. 그런 다음 ARM64 컴퓨팅 머신 세트를 클러스터에 추가하여 다중 아키텍처 컴퓨팅 머신이 있는 클러스터를 생성할 수 있습니다.
다음 절차에서는 ARM64 부팅 이미지를 생성하고 ARM64 부팅 이미지를 사용하는 Azure 컴퓨팅 머신 세트를 생성하는 방법을 설명합니다. 이를 통해 클러스터에 ARM64 컴퓨팅 노드를 추가하고 필요한 ARM64 가상 머신(VM) 양을 배포합니다.
4.2.1. Azure 이미지 라이브러리를 사용하여 ARM64 부팅 이미지 생성
다음 절차에서는 ARM64 부팅 이미지를 수동으로 생성하는 방법을 설명합니다.
사전 요구 사항
-
Azure CLI(
az
)를 설치했습니다. - 다중 아키텍처 설치 프로그램 바이너리를 사용하여 단일 아키텍처 Azure 설치 관리자 프로비저닝 클러스터를 생성하셨습니다.
절차
Azure 계정에 로그인합니다.
$ az login
스토리지 계정을 생성하고 scrape
64 가상
하드 디스크(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
공유 액세스 서명(ECDHE) 토큰을 생성합니다. 다음 명령을 사용하여 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
오브젝트가 표시되면 복사 프로세스가 완료됩니다.
다음 명령을 사용하여 이미지 builder를 생성합니다.
$ az sig create --resource-group ${RESOURCE_GROUP} --gallery-name ${GALLERY_NAME}
이미지 Maven을 사용하여 이미지 정의를 생성합니다. 다음 예제 명령에서
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는 컴퓨팅 머신 세트의 reECDHE
ID
매개변수에 사용됩니다.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
매개변수를 수정합니다. 이 컴퓨팅 머신 세트는 클러스터의 machines64
작업자 노드를 제어합니다.$ 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
추가 리소스