3.2. Azure에서 다중 아키텍처 컴퓨팅 머신으로 클러스터 생성
다중 아키텍처 컴퓨팅 머신이 있는 Azure 클러스터를 배포하려면 먼저 다중 아키텍처 설치 프로그램 바이너리를 사용하는 단일 아키텍처 Azure 설치 관리자 프로비저닝 클러스터를 생성해야 합니다. Azure 설치에 대한 자세한 내용은 사용자 지정을 사용하여 Azure에 클러스터 설치를 참조하십시오.
단일 아키텍처 컴퓨팅 머신이 있는 현재 클러스터를 다중 아키텍처 컴퓨팅 머신이 있는 클러스터로 마이그레이션할 수도 있습니다. 자세한 내용은 다중 아키텍처 컴퓨팅 머신이 있는 클러스터로 마이그레이션 을 참조하십시오.
다중 아키텍처 클러스터를 생성한 후 다양한 아키텍처가 있는 노드를 클러스터에 추가할 수 있습니다.
3.2.1. 클러스터 호환성 확인
다른 아키텍처의 컴퓨팅 노드를 클러스터에 추가하려면 먼저 클러스터가 다중 아키텍처 호환인지 확인해야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다.
프로세스
-
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>" }
중요클러스터가 다중 아키텍처 컴퓨팅 머신을 지원하도록 클러스터를 마이그레이션하려면 다중 아키텍처 컴퓨팅 머신이 있는 클러스터로 마이그레이션 절차를 따르십시오.
3.2.2. Azure 이미지 개요를 사용하여 64비트 ARM 부팅 이미지 생성
다음 절차에서는 64비트 ARM 부팅 이미지를 수동으로 생성하는 방법을 설명합니다.
사전 요구 사항
-
Azure CLI(
az
)를 설치했습니다. - 다중 아키텍처 설치 프로그램 바이너리를 사용하여 단일 아키텍처 Azure 설치 관리자 프로비저닝 클러스터를 생성했습니다.
프로세스
Azure 계정에 로그인합니다.
$ az login
스토리지 계정을 생성하고
aarch64
가상 하드 디스크(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
3.2.3. Azure 이미지 관리자를 사용하여 64비트 x86 부팅 이미지 생성
다음 절차에서는 64비트 x86 부팅 이미지를 수동으로 생성하는 방법을 설명합니다.
사전 요구 사항
-
Azure CLI(
az
)를 설치했습니다. - 다중 아키텍처 설치 프로그램 바이너리를 사용하여 단일 아키텍처 Azure 설치 관리자 프로비저닝 클러스터를 생성했습니다.
프로세스
다음 명령을 실행하여 Azure 계정에 로그인합니다.
$ az login
스토리지 계정을 생성하고 다음 명령을 실행하여
x86_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 및
x86_64
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.x86_64."rhel-coreos-extensions"."azure-disk".url')
x86_64
VHD 이름을 추출하고 다음 명령을 실행하여 파일 이름으로BLOB_NAME
으로 설정합니다.$ BLOB_NAME=rhcos-$(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' | jq -r '.architectures.x86_64."rhel-coreos-extensions"."azure-disk".release')-azure.x86_64.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}
이미지 모음을 사용하여 다음 명령을 실행하여 이미지 정의를 만듭니다.
$ az sig image-definition create --resource-group ${RESOURCE_GROUP} --gallery-name ${GALLERY_NAME} --gallery-image-definition rhcos-x86_64 --publisher RedHat --offer x86_64 --sku x86_64 --os-type linux --architecture x64 --hyper-v-generation V2
이 예제 명령에서
rhcos-x86_64
는 이미지 정의의 이름입니다.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
파일, 스토리지 계정, 리소스 그룹 및 이미지 개요를 사용하여 다음 명령을 실행하여 이미지 버전을 생성합니다.$ 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}
이 예에서
1.0.0
은 이미지 버전입니다.선택 사항: 다음 명령을 실행하여 생성된
x86_64
부팅 이미지의 ID에 액세스합니다.$ az sig image-version show -r $GALLERY_NAME -g $RESOURCE_GROUP -i rhcos-x86_64 -e 1.0.0
다음 예제 이미지 ID는 컴퓨팅 머신 세트의 re
courseID
매개변수에 사용됩니다.resourceID
예/resourceGroups/${RESOURCE_GROUP}/providers/Microsoft.Compute/galleries/${GALLERY_NAME}/images/rhcos-x86_64/versions/1.0.0
3.2.4. Azure 클러스터에 다중 아키텍처 컴퓨팅 머신 세트 추가
다중 아키텍처 클러스터를 생성한 후 다른 아키텍처로 노드를 추가할 수 있습니다.
다음과 같은 방법으로 다중 아키텍처 컴퓨팅 머신을 다중 아키텍처 클러스터에 추가할 수 있습니다.
- 64비트 ARM 컨트롤 플레인 시스템을 사용하고 이미 64비트 ARM 컴퓨팅 시스템을 포함하는 클러스터에 64비트 x86 컴퓨팅 시스템을 추가합니다. 이 경우 64비트 x86은 보조 아키텍처로 간주됩니다.
- 64비트 x86 컨트롤 플레인 시스템을 사용하고 이미 64비트 x86 컴퓨팅 시스템을 포함하는 클러스터에 64비트 ARM 컴퓨팅 머신을 추가합니다. 이 경우 64비트 ARM은 보조 아키텍처로 간주됩니다.
Azure에서 사용자 지정 컴퓨팅 머신 세트를 생성하려면 "Azure에서 컴퓨팅 머신 세트 생성"을 참조하십시오.
클러스터에 보조 아키텍처 노드를 추가하기 전에 Multiarch Tuning Operator를 설치하고 ClusterPodPlacementConfig
사용자 정의 리소스를 배포하는 것이 좋습니다. 자세한 내용은 "Multiarch Tuning Operator를 사용하여 다중 아키텍처 클러스터에서 워크로드 관리"를 참조하십시오.
사전 요구 사항
-
OpenShift CLI(
oc
)를 설치합니다. - 64비트 ARM 또는 64비트 x86 부팅 이미지를 생성하셨습니다.
- 설치 프로그램을 사용하여 다중 아키텍처 설치 프로그램 바이너리를 사용하여 64비트 ARM 또는 64비트 x86 단일 아키텍처 Azure 클러스터를 생성했습니다.
프로세스
-
OpenShift CLI(
oc
)에 로그인합니다. YAML 파일을 생성하고 클러스터에서 64비트 ARM 또는 64비트 x86 컴퓨팅 노드를 제어하는 컴퓨팅 머신 세트를 생성하는 구성을 추가합니다.
Azure 64비트 ARM 또는 64비트 x86 컴퓨팅 노드의
MachineSet
오브젝트의 예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>-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>-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>-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>"
다음 명령을 실행하여 컴퓨팅 머신 세트를 생성합니다.
$ oc create -f <file_name> 1
- 1
- &
lt;file_name
>을 YAML 파일의 이름으로 컴퓨팅 머신 세트 구성으로 바꿉니다. 예:arm64-machine-set-0.yaml
또는amd64-machine-set-0.yaml
.
검증
다음 명령을 실행하여 새 머신이 실행 중인지 확인합니다.
$ oc get machineset -n openshift-machine-api
출력에 생성한 머신 세트가 포함되어야 합니다.
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE <infrastructure_id>-machine-set-0 2 2 2 2 10m
다음 명령을 실행하여 노드가 준비되고 예약 가능한지 확인할 수 있습니다.
$ oc get nodes