2.3. Azure에서 컴퓨팅 머신 세트 생성
Microsoft Azure의 OpenShift Container Platform 클러스터에서 특정 목적을 충족하기 위해 다른 컴퓨팅 머신 세트를 생성할 수 있습니다. 예를 들어, 지원되는 워크로드를 새 머신으로 이동할 수 있도록 인프라 머신 세트 및 관련 머신을 작성할 수 있습니다.
머신 API가 작동하는 클러스터에서만 고급 머신 관리 및 스케일링 기능을 사용할 수 있습니다. 사용자 프로비저닝 인프라가 있는 클러스터에는 Machine API를 사용하기 위해 추가 검증 및 구성이 필요합니다.
인프라 플랫폼 유형이 none
인 클러스터는 Machine API를 사용할 수 없습니다. 이 제한은 클러스터에 연결된 컴퓨팅 머신이 기능을 지원하는 플랫폼에 설치된 경우에도 적용됩니다. 설치 후에는 이 매개변수를 변경할 수 없습니다.
클러스터의 플랫폼 유형을 보려면 다음 명령을 실행합니다.
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
2.3.1. Azure에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML
이 샘플 YAML은 리전의 1
Microsoft Azure 영역에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/<role>: ""
로 레이블이 지정된 노드를 만듭니다.
이 샘플에서 <infrastructure_id>
는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 <role>
은 추가할 노드 레이블입니다.
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1 machine.openshift.io/cluster-api-machine-role: <role> 2 machine.openshift.io/cluster-api-machine-type: <role> name: <infrastructure_id>-<role>-<region> 3 namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<region> template: metadata: creationTimestamp: null labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machine-role: <role> machine.openshift.io/cluster-api-machine-type: <role> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<region> spec: metadata: creationTimestamp: null labels: machine.openshift.io/cluster-api-machineset: <machineset_name> node-role.kubernetes.io/<role>: "" providerSpec: value: apiVersion: azureproviderconfig.openshift.io/v1beta1 credentialsSecret: name: azure-cloud-credentials namespace: openshift-machine-api image: 4 offer: "" publisher: "" resourceID: /resourceGroups/<infrastructure_id>-rg/providers/Microsoft.Compute/galleries/gallery_<infrastructure_id>/images/<infrastructure_id>-gen2/versions/latest 5 sku: "" version: "" internalLoadBalancer: "" kind: AzureMachineProviderSpec location: <region> 6 managedIdentity: <infrastructure_id>-identity metadata: creationTimestamp: null natRule: null networkResourceGroup: "" osDisk: diskSizeGB: 128 managedDisk: storageAccountType: Premium_LRS osType: Linux publicIP: false publicLoadBalancer: "" resourceGroup: <infrastructure_id>-rg sshPrivateKey: "" sshPublicKey: "" tags: - name: <custom_tag_name> 7 value: <custom_tag_value> subnet: <infrastructure_id>-<role>-subnet userDataSecret: name: worker-user-data vmSize: Standard_D4s_v3 vnet: <infrastructure_id>-vnet zone: "1" 8
- 1
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
다음 명령을 실행하여 서브넷을 가져올 수 있습니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
다음 명령을 실행하여 vnet을 가져올 수 있습니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \ get machineset/<infrastructure_id>-worker-centralus1
- 2
- 추가할 노드 레이블을 지정합니다.
- 3
- 인프라 ID, 노드 레이블, 리전을 지정합니다.
- 4
- 컴퓨팅 머신 세트의 이미지 세부 정보를 지정합니다. Azure Marketplace 이미지를 사용하려면 "Azure Marketplace 이미지 선택"을 참조하십시오.
- 5
- 인스턴스 유형과 호환되는 이미지를 지정합니다. 설치 프로그램에서 생성한 Hyper-V generation V2 이미지에는
-gen2
접미사가 있지만 V1 이미지의 접미사 없이 이름이 동일합니다. - 6
- 머신을 배치할 리전을 지정합니다.
- 7
- 선택 사항: 머신 세트에서 사용자 지정 태그를 지정합니다. <
custom_tag_name
> 필드에 태그 이름과 <custom_tag_value
> 필드에 해당 태그 값을 입력합니다. - 8
- 머신을 배치할 리전 내 영역을 지정합니다. 해당 리전이 지정한 영역을 지원하는지 확인합니다.
2.3.2. 컴퓨팅 머신 세트 생성
설치 프로그램에서 생성한 컴퓨팅 머신 세트 외에도 고유한 머신 세트를 생성하여 선택한 특정 워크로드의 머신 컴퓨팅 리소스를 동적으로 관리할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터를 배포합니다.
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로oc
에 로그인합니다.
프로세스
컴퓨팅 머신 세트 CR(사용자 정의 리소스) 샘플이 포함된 새 YAML 파일을 만들고
<file_name>.yaml
이라는 이름을 지정합니다.<clusterID>
및<role>
매개 변수 값을 설정해야 합니다.선택 사항: 특정 필드에 설정할 값이 확실하지 않은 경우 클러스터에서 기존 컴퓨팅 머신 세트를 확인할 수 있습니다.
클러스터의 컴퓨팅 머신 세트를 나열하려면 다음 명령을 실행합니다.
$ oc get machinesets -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m agl030519-vplxk-worker-us-east-1d 0 0 55m agl030519-vplxk-worker-us-east-1e 0 0 55m agl030519-vplxk-worker-us-east-1f 0 0 55m
특정 컴퓨팅 머신 세트 CR(사용자 정의 리소스)의 값을 보려면 다음 명령을 실행합니다.
$ oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml
출력 예
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1 name: <infrastructure_id>-<role> 2 namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> template: metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machine-role: <role> machine.openshift.io/cluster-api-machine-type: <role> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> spec: providerSpec: 3 ...
다음 명령을 실행하여
MachineSet
CR을 생성합니다.$ oc create -f <file_name>.yaml
검증
다음 명령을 실행하여 컴퓨팅 머신 세트 목록을 확인합니다.
$ oc get machineset -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE agl030519-vplxk-infra-us-east-1a 1 1 1 1 11m agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m agl030519-vplxk-worker-us-east-1d 0 0 55m agl030519-vplxk-worker-us-east-1e 0 0 55m agl030519-vplxk-worker-us-east-1f 0 0 55m
새 컴퓨팅 머신 세트를 사용할 수 있으면
DESIRED
및CURRENT
값이 일치합니다. 컴퓨팅 머신 세트를 사용할 수 없는 경우 몇 분 기다렸다가 명령을 다시 실행합니다.
2.3.3. Azure Marketplace 오퍼링 사용
Azure에서 실행되는 머신 세트를 생성하여 Azure Marketplace 오퍼링을 사용하는 머신을 배포할 수 있습니다. 이 오퍼링을 사용하려면 먼저 Azure Marketplace 이미지를 가져와야 합니다. 이미지를 가져올 때 다음을 고려하십시오.
-
이미지가 동일하지만 Azure Marketplace 게시자는 지역에 따라 다릅니다. 북미에 있는 경우 게시자로
redhat
을 지정합니다. EMEA에 있는 경우 게시자로redhat-limited
를 지정합니다. -
이 제안에는
rh-ocp-worker
SKU 및rh-ocp-worker-gen1
SKU가 포함됩니다.rh-ocp-worker
SKU는 Hyper-V 생성 버전 2 VM 이미지를 나타냅니다. OpenShift Container Platform에서 사용되는 기본 인스턴스 유형은 버전 2와 호환됩니다. 버전 1과 호환되는 인스턴스 유형을 사용하려면rh-ocp-worker-gen1
SKU와 연결된 이미지를 사용합니다.rh-ocp-worker-gen1
SKU는 Hyper-V 버전 1 VM 이미지를 나타냅니다.
Azure Marketplace를 사용하여 이미지 설치는 64비트 ARM 인스턴스가 있는 클러스터에서 지원되지 않습니다.
사전 요구 사항
-
Azure CLI 클라이언트
(az)
를 설치했습니다. - Azure 계정은 제공할 수 있으며 Azure CLI 클라이언트를 사용하여 이 계정에 로그인했습니다.
프로세스
다음 명령 중 하나를 실행하여 사용 가능한 모든 OpenShift Container Platform 이미지를 표시합니다.
북아메리카:
$ az vm image list --all --offer rh-ocp-worker --publisher redhat -o table
출력 예
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- ----------------- rh-ocp-worker RedHat rh-ocp-worker RedHat:rh-ocp-worker:rh-ocp-worker:413.92.2023101700 413.92.2023101700 rh-ocp-worker RedHat rh-ocp-worker-gen1 RedHat:rh-ocp-worker:rh-ocp-worker-gen1:413.92.2023101700 413.92.2023101700
EMEA:
$ az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o table
출력 예
Offer Publisher Sku Urn Version ------------- -------------- ------------------ -------------------------------------------------------------- ----------------- rh-ocp-worker redhat-limited rh-ocp-worker redhat-limited:rh-ocp-worker:rh-ocp-worker:413.92.2023101700 413.92.2023101700 rh-ocp-worker redhat-limited rh-ocp-worker-gen1 redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:413.92.2023101700 413.92.2023101700
참고설치하는 OpenShift Container Platform 버전에 관계없이 사용할 Azure Marketplace 이미지의 올바른 버전은 4.13입니다. 필요한 경우 설치 프로세스의 일부로 VM이 자동으로 업그레이드됩니다.
다음 명령 중 하나를 실행하여 제안의 이미지를 검사합니다.
북아메리카:
$ az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
EMEA:
$ az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
다음 명령 중 하나를 실행하여 제안 조건을 검토합니다.
북아메리카:
$ az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
EMEA:
$ az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
다음 명령 중 하나를 실행하여 제공 조건을 수락하십시오.
북아메리카:
$ az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
EMEA:
$ az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
-
제안의 이미지 세부 정보, 특히
publisher
,offer
,sku
,version
값을 기록합니다. 제안의 이미지 세부 정보를 사용하여 머신 세트 YAML 파일의
providerSpec
섹션에 다음 매개변수를 추가합니다.Azure Marketplace 머신의 샘플
providerSpec
이미지 값providerSpec: value: image: offer: rh-ocp-worker publisher: redhat resourceID: "" sku: rh-ocp-worker type: MarketplaceWithPlan version: 413.92.2023101700
2.3.4. Azure 부팅 진단 활성화
머신 세트에서 생성하는 Azure 머신에서 부팅 진단을 활성화할 수 있습니다.
사전 요구 사항
- 기존 Microsoft Azure 클러스터가 있어야 합니다.
프로세스
스토리지 유형에 적용할 수 있는
diagnostics
구성을 머신 세트 YAML 파일의providerSpec
필드에 추가합니다.Azure 관리 스토리지 계정의 경우:
providerSpec: diagnostics: boot: storageAccountType: AzureManaged 1
- 1
- Azure 관리 스토리지 계정을 지정합니다.
Azure Unmanaged 스토리지 계정의 경우:
providerSpec: diagnostics: boot: storageAccountType: CustomerManaged 1 customerManaged: storageAccountURI: https://<storage-account>.blob.core.windows.net 2
참고Azure Blob Storage 데이터 서비스만 지원됩니다.
검증
- Microsoft Azure 포털에서 머신 세트에서 배포한 머신의 부팅 진단 페이지를 검토하고 시스템의 직렬 로그를 볼 수 있는지 확인합니다.
2.3.5. 머신을 Spot 가상머신으로 배포하는 머신 세트
Azure에서 실행되는 컴퓨팅 머신 세트를 생성하여 머신을 보장되지 않는 Spot 가상 머신으로 배포하면 비용을 절감할 수 있습니다. Spot 가상 머신은 사용되지 않은 Azure 용량을 사용하며 표준 가상 머신보다 비용이 저렴합니다. 일괄 처리 또는 상태 비저장, 수평적으로 확장 가능한 워크로드와 같이 인터럽트를 허용할 수 있는 워크로드에 Spot 가상 머신을 사용할 수 있습니다.
Azure는 언제든지 Spot 가상 머신을 종료 할 수 있습니다. Azure는 중단이 발생하면 사용자에게 30 초 동안 경고 메세지를 보냅니다. OpenShift Container Platform은 Azure가 종료 경고를 발행할 때 영향을 받는 인스턴스에서 워크로드를 제거하기 시작합니다.
다음과 같은 이유로 Spot 가상 머신을 사용할 때 중단될 수 있습니다.
- 인스턴스 가격이 최대 가격을 초과합니다.
- Spot 가상 머신의 공급이 감소합니다.
- Azure는 용량을 복원해야합니다.
Azure가 인스턴스를 종료하면 Spot 가상 머신 노드에서 실행되는 종료 프로세스가 머신 리소스를 삭제합니다. 컴퓨팅 머신 세트 replicas
수량을 충족하기 위해 컴퓨팅 머신 세트는 Spot 가상 머신을 요청하는 머신을 생성합니다.
2.3.5.1. 컴퓨팅 머신 세트를 사용하여 Spot 가상 머신 생성
컴퓨팅 머신 세트 YAML 파일에 spotVMOptions
를 추가하여 Azure에서 Spot 가상 머신을 시작할 수 있습니다.
프로세스
providerSpec
필드 아래에 다음 행을 추가합니다.providerSpec: value: spotVMOptions: {}
필요한 경우
spotVMOptions.maxPrice
필드를 설정하여 Spot 가상 머신의 비용을 제한할 수 있습니다. 예를 들어maxPrice: '0.98765'
를 설정할 수 있습니다.maxPrice
가 설정된 경우 이 값은 시간당 최대 Spot 가격으로 사용됩니다. 설정되지 않은 경우 최대 가격은 기본적으로-1
로 설정된 표준 가상 머신 가격까지 청구됩니다.Azure는 Spot 가상 머신 가격을 표준 가격으로 제한합니다. 인스턴스가 기본
maxPrice
로 설정된 경우 Azure는 가격 설정에 따라 인스턴스를 제거하지 않습니다. 그러나 용량 제한으로 인해 인스턴스를 제거할 수 있습니다.
기본 표준 가상 머신 가격을 maxPrice
값으로 사용하고 Spot 가상 머신의 최대 가격을 설정하지 않는 것이 좋습니다.
2.3.6. 임시 OS 디스크에 머신을 배포하는 머신 세트
Azure에서 실행되는 컴퓨팅 머신 세트를 생성하여 임시 OS 디스크에 머신을 배포할 수 있습니다. 임시 OS 디스크는 원격 Azure Storage가 아닌 로컬 VM 용량을 사용합니다. 따라서 이 구성에서는 추가 비용이 발생하지 않으며 읽기, 쓰기, 다시 시작에 더 짧은 대기 시간을 제공합니다.
추가 리소스
- 자세한 내용은 Azure VM용 임시 OS 디스크에 대한 Microsoft Azure 설명서를 참조하십시오.
2.3.6.1. 컴퓨팅 머신 세트를 사용하여 임시 OS 디스크에 머신 생성
컴퓨팅 머신 세트 YAML 파일을 편집하여 Azure의 임시 OS 디스크에서 머신을 시작할 수 있습니다.
사전 요구 사항
- 기존 Microsoft Azure 클러스터가 있어야 합니다.
프로세스
다음 명령을 실행하여 CR(사용자 정의 리소스)을 편집합니다.
$ oc edit machineset <machine-set-name>
여기서
<machine-set-name
>은 임시 OS 디스크에 머신을 프로비저닝하려는 컴퓨팅 머신 세트입니다.providerSpec
필드에 다음을 추가합니다.providerSpec: value: ... osDisk: ... diskSettings: 1 ephemeralStorageLocation: Local 2 cachingType: ReadOnly 3 managedDisk: storageAccountType: Standard_LRS 4 ...
중요OpenShift Container Platform에서 임시 OS 디스크 지원 구현에서는
CacheDisk
배치 유형만 지원합니다.placement
구성 설정은 변경하지 마십시오.업데이트된 구성을 사용하여 컴퓨팅 머신 세트를 생성합니다.
$ oc create -f <machine-set-config>.yaml
검증
-
Microsoft Azure 포털에서 컴퓨팅 머신 세트에서 배포한 머신의 개요 페이지를 검토하고
Ephemeral OS disk
필드가OS cache placement
로 설정되어 있는지 확인합니다.
2.3.7. 울트라 디스크가 있는 머신을 데이터 디스크로 배포하는 머신 세트
Azure에서 실행되는 머신 세트를 생성하여 울트라 디스크가 있는 머신을 배포할 수 있습니다. Ultra 디스크는 가장 까다로운 데이터 워크로드에 사용하기 위한 고성능 스토리지입니다.
Azure Ultra 디스크가 지원하는 스토리지 클래스에 동적으로 바인딩하고 Pod에 마운트하는 PVC(영구 볼륨 클레임)를 생성할 수도 있습니다.
데이터 디스크는 디스크 처리량 또는 디스크 IOPS를 지정하는 기능을 지원하지 않습니다. PVC를 사용하여 이러한 속성을 구성할 수 있습니다.
추가 리소스
2.3.7.1. 머신 세트를 사용하여 울트라 디스크가 있는 머신 생성
머신 세트 YAML 파일을 편집하여 Azure에 울트라 디스크가 있는 머신을 배포할 수 있습니다.
사전 요구 사항
- 기존 Microsoft Azure 클러스터가 있어야 합니다.
프로세스
다음 명령을 실행하여
worker
데이터 시크릿을 사용하여openshift-machine-api
네임스페이스에 사용자 정의 시크릿을 생성합니다.$ oc -n openshift-machine-api \ get secret <role>-user-data \ 1 --template='{{index .data.userData | base64decode}}' | jq > userData.txt 2
텍스트 편집기에서
userData.txt
파일을 열고 파일에서 최종}
문자를 찾습니다.-
바로 앞의 줄에서
,
을 추가합니다. 뒤에 새 행을 생성하고
,
다음에 구성 세부 정보를 추가합니다."storage": { "disks": [ 1 { "device": "/dev/disk/azure/scsi1/lun0", 2 "partitions": [ 3 { "label": "lun0p1", 4 "sizeMiB": 1024, 5 "startMiB": 0 } ] } ], "filesystems": [ 6 { "device": "/dev/disk/by-partlabel/lun0p1", "format": "xfs", "path": "/var/lib/lun0p1" } ] }, "systemd": { "units": [ 7 { "contents": "[Unit]\nBefore=local-fs.target\n[Mount]\nWhere=/var/lib/lun0p1\nWhat=/dev/disk/by-partlabel/lun0p1\nOptions=defaults,pquota\n[Install]\nWantedBy=local-fs.target\n", 8 "enabled": true, "name": "var-lib-lun0p1.mount" } ] }
- 1
- 울트라 디스크로 노드에 연결하려는 디스크의 구성 세부 정보입니다.
- 2
- 사용 중인 머신 세트의
dataDisks
스탠자에 정의된lun
값을 지정합니다. 예를 들어 시스템 세트에lun: 0
이 포함된 경우lun0
을 지정합니다. 이 구성 파일에서 여러"disks"
항목을 지정하여 여러 데이터 디스크를 초기화할 수 있습니다. 여러 개의"disks"
항목을 지정하는 경우 각 항목의lun
값이 머신 세트의 값과 일치하는지 확인합니다. - 3
- 디스크의 새 파티션의 구성 세부 정보입니다.
- 4
- 파티션의 레이블을 지정합니다.
lun0
의 첫 번째 파티션에lun0
과 같은 계층적 이름을 사용하는 것이 유용할 수 있습니다. - 5
- 파티션의 총 크기(MiB)를 지정합니다.
- 6
- 파티션을 포맷할 때 사용할 파일 시스템을 지정합니다. 파티션 레이블을 사용하여 파티션을 지정합니다.
- 7
- 부팅 시 파티션을 마운트할
systemd
장치를 지정합니다. 파티션 레이블을 사용하여 파티션을 지정합니다. 이 구성 파일에서 여러 개의"partitions"
항목을 지정하여 여러 파티션을 만들 수 있습니다. 여러 개의"partitions"
항목을 지정하는 경우 각각에 대해systemd
장치를 지정해야 합니다. - 8
Where
는storage.filesystems.path
의 값을 지정합니다.What
에 대해storage.filesystems.device
값을 지정합니다.
-
바로 앞의 줄에서
다음 명령을 실행하여 template 값을
disableTemplating.txt
라는 파일에 추출합니다.$ oc -n openshift-machine-api get secret <role>-user-data \ 1 --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt
- 1
<role>
을worker
로 바꿉니다.
userData.txt
파일과disableTemplating.txt
파일을 결합하여 다음 명령을 실행하여 데이터 시크릿 파일을 생성합니다.$ oc -n openshift-machine-api create secret generic <role>-user-data-x5 \ 1 --from-file=userData=userData.txt \ --from-file=disableTemplating=disableTemplating.txt
- 1
<role>-user-data-x5
의 경우 시크릿 이름을 지정합니다.<role>
을worker
로 바꿉니다.
기존 Azure
MachineSet
CR(사용자 정의 리소스)을 복사하고 다음 명령을 실행하여 편집합니다.$ oc edit machineset <machine-set-name>
여기서
<machine-set-name
>은 울트라 디스크가 있는 머신을 프로비저닝하려는 머신 세트입니다.표시된 위치에 다음 행을 추가합니다.
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet spec: template: spec: metadata: labels: disk: ultrassd 1 providerSpec: value: ultraSSDCapability: Enabled 2 dataDisks: 3 - nameSuffix: ultrassd lun: 0 diskSizeGB: 4 deletionPolicy: Delete cachingType: None managedDisk: storageAccountType: UltraSSD_LRS userDataSecret: name: <role>-user-data-x5 4
다음 명령을 실행하여 업데이트된 구성을 사용하여 머신 세트를 생성합니다.
$ oc create -f <machine-set-name>.yaml
검증
다음 명령을 실행하여 머신이 생성되었는지 확인합니다.
$ oc get machines
시스템은
Running
상태여야 합니다.실행 중이고 노드가 연결된 시스템의 경우 다음 명령을 실행하여 파티션을 검증합니다.
$ oc debug node/<node-name> -- chroot /host lsblk
이 명령에서
oc debug node/<node-name
>은 노드 <node-name
>에서 디버깅 쉘을 시작하고--
로 명령을 전달합니다. 전달된 명령chroot /host
는 기본 호스트 OS 바이너리에 대한 액세스를 제공하며lsblk
에는 호스트 OS 시스템에 연결된 블록 장치가 표시됩니다.
다음 단계
Pod 내에서 울트라 디스크를 사용하려면 마운트 지점을 사용하는 워크로드를 생성합니다. 다음 예와 유사한 YAML 파일을 생성합니다.
apiVersion: v1 kind: Pod metadata: name: ssd-benchmark1 spec: containers: - name: ssd-benchmark1 image: nginx ports: - containerPort: 80 name: "http-server" volumeMounts: - name: lun0p1 mountPath: "/tmp" volumes: - name: lun0p1 hostPath: path: /var/lib/lun0p1 type: DirectoryOrCreate nodeSelector: disktype: ultrassd
2.3.7.2. 울트라 디스크를 활성화하는 머신 세트의 리소스 문제 해결
이 섹션의 정보를 사용하여 발생할 수 있는 문제를 이해하고 복구하십시오.
2.3.7.2.1. 잘못된 울트라 디스크 구성
UltraSSDCapability
매개변수의 잘못된 구성이 머신 세트에 지정되면 머신 프로비저닝에 실패합니다.
예를 들어 UltraSSDCapability
매개변수가 Disabled
로 설정되어 있지만 dataDisks
매개변수에 울트라 디스크가 지정되면 다음과 같은 오류 메시지가 표시됩니다.
StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
- 이 문제를 해결하려면 머신 세트 구성이 올바른지 확인합니다.
2.3.7.2.2. 지원되지 않는 디스크 매개변수
울트라 디스크와 호환되지 않는 리전, 가용성 영역 또는 인스턴스 크기가 머신 세트에 지정되면 시스템 프로비저닝이 실패합니다. 로그에 다음 오류 메시지가 있는지 확인합니다.
failed to create vm <machine_name>: failure sending request for machine <machine_name>: cannot create vm: compute.VirtualMachinesClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="BadRequest" Message="Storage Account type 'UltraSSD_LRS' is not supported <more_information_about_why>."
- 이 문제를 해결하려면 지원되는 환경에서 이 기능을 사용하고 있으며 머신 세트 구성이 올바른지 확인합니다.
2.3.7.2.3. 디스크를 삭제할 수 없음
데이터 디스크가 예상대로 작동하지 않으므로 울트라 디스크를 삭제하면 머신이 삭제되고 데이터 디스크가 분리됩니다. 필요한 경우 고립된 디스크를 수동으로 삭제해야 합니다.
2.3.8. 머신 세트의 고객 관리 암호화 키 활성화
Azure에 암호화 키를 제공하여 관리 대상 디스크의 데이터를 암호화할 수 있습니다. 시스템 API를 사용하여 고객 관리 키로 서버 측 암호화를 활성화할 수 있습니다.
고객 관리 키를 사용하려면 Azure Key Vault, 디스크 암호화 세트 및 암호화 키가 필요합니다. 디스크 암호화 세트는 CCO(Cloud Credential Operator)에 권한이 부여된 리소스 그룹에 있어야 합니다. 그렇지 않은 경우 디스크 암호화 세트에 추가 reader 역할을 부여해야 합니다.
프로세스
머신 세트 YAML 파일의
providerSpec
필드에 설정된 디스크 암호화를 구성합니다. 예를 들면 다음과 같습니다.providerSpec: value: osDisk: diskSizeGB: 128 managedDisk: diskEncryptionSet: id: /subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.Compute/diskEncryptionSets/<disk_encryption_set_name> storageAccountType: Premium_LRS
추가 리소스
2.3.9. 머신 세트를 사용하여 Azure 가상 머신에 대한 신뢰할 수 있는 시작 구성
Azure 가상 머신에 신뢰할 수 있는 시작 기능을 사용하는 것은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
OpenShift Container Platform 4.14는 Azure VM(가상 머신)에 대한 신뢰할 수 있는 시작을 지원합니다. 머신 세트 YAML 파일을 편집하여 머신 세트가 배포하는 머신에 사용하는 신뢰할 수 있는 시작 옵션을 구성할 수 있습니다. 예를 들어 Secure Boot 또는 전용 가상 신뢰할 수 있는 플랫폼 모듈(vTPM) 인스턴스와 같은 UEFI 보안 기능을 사용하도록 이러한 머신을 구성할 수 있습니다.
일부 기능 조합은 잘못된 구성을 생성합니다.
Secure Boot[1] | vTPM[2] | 유효한 구성 |
---|---|---|
활성화됨 | 활성화됨 | 제공됨 |
활성화됨 | 비활성화됨 | 제공됨 |
활성화됨 | 생략됨 | 제공됨 |
비활성화됨 | 활성화됨 | 제공됨 |
생략됨 | 활성화됨 | 제공됨 |
비활성화됨 | 비활성화됨 | 없음 |
생략됨 | 비활성화됨 | 없음 |
생략됨 | 생략됨 | 없음 |
-
secureBoot
필드 사용. -
virtualizedTrustedPlatformModule
필드 사용
관련 기능 및 기능에 대한 자세한 내용은 Azure 가상 머신의 신뢰할 수 있는 시작에 대한 Microsoft Azure 설명서를 참조하십시오.
프로세스
- 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 머신을 생성합니다.
providerSpec
필드 아래의 다음 섹션을 편집하여 유효한 구성을 제공합니다.UEFI Secure Boot 및 vTPM이 활성화된 샘플 유효한 구성
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet # ... spec: template: spec: providerSpec: value: securityProfile: settings: securityType: TrustedLaunch 1 trustedLaunch: uefiSettings: 2 secureBoot: Enabled 3 virtualizedTrustedPlatformModule: Enabled 4 # ...
검증
- Azure 포털에서 머신 세트에서 배포한 머신의 세부 정보를 검토하고 신뢰할 수 있는 시작 옵션이 구성한 값과 일치하는지 확인합니다.
2.3.10. 머신 세트를 사용하여 Azure 기밀 가상 머신 구성
Azure 기밀 가상 머신을 사용하는 것은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
OpenShift Container Platform 4.14는 Azure 기밀 가상 머신(VM)을 지원합니다.
현재 기밀 VM은 64비트 ARM 아키텍처에서 지원되지 않습니다.
머신 세트 YAML 파일을 편집하여 머신 세트가 배포하는 머신에 사용하는 기밀 VM 옵션을 구성할 수 있습니다. 예를 들어 Secure Boot 또는 전용 가상 신뢰할 수 있는 플랫폼 모듈(vTPM) 인스턴스와 같은 UEFI 보안 기능을 사용하도록 이러한 머신을 구성할 수 있습니다.
관련 기능 및 기능에 대한 자세한 내용은 기밀 가상 머신에 대한 Microsoft Azure 설명서를 참조하십시오.
프로세스
- 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 머신을 생성합니다.
providerSpec
필드 아래의 다음 섹션을 편집합니다.샘플 구성
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet # ... spec: template: spec: providerSpec: value: osDisk: # ... managedDisk: securityProfile: 1 securityEncryptionType: VMGuestStateOnly 2 # ... securityProfile: 3 settings: securityType: ConfidentialVM 4 confidentialVM: uefiSettings: 5 secureBoot: Disabled 6 virtualizedTrustedPlatformModule: Enabled 7 vmSize: Standard_DC16ads_v5 8 # ...
- 1
- 기밀 VM을 사용할 때 관리 디스크에 대한 보안 프로필 설정을 지정합니다.
- 2
- VMGS(VM 게스트 상태) Blob의 암호화를 활성화합니다. 이 설정을 사용하려면 vTPM을 사용해야 합니다.
- 3
- 기밀 VM의 보안 프로필 설정을 지정합니다.
- 4
- 기밀 VM을 사용할 수 있습니다. 이 값은 모든 유효한 구성에 필요합니다.
- 5
- 사용할 UEFI 보안 기능을 지정합니다. 이 섹션은 모든 유효한 구성에 필요합니다.
- 6
- UEFI Secure Boot를 비활성화합니다.
- 7
- vTPM 사용을 활성화합니다.
- 8
- 기밀 VM을 지원하는 인스턴스 유형을 지정합니다.
검증
- Azure 포털에서 머신 세트에서 배포한 머신의 세부 정보를 검토하고 기밀 VM 옵션이 구성한 값과 일치하는지 확인합니다.
2.3.11. Microsoft Azure VM용 가속화 네트워킹
가속화 네트워킹은 단일 루트 I/O 가상화(SR-IOV)를 사용하여 Microsoft Azure VM에 더 직접적인 전환 경로를 제공합니다. 이렇게 하면 네트워크 성능이 향상됩니다. 이 기능은 설치 중 또는 설치 후 활성화할 수 있습니다.
2.3.11.1. 제한
가속 네트워킹 사용 여부를 결정할 때 다음 제한 사항을 고려하십시오.
- 가속화 네트워킹은 Machine API가 작동하는 클러스터에서만 지원됩니다.
Azure 작업자 노드의 최소 요구 사항은 vCPU 2개이지만 가속 네트워킹에는 vCPU가 4개 이상 포함된 Azure VM 크기가 필요합니다. 이 요구 사항을 충족하기 위해 머신 세트의
vmSize
값을 변경할 수 있습니다. Azure VM 크기에 대한 자세한 내용은 Microsoft Azure 설명서를 참조하십시오.
- 기존 Azure 클러스터에서 이 기능을 활성화하면 새로 프로비저닝된 노드만 영향을 받습니다. 현재 실행 중인 노드가 조정되지 않습니다. 모든 노드에서 기능을 활성화하려면 기존 각 머신을 교체해야 합니다. 이 작업은 각 시스템에 대해 개별적으로 수행하거나 복제본을 0으로 축소한 다음 원하는 복제본 수로 다시 확장하여 수행할 수 있습니다.
2.3.12. 머신 세트를 사용하여 용량 예약 구성
OpenShift Container Platform 버전 4.14.35 이상에서는 Microsoft Azure 클러스터의 용량 예약 그룹을 사용하여 온디맨드 용량 예약을 지원합니다.
사용자가 정의한 용량 요청의 매개변수와 일치하는 사용 가능한 리소스에 머신을 배포하도록 머신 세트를 구성할 수 있습니다. 이러한 매개변수는 VM 크기, 리전 및 예약할 인스턴스 수를 지정합니다. Azure 서브스크립션 할당량이 용량 요청을 수용할 수 있는 경우 배포에 성공합니다.
이 Azure 인스턴스 유형에 대한 제한 사항 및 제안된 사용 사례를 비롯한 자세한 내용은 온디맨드 용량 예약에 대한 Microsoft Azure 설명서를 참조하십시오.
머신 세트의 기존 용량 예약 구성은 변경할 수 없습니다. 다른 용량 예약 그룹을 사용하려면 머신 세트와 이전 머신 세트가 배포된 머신을 교체해야 합니다.
사전 요구 사항
-
cluster-admin
권한이 있는 클러스터에 액세스할 수 있습니다. -
OpenShift CLI(
oc
)를 설치합니다. 용량 예약 그룹을 생성했습니다.
자세한 내용은 Microsoft Azure 설명서 용량 예약 만들기를 참조하십시오.
프로세스
- 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 머신을 생성합니다.
providerSpec
필드 아래의 다음 섹션을 편집합니다.샘플 구성
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet # ... spec: template: spec: providerSpec: value: capacityReservationGroupID: <capacity_reservation_group> 1 # ...
- 1
- 시스템이 머신을 배포하도록 설정할 용량 예약 그룹의 ID를 지정합니다.
검증
시스템 배포를 확인하려면 다음 명령을 실행하여 머신 세트에서 생성한 머신을 나열합니다.
$ oc get machines.machine.openshift.io \ -n openshift-machine-api \ -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
여기서
<machine_set_name>
은 컴퓨팅 머신 세트의 이름입니다.출력에서 나열된 시스템의 특성이 용량 예약의 매개변수와 일치하는지 확인합니다.
2.3.13. 기존 OpenShift Container Platform 클러스터에 GPU 노드 추가
기본 컴퓨팅 머신 세트 구성을 복사하고 수정하여 Azure 클라우드 공급자에 대한 GPU 사용 머신 세트 및 머신을 생성할 수 있습니다.
다음 표에는 검증된 인스턴스 유형이 나열되어 있습니다.
vmSize | NVIDIA GPU 액셀러레이터 | 최대 GPU 수 | 아키텍처 |
---|---|---|---|
| V100 | 4 | x86 |
| T4 | 1 | x86 |
| A100 | 8 | x86 |
기본적으로 Azure 서브스크립션에는 GPU를 사용하는 Azure 인스턴스 유형에 대한 할당량이 없습니다. 고객은 위에 나열된 Azure 인스턴스 제품군에 대한 할당량 증가를 요청해야 합니다.
프로세스
다음 명령을 실행하여
openshift-machine-api
네임스페이스에 있는 머신 및 머신 세트를 확인합니다. 각 컴퓨팅 머신 세트는 Azure 리전 내의 다른 가용성 영역과 연결되어 있습니다. 설치 프로그램은 가용성 영역에서 컴퓨팅 시스템을 자동으로 로드 밸런싱합니다.$ oc get machineset -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE myclustername-worker-centralus1 1 1 1 1 6h9m myclustername-worker-centralus2 1 1 1 1 6h9m myclustername-worker-centralus3 1 1 1 1 6h9m
다음 명령을 실행하여 기존 컴퓨팅
MachineSet
정의 중 하나의 사본을 만들고 결과를 YAML 파일로 출력합니다. GPU 지원 컴퓨팅 머신 세트 정의의 기반이 됩니다.$ oc get machineset -n openshift-machine-api myclustername-worker-centralus1 -o yaml > machineset-azure.yaml
머신 세트 콘텐츠를 확인합니다.
$ cat machineset-azure.yaml
machineset-azure.yaml
파일 예apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: annotations: machine.openshift.io/GPU: "0" machine.openshift.io/memoryMb: "16384" machine.openshift.io/vCPU: "4" creationTimestamp: "2023-02-06T14:08:19Z" generation: 1 labels: machine.openshift.io/cluster-api-cluster: myclustername machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker name: myclustername-worker-centralus1 namespace: openshift-machine-api resourceVersion: "23601" uid: acd56e0c-7612-473a-ae37-8704f34b80de spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: myclustername machine.openshift.io/cluster-api-machineset: myclustername-worker-centralus1 template: metadata: labels: machine.openshift.io/cluster-api-cluster: myclustername machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker machine.openshift.io/cluster-api-machineset: myclustername-worker-centralus1 spec: lifecycleHooks: {} metadata: {} providerSpec: value: acceleratedNetworking: true apiVersion: machine.openshift.io/v1beta1 credentialsSecret: name: azure-cloud-credentials namespace: openshift-machine-api diagnostics: {} image: offer: "" publisher: "" resourceID: /resourceGroups/myclustername-rg/providers/Microsoft.Compute/galleries/gallery_myclustername_n6n4r/images/myclustername-gen2/versions/latest sku: "" version: "" kind: AzureMachineProviderSpec location: centralus managedIdentity: myclustername-identity metadata: creationTimestamp: null networkResourceGroup: myclustername-rg osDisk: diskSettings: {} diskSizeGB: 128 managedDisk: storageAccountType: Premium_LRS osType: Linux publicIP: false publicLoadBalancer: myclustername resourceGroup: myclustername-rg spotVMOptions: {} subnet: myclustername-worker-subnet userDataSecret: name: worker-user-data vmSize: Standard_D4s_v3 vnet: myclustername-vnet zone: "1" status: availableReplicas: 1 fullyLabeledReplicas: 1 observedGeneration: 1 readyReplicas: 1 replicas: 1
다음 명령을 실행하여
machineset-azure.yaml
파일의 사본을 만듭니다.$ cp machineset-azure.yaml machineset-azure-gpu.yaml
machineset-azure-gpu.yaml
에서 다음 필드를 업데이트합니다.-
.metadata.name
을gpu
가 포함된 이름으로 변경합니다. -
새 .metadata.name과 일치하도록
.spec.selector.matchLabels["machine.openshift.io/cluster-api-machineset"]
을 변경합니다. -
새
.metadata.name
과 일치하도록.spec.template.metadata.labels["machine.openshift.io/cluster-api-machineset"]
을 변경합니다. .spec.template.spec.providerSpec.value.vmSize
를Standard_NC4as_T4_v3
로 변경합니다.machineset-azure-gpu.yaml
파일의 예apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: annotations: machine.openshift.io/GPU: "1" machine.openshift.io/memoryMb: "28672" machine.openshift.io/vCPU: "4" creationTimestamp: "2023-02-06T20:27:12Z" generation: 1 labels: machine.openshift.io/cluster-api-cluster: myclustername machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker name: myclustername-nc4ast4-gpu-worker-centralus1 namespace: openshift-machine-api resourceVersion: "166285" uid: 4eedce7f-6a57-4abe-b529-031140f02ffa spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: myclustername machine.openshift.io/cluster-api-machineset: myclustername-nc4ast4-gpu-worker-centralus1 template: metadata: labels: machine.openshift.io/cluster-api-cluster: myclustername machine.openshift.io/cluster-api-machine-role: worker machine.openshift.io/cluster-api-machine-type: worker machine.openshift.io/cluster-api-machineset: myclustername-nc4ast4-gpu-worker-centralus1 spec: lifecycleHooks: {} metadata: {} providerSpec: value: acceleratedNetworking: true apiVersion: machine.openshift.io/v1beta1 credentialsSecret: name: azure-cloud-credentials namespace: openshift-machine-api diagnostics: {} image: offer: "" publisher: "" resourceID: /resourceGroups/myclustername-rg/providers/Microsoft.Compute/galleries/gallery_myclustername_n6n4r/images/myclustername-gen2/versions/latest sku: "" version: "" kind: AzureMachineProviderSpec location: centralus managedIdentity: myclustername-identity metadata: creationTimestamp: null networkResourceGroup: myclustername-rg osDisk: diskSettings: {} diskSizeGB: 128 managedDisk: storageAccountType: Premium_LRS osType: Linux publicIP: false publicLoadBalancer: myclustername resourceGroup: myclustername-rg spotVMOptions: {} subnet: myclustername-worker-subnet userDataSecret: name: worker-user-data vmSize: Standard_NC4as_T4_v3 vnet: myclustername-vnet zone: "1" status: availableReplicas: 1 fullyLabeledReplicas: 1 observedGeneration: 1 readyReplicas: 1 replicas: 1
-
변경 사항을 확인하려면 다음 명령을 실행하여 원래 컴퓨팅 정의와 새 GPU 사용 노드 정의의
diff
를 수행합니다.$ diff machineset-azure.yaml machineset-azure-gpu.yaml
출력 예
14c14 < name: myclustername-worker-centralus1 --- > name: myclustername-nc4ast4-gpu-worker-centralus1 23c23 < machine.openshift.io/cluster-api-machineset: myclustername-worker-centralus1 --- > machine.openshift.io/cluster-api-machineset: myclustername-nc4ast4-gpu-worker-centralus1 30c30 < machine.openshift.io/cluster-api-machineset: myclustername-worker-centralus1 --- > machine.openshift.io/cluster-api-machineset: myclustername-nc4ast4-gpu-worker-centralus1 67c67 < vmSize: Standard_D4s_v3 --- > vmSize: Standard_NC4as_T4_v3
다음 명령을 실행하여 정의 파일에서 GPU 지원 컴퓨팅 머신 세트를 생성합니다.
$ oc create -f machineset-azure-gpu.yaml
출력 예
machineset.machine.openshift.io/myclustername-nc4ast4-gpu-worker-centralus1 created
다음 명령을 실행하여
openshift-machine-api
네임스페이스에 있는 머신 및 머신 세트를 확인합니다. 각 컴퓨팅 머신 세트는 Azure 리전 내의 다른 가용성 영역과 연결되어 있습니다. 설치 프로그램은 가용성 영역에서 컴퓨팅 시스템을 자동으로 로드 밸런싱합니다.$ oc get machineset -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE clustername-n6n4r-nc4ast4-gpu-worker-centralus1 1 1 1 1 122m clustername-n6n4r-worker-centralus1 1 1 1 1 8h clustername-n6n4r-worker-centralus2 1 1 1 1 8h clustername-n6n4r-worker-centralus3 1 1 1 1 8h
다음 명령을 실행하여
openshift-machine-api
네임스페이스에 있는 머신을 확인합니다. 집합당 하나의 컴퓨팅 시스템만 구성할 수 있지만 특정 리전 및 영역에 노드를 추가하도록 컴퓨팅 시스템 세트를 확장할 수 있습니다.$ oc get machines -n openshift-machine-api
출력 예
NAME PHASE TYPE REGION ZONE AGE myclustername-master-0 Running Standard_D8s_v3 centralus 2 6h40m myclustername-master-1 Running Standard_D8s_v3 centralus 1 6h40m myclustername-master-2 Running Standard_D8s_v3 centralus 3 6h40m myclustername-nc4ast4-gpu-worker-centralus1-w9bqn Running centralus 1 21m myclustername-worker-centralus1-rbh6b Running Standard_D4s_v3 centralus 1 6h38m myclustername-worker-centralus2-dbz7w Running Standard_D4s_v3 centralus 2 6h38m myclustername-worker-centralus3-p9b8c Running Standard_D4s_v3 centralus 3 6h38m
다음 명령을 실행하여 기존 노드, 시스템 및 머신 세트를 확인합니다. 각 노드는 특정 Azure 리전 및 OpenShift Container Platform 역할을 사용하는 머신 정의 인스턴스입니다.
$ oc get nodes
출력 예
NAME STATUS ROLES AGE VERSION myclustername-master-0 Ready control-plane,master 6h39m v1.27.3 myclustername-master-1 Ready control-plane,master 6h41m v1.27.3 myclustername-master-2 Ready control-plane,master 6h39m v1.27.3 myclustername-nc4ast4-gpu-worker-centralus1-w9bqn Ready worker 14m v1.27.3 myclustername-worker-centralus1-rbh6b Ready worker 6h29m v1.27.3 myclustername-worker-centralus2-dbz7w Ready worker 6h29m v1.27.3 myclustername-worker-centralus3-p9b8c Ready worker 6h31m v1.27.3
컴퓨팅 머신 세트 목록을 표시합니다.
$ oc get machineset -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE myclustername-worker-centralus1 1 1 1 1 8h myclustername-worker-centralus2 1 1 1 1 8h myclustername-worker-centralus3 1 1 1 1 8h
다음 명령을 실행하여 정의 파일에서 GPU 지원 컴퓨팅 머신 세트를 생성합니다.
$ oc create -f machineset-azure-gpu.yaml
컴퓨팅 머신 세트 목록을 표시합니다.
oc get machineset -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE myclustername-nc4ast4-gpu-worker-centralus1 1 1 1 1 121m myclustername-worker-centralus1 1 1 1 1 8h myclustername-worker-centralus2 1 1 1 1 8h myclustername-worker-centralus3 1 1 1 1 8h
검증
다음 명령을 실행하여 생성한 머신 세트를 확인합니다.
$ oc get machineset -n openshift-machine-api | grep gpu
MachineSet 복제본 수는
1
로 설정되므로 새Machine
개체가 자동으로 생성됩니다.출력 예
myclustername-nc4ast4-gpu-worker-centralus1 1 1 1 1 121m
다음 명령을 실행하여 머신 세트에서 생성한
Machine
오브젝트를 확인합니다.$ oc -n openshift-machine-api get machines | grep gpu
출력 예
myclustername-nc4ast4-gpu-worker-centralus1-w9bqn Running Standard_NC4as_T4_v3 centralus 1 21m
노드에 네임스페이스를 지정할 필요가 없습니다. 노드 정의는 클러스터 범위입니다.
2.3.14. Node Feature Discovery Operator 배포
GPU 지원 노드를 생성한 후 예약할 수 있도록 GPU 사용 노드를 검색해야 합니다. 이렇게 하려면 NFD(Node Feature Discovery) Operator를 설치합니다. NFD Operator는 노드에서 하드웨어 장치 기능을 식별합니다. 이는 인프라 노드에서 하드웨어 리소스를 식별하고 카탈로그하는 일반적인 문제를 해결하여 OpenShift Container Platform에서 사용할 수 있도록 합니다.
프로세스
- OpenShift Container Platform 콘솔의 OperatorHub 에서 Node Feature Discovery Operator를 설치합니다.
-
NFD Operator를 OperatorHub 에 설치한 후 설치된 Operator 목록에서 Node Feature Discovery 를 선택하고 Create instance 를 선택합니다. 이렇게 하면 각 컴퓨팅 노드에 대해
nfd-master
및nfd-worker
, 하나의nfd-worker
Pod가openshift-nfd
네임스페이스에 설치됩니다. 다음 명령을 실행하여 Operator가 설치되어 실행 중인지 확인합니다.
$ oc get pods -n openshift-nfd
출력 예
NAME READY STATUS RESTARTS AGE nfd-controller-manager-8646fcbb65-x5qgk 2/2 Running 7 (8h ago) 1d
- 콘솔에 설치된 Oerator로 이동하여 Create Node Feature Discovery 를 선택합니다.
-
생성 을 선택하여 NFD 사용자 정의 리소스를 빌드합니다. 이렇게 하면 하드웨어 리소스에 대해 OpenShift Container Platform 노드를 폴링하고 카탈로그하는
openshift-nfd
네임스페이스에 NFD Pod가 생성됩니다.
검증
빌드에 성공하면 다음 명령을 실행하여 NFD Pod가 각 노드에서 실행 중인지 확인합니다.
$ oc get pods -n openshift-nfd
출력 예
NAME READY STATUS RESTARTS AGE nfd-controller-manager-8646fcbb65-x5qgk 2/2 Running 7 (8h ago) 12d nfd-master-769656c4cb-w9vrv 1/1 Running 0 12d nfd-worker-qjxb2 1/1 Running 3 (3d14h ago) 12d nfd-worker-xtz9b 1/1 Running 5 (3d14h ago) 12d
NFD Operator는 벤더 PCI ID를 사용하여 노드의 하드웨어를 식별합니다. NVIDIA는 PCI ID
10de
를 사용합니다.다음 명령을 실행하여 NFD Operator가 검색한 NVIDIA GPU를 확인합니다.
$ oc describe node ip-10-0-132-138.us-east-2.compute.internal | egrep 'Roles|pci'
출력 예
Roles: worker feature.node.kubernetes.io/pci-1013.present=true feature.node.kubernetes.io/pci-10de.present=true feature.node.kubernetes.io/pci-1d0f.present=true
10de
는 GPU 사용 노드의 노드 기능 목록에 나타납니다. 즉, NFD Operator가 GPU 지원 MachineSet에서 노드를 올바르게 식별했습니다.
추가 리소스
2.3.14.1. 기존 Microsoft Azure 클러스터에서 가속 네트워킹 활성화
머신 세트 YAML 파일에 acceleratedNetworking
을 추가하여 Azure에서 가속 네트워킹을 활성화할 수 있습니다.
사전 요구 사항
- Machine API가 작동하는 기존 Microsoft Azure 클러스터가 있어야 합니다.
프로세스
providerSpec
필드에 다음을 추가합니다.providerSpec: value: acceleratedNetworking: true 1 vmSize: <azure-vm-size> 2
- 1
- 이 라인은 가속 네트워킹을 활성화합니다.
- 2
- vCPU가 4개 이상인 Azure VM 크기를 지정합니다. VM 크기에 대한 자세한 내용은 Microsoft Azure 설명서를 참조하십시오.
다음 단계
- 현재 실행 중인 노드에서 기능을 활성화하려면 기존 각 머신을 교체해야 합니다. 이 작업은 각 시스템에 대해 개별적으로 수행하거나 복제본을 0으로 축소한 다음 원하는 복제본 수로 다시 확장하여 수행할 수 있습니다.
검증
-
Microsoft Azure 포털에서 머신 세트에 의해 프로비저닝된 머신의 네트워킹 설정 페이지를 검토하고
Accelerated networking
필드가Enabled
로 설정되어 있는지 확인합니다.
추가 리소스