2.2. Azure에서 컴퓨팅 머신 세트 만들기


Microsoft Azure의 OpenShift Container Platform 클러스터에서 특정 목적에 맞는 다른 컴퓨팅 머신 세트를 만들 수 있습니다. 예를 들어, 지원되는 워크로드를 새 머신으로 이동할 수 있도록 인프라 머신 세트 및 관련 머신을 작성할 수 있습니다.

중요

머신 API가 작동하는 클러스터에서만 고급 머신 관리 및 스케일링 기능을 사용할 수 있습니다. 사용자 제공 인프라가 있는 클러스터는 Machine API를 사용하기 위해 추가적인 검증 및 구성이 필요합니다.

인프라 플랫폼 유형이 none인 클러스터는 Machine API를 사용할 수 없습니다. 이러한 제한은 클러스터에 연결된 컴퓨팅 머신이 해당 기능을 지원하는 플랫폼에 설치된 경우에도 적용됩니다. 설치 후에는 이 매개변수를 변경할 수 없습니다.

클러스터의 플랫폼 유형을 보려면 다음 명령을 실행하세요.

$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
Copy to Clipboard Toggle word wrap

2.2.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: machine.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
Copy to Clipboard Toggle word wrap
1
클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로하는 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Toggle word wrap

다음 명령을 실행하여 서브넷을 가져올 수 있습니다.

$  oc -n openshift-machine-api \
    -o jsonpath='{.spec.template.spec.providerSpec.value.subnet}{"\n"}' \
    get machineset/<infrastructure_id>-worker-centralus1
Copy to Clipboard Toggle word wrap

다음 명령을 실행하여 vnet을 가져올 수 있습니다.

$  oc -n openshift-machine-api \
    -o jsonpath='{.spec.template.spec.providerSpec.value.vnet}{"\n"}' \
    get machineset/<infrastructure_id>-worker-centralus1
Copy to Clipboard Toggle word wrap
2
추가할 노드 레이블을 지정합니다.
3
인프라 ID, 노드 레이블, 리전을 지정합니다.
4
컴퓨팅 머신 세트의 이미지 세부 정보를 지정합니다. Azure Marketplace 이미지를 사용하려면 "Azure Marketplace 제공 사용"을 참조하세요.
5
인스턴스 유형과 호환되는 이미지를 지정하세요. 설치 프로그램에서 생성된 Hyper-V 세대 V2 이미지에는 -gen2 접미사가 붙는 반면, V1 이미지는 접미사 없이 동일한 이름을 갖습니다.
6
기계를 배치할 지역을 지정하세요.
7
선택 사항: 머신 세트에서 사용자 정의 태그를 지정합니다. <custom_tag_name> 필드에 태그 이름을 입력하고, <custom_tag_value> 필드에 해당 태그 값을 입력합니다.
8
머신을 배치할 리전 내 영역을 지정합니다. 해당 지역이 지정한 구역을 지원하는지 확인하세요.
중요

해당 지역에서 가용성 영역을 지원하는 경우 가용성 영역을 지정해야 합니다. 영역을 지정하면 포드에 영구 볼륨 연결이 필요할 때 볼륨 노드 친화성 실패가 방지됩니다. 이를 위해 동일한 지역의 각 영역에 대한 컴퓨팅 머신 세트를 만들 수 있습니다.

2.2.2. 컴퓨팅 머신 세트 생성

설치 프로그램에서 생성한 컴퓨팅 머신 세트 외에도 고유한 머신 세트를 생성하여 선택한 특정 워크로드의 머신 컴퓨팅 리소스를 동적으로 관리할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 배포합니다.
  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 oc에 로그인합니다.

프로세스

  1. 컴퓨팅 머신 세트 CR(사용자 정의 리소스) 샘플이 포함된 새 YAML 파일을 만들고 <file_name>.yaml이라는 이름을 지정합니다.

    <clusterID><role> 매개 변수 값을 설정해야 합니다.

  2. 선택 사항: 특정 필드에 설정할 값이 확실하지 않은 경우 클러스터에서 기존 컴퓨팅 머신 세트를 확인할 수 있습니다.

    1. 클러스터의 컴퓨팅 머신 세트를 나열하려면 다음 명령을 실행합니다.

      $ oc get machinesets -n openshift-machine-api
      Copy to Clipboard Toggle word wrap

      출력 예

      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
      Copy to Clipboard Toggle word wrap

    2. 특정 컴퓨팅 머신 세트 CR(사용자 정의 리소스)의 값을 보려면 다음 명령을 실행합니다.

      $ oc get machineset <machineset_name> \
        -n openshift-machine-api -o yaml
      Copy to Clipboard Toggle word wrap

      출력 예

      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
      
              ...
      Copy to Clipboard Toggle word wrap

      1
      클러스터 인프라 ID입니다.
      2
      기본 노드 레이블입니다.
      참고

      사용자 프로비저닝 인프라가 있는 클러스터의 경우 컴퓨팅 머신 세트는 workerinfra 유형 머신만 생성할 수 있습니다.

      3
      컴퓨팅 머신 세트 CR의 <providerSpec> 섹션에 있는 값은 플랫폼에 따라 다릅니다. CR의 <providerSpec> 매개변수에 대한 자세한 내용은 공급자의 샘플 컴퓨팅 머신 세트 CR 구성을 참조하십시오.
  3. 다음 명령을 실행하여 MachineSet CR을 생성합니다.

    $ oc create -f <file_name>.yaml
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 실행하여 컴퓨팅 머신 세트 목록을 확인합니다.

    $ oc get machineset -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

    새 컴퓨팅 머신 세트를 사용할 수 있으면 DESIREDCURRENT 값이 일치합니다. 컴퓨팅 머신 세트를 사용할 수 없는 경우 몇 분 기다렸다가 명령을 다시 실행합니다.

2.2.3. 클러스터 자동 스케일러의 GPU 머신 세트 레이블 지정

클러스터 자동 확장기가 GPU 지원 노드를 배포하는 데 사용할 수 있는 머신을 나타내기 위해 머신 세트 레이블을 사용할 수 있습니다.

사전 요구 사항

  • 귀하의 클러스터는 클러스터 자동 확장기를 사용합니다.

프로세스

  • GPU 지원 노드를 배포하는 데 사용할 클러스터 자동 확장기에 대한 머신을 생성하려는 머신 세트에서 cluster-api/accelerator 레이블을 추가합니다.

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      name: machine-set-name
    spec:
      template:
        spec:
          metadata:
            labels:
              cluster-api/accelerator: nvidia-t4 
    1
    Copy to Clipboard Toggle word wrap
    1
    영숫자 문자( - , _ , 또는 .) 로 구성되고 영숫자 문자로 시작하고 끝나는 원하는 레이블을 지정하세요. 예를 들어, Nvidia T4 GPU를 나타내려면 nvidia-t4를 사용하고, A10G GPU를 나타내려면 nvidia-a10g를 사용할 수 있습니다.
    참고

    ClusterAutoscaler CR의 spec.resourceLimits.gpus.type 매개변수에 대해 이 레이블의 값을 지정해야 합니다. 자세한 내용은 "클러스터 자동 확장 리소스 정의"를 참조하세요.

2.2.4. Azure Marketplace 제공 서비스 사용

Azure Marketplace 제품을 사용하는 머신을 배포하는 Azure에서 실행되는 머신 세트를 만들 수 있습니다. 이 서비스를 사용하려면 먼저 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 이미지를 나타냅니다.
중요

64비트 ARM 인스턴스가 있는 클러스터에서는 Azure Marketplace를 사용하여 이미지를 설치하는 것이 지원되지 않습니다.

Azure Marketplace 이미지를 사용하려면 컴퓨팅 머신의 RHCOS 이미지만 수정해야 합니다. 제어 평면 머신과 인프라 노드에는 OpenShift Container Platform 구독이 필요하지 않으며 기본적으로 공개 RHCOS 기본 이미지를 사용하므로 Azure 청구서에 구독 비용이 발생하지 않습니다. 따라서 클러스터 기본 부트 이미지나 제어 플레인 부트 이미지를 수정해서는 안 됩니다. Azure Marketplace 이미지를 적용하면 회수할 수 없는 추가 라이선스 비용이 발생합니다.

사전 요구 사항

  • Azure CLI 클라이언트 (az) 를 설치했습니다.
  • 귀하의 Azure 계정은 해당 혜택을 받을 자격이 있으며 Azure CLI 클라이언트를 사용하여 이 계정에 로그인했습니다.

프로세스

  1. 다음 명령 중 하나를 실행하여 사용 가능한 모든 OpenShift Container Platform 이미지를 표시합니다.

    • 북아메리카:

      $  az vm image list --all --offer rh-ocp-worker --publisher redhat -o table
      Copy to Clipboard Toggle word wrap

      출력 예

      Offer          Publisher       Sku                 Urn                                                             Version
      -------------  --------------  ------------------  --------------------------------------------------------------  -----------------
      rh-ocp-worker  RedHat          rh-ocp-worker       RedHat:rh-ocp-worker:rh-ocp-worker:4.17.2024100419              4.17.2024100419
      rh-ocp-worker  RedHat          rh-ocp-worker-gen1  RedHat:rh-ocp-worker:rh-ocp-worker-gen1:4.17.2024100419         4.17.2024100419
      Copy to Clipboard Toggle word wrap

    • EMEA:

      $  az vm image list --all --offer rh-ocp-worker --publisher redhat-limited -o table
      Copy to Clipboard Toggle word wrap

      출력 예

      Offer          Publisher       Sku                 Urn                                                                     Version
      -------------  --------------  ------------------  --------------------------------------------------------------          -----------------
      rh-ocp-worker  redhat-limited  rh-ocp-worker       redhat-limited:rh-ocp-worker:rh-ocp-worker:4.17.2024100419              4.17.2024100419
      rh-ocp-worker  redhat-limited  rh-ocp-worker-gen1  redhat-limited:rh-ocp-worker:rh-ocp-worker-gen1:4.17.2024100419         4.17.2024100419
      Copy to Clipboard Toggle word wrap

    참고

    컴퓨팅 및 제어 평면 노드에 사용 가능한 최신 이미지를 사용합니다. 필요한 경우, 설치 과정의 일부로 VM이 자동으로 업그레이드됩니다.

  2. 다음 명령 중 하나를 실행하여 제안에 대한 이미지를 검사하세요.

    • 북아메리카:

      $ az vm image show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
      Copy to Clipboard Toggle word wrap
    • EMEA:

      $ az vm image show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
      Copy to Clipboard Toggle word wrap
  3. 다음 명령 중 하나를 실행하여 제안 조건을 검토하세요.

    • 북아메리카:

      $ az vm image terms show --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
      Copy to Clipboard Toggle word wrap
    • EMEA:

      $ az vm image terms show --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
      Copy to Clipboard Toggle word wrap
  4. 다음 명령 중 하나를 실행하여 제공 조건에 동의하세요.

    • 북아메리카:

      $ az vm image terms accept --urn redhat:rh-ocp-worker:rh-ocp-worker:<version>
      Copy to Clipboard Toggle word wrap
    • EMEA:

      $ az vm image terms accept --urn redhat-limited:rh-ocp-worker:rh-ocp-worker:<version>
      Copy to Clipboard Toggle word wrap
  5. 제안의 이미지 세부 정보, 특히 publisher, offer, sku, version 값을 기록합니다.
  6. 제안에 대한 이미지 세부 정보를 사용하여 머신 세트 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
    Copy to Clipboard Toggle word wrap

2.2.5. Azure 부팅 진단 활성화

머신 세트에서 생성한 Azure 머신에서 부팅 진단을 활성화할 수 있습니다.

사전 요구 사항

  • 기존 Microsoft Azure 클러스터가 있어야 합니다.

프로세스

  • 스토리지 유형에 적용할 수 있는 diagnostics 구성을 머신 세트 YAML 파일의 providerSpec 필드에 추가합니다.

    • Azure 관리형 저장소 계정의 경우:

      providerSpec:
        diagnostics:
          boot:
            storageAccountType: AzureManaged 
      1
      Copy to Clipboard Toggle word wrap
      1
      Azure 관리형 저장소 계정을 지정합니다.
    • Azure 관리되지 않는 저장소 계정의 경우:

      providerSpec:
        diagnostics:
          boot:
            storageAccountType: CustomerManaged 
      1
      
            customerManaged:
              storageAccountURI: https://<storage-account>.blob.core.windows.net 
      2
      Copy to Clipboard Toggle word wrap
      1
      Azure 관리되지 않는 저장소 계정을 지정합니다.
      2
      <storage-account>를 스토리지 계정 이름으로 바꿉니다.
      참고

      Azure Blob Storage 데이터 서비스만 지원됩니다.

검증

  • Microsoft Azure Portal에서 머신 세트에 의해 배포된 머신의 부팅 진단 페이지를 검토하고 머신의 직렬 로그를 볼 수 있는지 확인합니다.

2.2.6. 머신을 Spot 가상머신으로 배포하는 머신 세트

Azure에서 실행되는 컴퓨팅 머신 세트를 만들어 머신을 보장되지 않은 Spot VM으로 배포하면 비용을 절감할 수 있습니다. Spot 가상 머신은 사용되지 않은 Azure 용량을 사용하며 표준 가상 머신보다 비용이 저렴합니다. 일괄 처리 또는 상태 비저장, 수평적으로 확장 가능한 워크로드와 같이 인터럽트를 허용할 수 있는 워크로드에 Spot 가상 머신을 사용할 수 있습니다.

Azure는 언제든지 Spot 가상 머신을 종료 할 수 있습니다. Azure는 중단이 발생하면 사용자에게 30 초 동안 경고 메세지를 보냅니다. OpenShift Container Platform은 Azure가 종료 경고를 발행할 때 영향을 받는 인스턴스에서 워크로드를 제거하기 시작합니다.

다음과 같은 이유로 Spot 가상 머신을 사용할 때 중단될 수 있습니다.

  • 인스턴스 가격이 최대 가격을 초과합니다.
  • Spot 가상 머신의 공급이 감소합니다.
  • Azure는 용량을 복원해야합니다.

Azure가 인스턴스를 종료하면 Spot 가상 머신 노드에서 실행되는 종료 프로세스가 머신 리소스를 삭제합니다. 컴퓨팅 머신 세트 복제본 수량을 충족하기 위해 컴퓨팅 머신 세트는 Spot VM을 요청하는 머신을 생성합니다.

2.2.6.1. 컴퓨팅 머신 세트를 사용하여 Spot 가상 머신 생성

Azure에서 Spot VM을 시작하려면 컴퓨팅 머신 세트 YAML 파일에 spotVMOptions를 추가하세요.

프로세스

  • providerSpec 필드 아래에 다음 행을 추가합니다.

    providerSpec:
      value:
        spotVMOptions: {}
    Copy to Clipboard Toggle word wrap

    선택적으로 spotVMOptions.maxPrice 필드를 설정하여 Spot VM의 비용을 제한할 수 있습니다. 예를 들어 maxPrice: '0.98765'를 설정할 수 있습니다. maxPrice가 설정된 경우 이 값은 시간당 최대 Spot 가격으로 사용됩니다. 설정되지 않은 경우 최대 가격은 기본적으로 -1로 설정된 표준 가상 머신 가격까지 청구됩니다.

    Azure에서는 Spot VM 가격을 표준 가격으로 제한합니다. 인스턴스가 기본 maxPrice로 설정된 경우 Azure는 가격 설정에 따라 인스턴스를 제거하지 않습니다. 그러나 용량 제한으로 인해 인스턴스를 제거할 수 있습니다.

참고

기본 표준 가상 머신 가격을 maxPrice 값으로 사용하고 Spot 가상 머신의 최대 가격을 설정하지 않는 것이 좋습니다.

2.2.7. Ephemeral OS 디스크에 머신을 배포하는 머신 세트

Azure에서 실행되는 컴퓨팅 머신 세트를 만들어 임시 OS 디스크에 머신을 배포할 수 있습니다. 임시 OS 디스크는 원격 Azure Storage가 아닌 로컬 VM 용량을 사용합니다. 따라서 이 구성은 추가 비용을 발생시키지 않으며 읽기, 쓰기, 리이미징에 대한 대기 시간을 낮춥니다.

2.2.7.1. 컴퓨팅 머신 세트를 사용하여 Ephemeral OS 디스크에 머신 생성

Azure에서 Ephemeral OS 디스크에 있는 머신을 시작하려면 컴퓨팅 머신 세트 YAML 파일을 편집하세요.

사전 요구 사항

  • 기존 Microsoft Azure 클러스터가 있어야 합니다.

프로세스

  1. 다음 명령을 실행하여 사용자 정의 리소스(CR)를 편집합니다.

    $ oc edit machineset <machine-set-name>
    Copy to Clipboard Toggle word wrap

    여기서 <머신 세트 이름> 은 Ephemeral OS 디스크에 머신을 프로비저닝하려는 컴퓨팅 머신 세트입니다.

  2. providerSpec 필드에 다음을 추가합니다.

    providerSpec:
      value:
        ...
        osDisk:
           ...
           diskSettings: 
    1
    
             ephemeralStorageLocation: Local 
    2
    
           cachingType: ReadOnly 
    3
    
           managedDisk:
             storageAccountType: Standard_LRS 
    4
    
           ...
    Copy to Clipboard Toggle word wrap
    1 2 3
    이러한 줄은 임시 OS 디스크를 사용할 수 있습니다.
    4
    임시 OS 디스크는 표준 LRS 스토리지 계정 유형을 사용하는 VM 또는 확장 집합 인스턴스에서만 지원됩니다.
    중요

    OpenShift Container Platform의 Ephemeral OS 디스크 지원 구현은 CacheDisk 배치 유형만 지원합니다. placement 구성 설정은 변경하지 마십시오.

  3. 업데이트된 구성을 사용하여 컴퓨팅 머신 세트를 생성합니다.

    $ oc create -f <machine-set-config>.yaml
    Copy to Clipboard Toggle word wrap

검증

  • Microsoft Azure 포털에서 컴퓨팅 머신 세트에서 배포한 머신의 개요 페이지를 검토하고 Ephemeral OS disk 필드가 OS cache placement로 설정되어 있는지 확인합니다.

Ultra Disks가 있는 머신을 배포하는 Azure에서 실행되는 머신 세트를 만들 수 있습니다. Ultra 디스크는 가장 까다로운 데이터 워크로드에 사용하기 위한 고성능 스토리지입니다.

Azure Ultra Disks에서 지원하는 스토리지 클래스에 동적으로 바인딩하고 이를 Pod에 마운트하는 영구 볼륨 클레임(PVC)을 만들 수도 있습니다.

참고

데이터 디스크는 디스크 처리량이나 디스크 IOPS를 지정하는 기능을 지원하지 않습니다. PVC를 사용하여 이러한 속성을 구성할 수 있습니다.

2.2.8.1. 머신 세트를 사용하여 울트라 디스크가 있는 머신 생성

Azure에서 Ultra Disks가 있는 머신을 배포하려면 머신 세트 YAML 파일을 편집하세요.

사전 요구 사항

  • 기존 Microsoft Azure 클러스터가 있어야 합니다.

프로세스

  1. 다음 명령을 실행하여 worker 데이터 시크릿을 사용하여 openshift-machine-api 네임스페이스에 사용자 정의 시크릿을 생성합니다.

    $ oc -n openshift-machine-api \
    get secret <role>-user-data \ 
    1
    
    --template='{{index .data.userData | base64decode}}' | jq > userData.txt 
    2
    Copy to Clipboard Toggle word wrap
    1
    <role>worker 로 바꿉니다.
    2
    새 사용자 지정 비밀번호의 이름으로 userData.txt를 지정합니다.
  2. 텍스트 편집기에서 userData.txt 파일을 열고 파일의 마지막 } 문자를 찾습니다.

    1. 바로 앞 줄에 , 를 추가합니다 .
    2. 뒤에 새 행을 생성하고 , 다음에 구성 세부 정보를 추가합니다.

      "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"
          }
        ]
      }
      Copy to Clipboard Toggle word wrap
      1
      울트라 디스크로 노드에 연결하려는 디스크에 대한 구성 세부 정보입니다.
      2
      사용 중인 머신 세트의 dataDisks 스탠자에 정의된 lun 값을 지정합니다. 예를 들어, 머신 세트에 lun: 0이 포함되어 있으면 lun0을 지정합니다. 이 구성 파일에서 여러 "disks" 항목을 지정하여 여러 데이터 디스크를 초기화할 수 있습니다. 여러 개의 "디스크" 항목을 지정하는 경우 각 항목의 LUN 값이 머신 세트의 값과 일치하는지 확인하세요.
      3
      디스크의 새 파티션에 대한 구성 세부 정보입니다.
      4
      파티션에 대한 레이블을 지정합니다. lun0 의 첫 번째 파티션에 lun0 과 같은 계층적 이름을 사용하는 것이 유용할 수 있습니다.
      5
      파티션의 총 크기를 MiB 단위로 지정합니다.
      6
      파티션을 포맷할 때 사용할 파일 시스템을 지정합니다. 파티션 레이블을 사용하여 파티션을 지정합니다.
      7
      부팅 시 파티션을 마운트할 systemd 유닛을 지정합니다. 파티션 레이블을 사용하여 파티션을 지정합니다. 이 구성 파일에서 여러 개의 "partitions" 항목을 지정하여 여러 파티션을 만들 수 있습니다. 여러 개의 "partitions" 항목을 지정하는 경우 각각에 대해 systemd 장치를 지정해야 합니다.
      8
      Wherestorage.filesystems.path 의 값을 지정합니다. What에 대해 storage.filesystems.device 값을 지정합니다.
  3. 다음 명령을 실행하여 비활성화 템플릿 값을 disableTemplating.txt 라는 파일에 추출합니다.

    $ oc -n openshift-machine-api get secret <role>-user-data \ 
    1
    
    --template='{{index .data.disableTemplating | base64decode}}' | jq > disableTemplating.txt
    Copy to Clipboard Toggle word wrap
    1
    <role>worker 로 바꿉니다.
  4. 다음 명령을 실행하여 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
    Copy to Clipboard Toggle word wrap
    1
    <role>-user-data-x5 의 경우 시크릿 이름을 지정합니다. <role>worker 로 바꿉니다.
  5. 기존 Azure MachineSet 사용자 지정 리소스(CR)를 복사하고 다음 명령을 실행하여 편집합니다.

    $ oc edit machineset <machine_set_name>
    Copy to Clipboard Toggle word wrap

    여기서 <machine_set_name> 은 Ultra Disks를 사용하여 머신을 프로비저닝하려는 머신 세트입니다.

  6. 다음 줄을 표시된 위치에 추가합니다.

    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
    Copy to Clipboard Toggle word wrap
    1
    이 머신 세트에서 생성된 노드를 선택하는 데 사용할 레이블을 지정합니다. 이 절차에서는 이 값에 대해 disk.ultrassd를 사용합니다.
    2 3
    이 라인은 울트라 디스크를 사용할 수 있습니다. dataDisks 의 경우 전체 연을 포함합니다.
    4
    이전에 생성한 사용자 데이터 비밀번호를 지정합니다. <role>worker 로 바꿉니다.
  7. 다음 명령을 실행하여 업데이트된 구성을 사용하여 머신 세트를 만듭니다.

    $ oc create -f <machine_set_name>.yaml
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 머신이 생성되었는지 확인하세요.

    $ oc get machines
    Copy to Clipboard Toggle word wrap

    기계는 실행 상태여야 합니다.

  2. 실행 중이고 노드가 연결된 머신의 경우 다음 명령을 실행하여 파티션을 검증합니다.

    $ oc debug node/<node_name> -- chroot /host lsblk
    Copy to Clipboard Toggle word wrap

    이 명령에서 oc debug node/<node_name>은 노드 <node_name> 에서 디버깅 셸을 시작하고 -- 로 명령을 전달합니다. 전달된 명령 chroot /host는 기본 호스트 OS 바이너리에 대한 액세스를 제공하고, lsblk는 호스트 OS 머신에 연결된 블록 장치를 보여줍니다.

다음 단계

  • 포드 내에서 Ultra Disk를 사용하려면 마운트 지점을 사용하는 워크로드를 생성하세요. 다음 예와 유사한 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
    Copy to Clipboard Toggle word wrap

2.2.8.2. Ultra Disks를 활성화하는 머신 세트에 대한 문제 해결 리소스

이 섹션의 정보를 활용해 발생할 수 있는 문제를 파악하고 복구하세요.

2.2.8.2.1. 잘못된 Ultra Disk 구성

머신 세트에서 ultraSSDCapability 매개변수의 잘못된 구성이 지정된 경우 머신 프로비저닝이 실패합니다.

예를 들어, ultraSSDCapability 매개변수가 Disabled 로 설정되어 있지만 dataDisks 매개변수에 ultra disk가 지정된 경우 다음 오류 메시지가 나타납니다.

StorageAccountType UltraSSD_LRS can be used only when additionalCapabilities.ultraSSDEnabled is set.
Copy to Clipboard Toggle word wrap
  • 이 문제를 해결하려면 컴퓨터 세트 구성이 올바른지 확인하세요.
2.2.8.2.2. 지원되지 않는 디스크 매개변수

Ultra Disks와 호환되지 않는 지역, 가용성 영역 또는 인스턴스 크기가 머신 세트에 지정된 경우 머신 프로비저닝이 실패합니다. 다음 오류 메시지를 로그에서 확인하세요.

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>."
Copy to Clipboard Toggle word wrap
  • 이 문제를 해결하려면 지원되는 환경에서 이 기능을 사용하고 있는지, 그리고 머신 세트 구성이 올바른지 확인하세요.
2.2.8.2.3. 디스크를 삭제할 수 없습니다

데이터 디스크로 Ultra Disk를 삭제하는 작업이 예상대로 작동하지 않으면 해당 머신이 삭제되고 데이터 디스크가 버려집니다. 필요한 경우 고립된 디스크를 수동으로 삭제해야 합니다.

2.2.9. 머신 세트의 고객 관리 암호화 키 활성화

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
    Copy to Clipboard Toggle word wrap

OpenShift Container Platform 4.19는 Azure 가상 머신(VM)에 대한 신뢰할 수 있는 시작을 지원합니다. 머신 세트 YAML 파일을 편집하면 해당 머신 세트가 배포하는 머신에 대해 신뢰할 수 있는 시작 옵션을 구성할 수 있습니다. 예를 들어, 보안 부팅이나 전용 가상 신뢰할 수 있는 플랫폼 모듈(vTPM) 인스턴스와 같은 UEFI 보안 기능을 사용하도록 이러한 컴퓨터를 구성할 수 있습니다.

참고

일부 기능 조합으로 인해 잘못된 구성이 발생합니다.

Expand
표 2.1. UEFI 기능 조합 호환성
보안 부팅 [1]vTPM[2]유효한 구성

활성화됨

활성화됨

제공됨

활성화됨

비활성화됨

제공됨

활성화됨

생략됨

제공됨

비활성화됨

활성화됨

제공됨

생략됨

활성화됨

제공됨

비활성화됨

비활성화됨

없음

생략됨

비활성화됨

없음

생략됨

생략됨

없음

  1. secureBoot 필드 사용.
  2. virtualizedTrustedPlatformModule 필드를 사용합니다.

관련 기능에 대한 자세한 내용은 Azure 가상 머신에 대한 신뢰할 수 있는 시작 에 대한 Microsoft Azure 설명서를 참조하세요.

프로세스

  1. 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 파일을 만듭니다.
  2. providerSpec 필드 아래의 다음 섹션을 편집하여 유효한 구성을 제공합니다.

    UEFI 보안 부팅 및 vTPM이 활성화된 유효한 구성 샘플

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        machines_v1beta1_machine_openshift_io:
          spec:
            providerSpec:
              value:
                securityProfile:
                  settings:
                    securityType: TrustedLaunch 
    1
    
                    trustedLaunch:
                      uefiSettings: 
    2
    
                        secureBoot: Enabled 
    3
    
                        virtualizedTrustedPlatformModule: Enabled 
    4
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    Azure 가상 머신에 대한 신뢰할 수 있는 시작을 사용할 수 있습니다. 이 값은 모든 유효한 구성에 필요합니다.
    2
    사용할 UEFI 보안 기능을 지정합니다. 이 섹션은 모든 유효한 구성에 필요합니다.
    3
    UEFI 보안 부팅을 활성화합니다.
    4
    vTPM을 사용할 수 있습니다.

검증

  • Azure Portal에서 머신 세트에 의해 배포된 머신의 세부 정보를 검토하고 신뢰할 수 있는 시작 옵션이 구성한 값과 일치하는지 확인합니다.

2.2.11. 머신 세트를 사용하여 Azure 기밀 가상 머신 구성

OpenShift Container Platform 4.19는 Azure 기밀 가상 머신(VM)을 지원합니다.

참고

현재 64비트 ARM 아키텍처에서는 기밀 VM이 지원되지 않습니다.

머신 세트 YAML 파일을 편집하면 머신 세트가 배포하는 머신에 대해 사용하는 기밀 VM 옵션을 구성할 수 있습니다. 예를 들어, 보안 부팅이나 전용 가상 신뢰할 수 있는 플랫폼 모듈(vTPM) 인스턴스와 같은 UEFI 보안 기능을 사용하도록 이러한 컴퓨터를 구성할 수 있습니다.

관련 기능에 대한 자세한 내용은 Confidential 가상 머신에 대한 Microsoft Azure 설명서를 참조하세요.

프로세스

  1. 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 파일을 만듭니다.
  2. 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
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    기밀 VM을 사용할 때 관리 디스크에 대한 보안 프로필 설정을 지정합니다.
    2
    Azure VM Guest State(VMGS) Blob의 암호화를 활성화합니다. 이 설정에는 vTPM을 사용해야 합니다.
    3
    기밀 VM에 대한 보안 프로필 설정을 지정합니다.
    4
    기밀 VM을 사용할 수 있습니다. 이 값은 모든 유효한 구성에 필요합니다.
    5
    사용할 UEFI 보안 기능을 지정합니다. 이 섹션은 모든 유효한 구성에 필요합니다.
    6
    UEFI 보안 부팅을 비활성화합니다.
    7
    vTPM을 사용할 수 있습니다.
    8
    기밀 VM을 지원하는 인스턴스 유형을 지정합니다.

검증

  • Azure Portal에서 머신 세트에 의해 배포된 머신의 세부 정보를 검토하고 기밀 VM 옵션이 구성한 값과 일치하는지 확인합니다.

2.2.12. Microsoft Azure VM을 위한 가속 네트워킹

가속 네트워킹은 단일 루트 I/O 가상화(SR-IOV)를 사용하여 Microsoft Azure VM에 스위치에 대한 보다 직접적인 경로를 제공합니다. 이렇게 하면 네트워크 성능이 향상됩니다. 이 기능은 설치 중 또는 설치 후 활성화할 수 있습니다.

2.2.12.1. 제한

가속 네트워킹을 사용할지 여부를 결정할 때 다음과 같은 제한 사항을 고려하세요.

  • 가속 네트워킹은 Machine API가 작동하는 클러스터에서만 지원됩니다.
  • Azure 작업자 노드의 최소 요구 사항은 vCPU 2개이지만 가속 네트워킹에는 vCPU가 4개 이상 포함된 Azure VM 크기가 필요합니다. 이 요구 사항을 충족하려면 머신 세트에서 vmSize 값을 변경할 수 있습니다. Azure VM 크기에 대한 자세한 내용은 Microsoft Azure 설명서를 참조하세요.

  • 기존 Azure 클러스터에서 이 기능을 활성화하면 새로 프로비저닝된 노드만 영향을 받습니다. 현재 실행 중인 노드가 조정되지 않았습니다. 모든 노드에서 해당 기능을 활성화하려면 기존 머신을 모두 교체해야 합니다. 이 작업은 각 시스템에 대해 개별적으로 수행하거나 복제본을 0으로 축소한 다음 원하는 복제본 수로 다시 확장하여 수행할 수 있습니다.

2.2.13. 머신 세트를 사용하여 용량 예약 구성

OpenShift Container Platform 버전 4.19 이상에서는 Microsoft Azure 클러스터의 용량 예약 그룹을 통한 주문형 용량 예약을 지원합니다.

사용자가 정의한 용량 요청의 매개변수와 일치하는 사용 가능한 리소스에 머신을 배포하도록 머신 세트를 구성할 수 있습니다. 이러한 매개변수는 VM 크기, 리전 및 예약할 인스턴스 수를 지정합니다. Azure 서브스크립션 할당량이 용량 요청을 수용할 수 있는 경우 배포에 성공합니다.

이 Azure 제품에 대한 제한 사항 및 제안된 사용 사례를 포함한 자세한 내용은 Microsoft Azure 설명서의 주문형 용량 예약을 참조하세요.

참고

머신 세트의 기존 용량 예약 구성은 변경할 수 없습니다. 다른 용량 예약 그룹을 사용하려면 머신 세트와 이전 머신 세트가 배포된 머신을 교체해야 합니다.

사전 요구 사항

  • cluster-admin 권한이 있는 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • 용량 예약 그룹을 생성했습니다. 자세한 내용은 Microsoft Azure 설명서에서 용량 예약 만들기를 참조하세요.

프로세스

  1. 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 파일을 만듭니다.
  2. providerSpec 필드 아래의 다음 섹션을 편집하세요.

    샘플 구성

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              capacityReservationGroupID: <capacity_reservation_group> 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    시스템이 머신을 배포하도록 설정할 용량 예약 그룹의 ID를 지정합니다.

검증

  • 시스템 배포를 확인하려면 다음 명령을 실행하여 머신 세트에서 생성한 머신을 나열합니다.

    $ oc get machines.machine.openshift.io \
      -n openshift-machine-api \
      -l machine.openshift.io/cluster-api-machineset=<machine_set_name>
    Copy to Clipboard Toggle word wrap

    여기서 <machine_set_name>은 컴퓨팅 머신 세트의 이름입니다.

    출력에서 나열된 시스템의 특성이 용량 예약의 매개변수와 일치하는지 확인합니다.

2.2.14. 기존 OpenShift Container Platform 클러스터에 GPU 노드 추가

기본 컴퓨팅 머신 세트 구성을 복사하고 수정하여 Azure 클라우드 공급자를 위한 GPU 지원 머신 세트와 머신을 만들 수 있습니다.

다음 표에는 검증된 인스턴스 유형이 나열되어 있습니다.

Expand
vmSize엔비디아 GPU 가속기최대 GPU 수아키텍처

Standard_NC24s_v3

V100

4

x86

Standard_NC4as_T4_v3

T4

1

x86

ND A100 v4

A100

8

x86

참고

기본적으로 Azure 구독에는 GPU가 있는 Azure 인스턴스 유형에 대한 할당량이 없습니다. 고객은 위에 나열된 Azure 인스턴스 제품군에 대한 할당량 증가를 요청해야 합니다.

프로세스

  1. 다음 명령을 실행하여 openshift-machine-api 네임스페이스에 있는 머신과 머신 세트를 확인하세요. 각 컴퓨팅 머신 세트는 Azure 지역 내의 다른 가용성 영역과 연결됩니다. 설치 프로그램은 가용성 영역 전반에 걸쳐 컴퓨팅 머신의 부하를 자동으로 분산합니다.

    $ oc get machineset -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 기존 컴퓨트 MachineSet 정의 중 하나의 복사본을 만들고 결과를 YAML 파일에 출력합니다. 이는 GPU 지원 컴퓨팅 머신 세트 정의의 기초가 됩니다.

    $ oc get machineset -n openshift-machine-api myclustername-worker-centralus1 -o yaml > machineset-azure.yaml
    Copy to Clipboard Toggle word wrap
  3. 머신세트의 내용을 확인하세요:

    $ cat machineset-azure.yaml
    Copy to Clipboard Toggle word wrap

    예제 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
    Copy to Clipboard Toggle word wrap

  4. 다음 명령을 실행하여 machineset-azure.yaml 파일의 복사본을 만듭니다.

    $ cp machineset-azure.yaml machineset-azure-gpu.yaml
    Copy to Clipboard Toggle word wrap
  5. machineset-azure-gpu.yaml 에서 다음 필드를 업데이트합니다.

    • .metadata.name을 gpu를 포함하는 이름으로 변경합니다.
    • .spec.selector.matchLabels["machine.openshift.io/cluster-api-machineset"]을 새로운 .metadata.name과 일치하도록 변경합니다.
    • .spec.template.metadata.labels["machine.openshift.io/cluster-api-machineset"]을 새로운 .metadata.name 과 일치하도록 변경합니다.
    • Change .spec.template.spec.providerSpec.value.vmSize to 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
      Copy to Clipboard Toggle word wrap

  6. 변경 사항을 확인하려면 다음 명령을 실행하여 원래 컴퓨팅 정의와 새 GPU 사용 노드 정의의 diff를 수행합니다.

    $ diff machineset-azure.yaml machineset-azure-gpu.yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

  7. 다음 명령을 실행하여 정의 파일에서 GPU 지원 컴퓨팅 머신 세트를 만듭니다.

    $ oc create -f machineset-azure-gpu.yaml
    Copy to Clipboard Toggle word wrap

    출력 예

    machineset.machine.openshift.io/myclustername-nc4ast4-gpu-worker-centralus1 created
    Copy to Clipboard Toggle word wrap

  8. 다음 명령을 실행하여 openshift-machine-api 네임스페이스에 있는 머신과 머신 세트를 확인하세요. 각 컴퓨팅 머신 세트는 Azure 지역 내의 다른 가용성 영역과 연결됩니다. 설치 프로그램은 가용성 영역 전반에 걸쳐 컴퓨팅 머신의 부하를 자동으로 분산합니다.

    $ oc get machineset -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

  9. 다음 명령을 실행하여 openshift-machine-api 네임스페이스에 있는 머신을 확인하세요. 세트당 하나의 컴퓨팅 머신만 구성할 수 있지만, 특정 지역 및 영역에 노드를 추가하기 위해 컴퓨팅 머신 세트를 확장할 수 있습니다.

    $ oc get machines -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

  10. 다음 명령을 실행하여 기존 노드, 머신, 머신 세트를 확인하세요. 각 노드는 특정 Azure 지역과 OpenShift Container Platform 역할을 갖춘 머신 정의의 인스턴스입니다.

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                                STATUS   ROLES                  AGE     VERSION
    myclustername-master-0                              Ready    control-plane,master   6h39m   v1.32.3
    myclustername-master-1                              Ready    control-plane,master   6h41m   v1.32.3
    myclustername-master-2                              Ready    control-plane,master   6h39m   v1.32.3
    myclustername-nc4ast4-gpu-worker-centralus1-w9bqn   Ready    worker                 14m     v1.32.3
    myclustername-worker-centralus1-rbh6b               Ready    worker                 6h29m   v1.32.3
    myclustername-worker-centralus2-dbz7w               Ready    worker                 6h29m   v1.32.3
    myclustername-worker-centralus3-p9b8c               Ready    worker                 6h31m   v1.32.3
    Copy to Clipboard Toggle word wrap

  11. 컴퓨팅 머신 세트 목록을 확인하세요.

    $ oc get machineset -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

  12. 다음 명령을 실행하여 정의 파일에서 GPU 지원 컴퓨팅 머신 세트를 만듭니다.

    $ oc create -f machineset-azure-gpu.yaml
    Copy to Clipboard Toggle word wrap
  13. 컴퓨팅 머신 세트 목록을 확인하세요.

    oc get machineset -n openshift-machine-api
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

검증

  1. 다음 명령을 실행하여 생성한 머신 세트를 확인하세요.

    $ oc get machineset -n openshift-machine-api | grep gpu
    Copy to Clipboard Toggle word wrap

    MachineSet 복제본 수가 1 로 설정되어 새로운 Machine 객체가 자동으로 생성됩니다.

    출력 예

    myclustername-nc4ast4-gpu-worker-centralus1   1         1         1       1           121m
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 머신 세트가 생성한 머신 객체를 확인하세요.

    $ oc -n openshift-machine-api get machines | grep gpu
    Copy to Clipboard Toggle word wrap

    출력 예

    myclustername-nc4ast4-gpu-worker-centralus1-w9bqn   Running   Standard_NC4as_T4_v3   centralus   1      21m
    Copy to Clipboard Toggle word wrap

참고

노드에 대한 네임스페이스를 지정할 필요가 없습니다. 노드 정의는 클러스터 범위입니다.

2.2.15. 노드 기능 검색 연산자 배포

GPU 지원 노드를 생성한 후에는 GPU 지원 노드를 검색하여 예약해야 합니다. 이렇게 하려면 NFD(Node Feature Discovery) Operator를 설치하세요. NFD 운영자는 노드의 하드웨어 장치 기능을 식별합니다. 이는 인프라 노드에서 하드웨어 리소스를 식별하고 카탈로그화하여 OpenShift Container Platform에서 사용할 수 있도록 하는 일반적인 문제를 해결합니다.

프로세스

  1. OpenShift Container Platform 콘솔에서 OperatorHub 의 Node Feature Discovery Operator를 설치합니다.
  2. OperatorHub 에 NFD Operator를 설치한 후, 설치된 Operator 목록에서 Node Feature Discovery를 선택하고 인스턴스 생성을 선택합니다. 이렇게 하면 각 컴퓨팅 노드에 대해 nfd-masternfd-worker, 하나의 nfd-worker Pod가 openshift-nfd 네임스페이스에 설치됩니다.
  3. 다음 명령을 실행하여 Operator가 설치되고 실행 중인지 확인하세요.

    $ oc get pods -n openshift-nfd
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                       READY    STATUS     RESTARTS   AGE
    
    nfd-controller-manager-8646fcbb65-x5qgk    2/2      Running 7  (8h ago)   1d
    Copy to Clipboard Toggle word wrap

  4. 콘솔에서 설치된 Oerator를 찾아 '노드 기능 검색 만들기'를 선택합니다.
  5. 생성 을 선택하여 NFD 사용자 정의 리소스를 빌드합니다. 이렇게 하면 openshift-nfd 네임스페이스에 NFD 포드가 생성되어 OpenShift Container Platform 노드에서 하드웨어 리소스를 폴링하고 카탈로그화합니다.

검증

  1. 빌드가 성공적으로 완료되면 다음 명령을 실행하여 각 노드에서 NFD 포드가 실행 중인지 확인하세요.

    $ oc get pods -n openshift-nfd
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

    NFD 운영자는 공급업체 PCI ID를 사용하여 노드의 하드웨어를 식별합니다. NVIDIA는 PCI ID 10de를 사용합니다.

  2. 다음 명령을 실행하여 NFD 운영자가 발견한 NVIDIA GPU를 확인하세요.

    $ oc describe node ip-10-0-132-138.us-east-2.compute.internal | egrep 'Roles|pci'
    Copy to Clipboard Toggle word wrap

    출력 예

    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
    Copy to Clipboard Toggle word wrap

    10de는 GPU 지원 노드의 노드 기능 목록에 나타납니다. 이는 NFD 운영자가 GPU 지원 MachineSet에서 노드를 올바르게 식별했음을 의미합니다.

2.2.15.1. 기존 Microsoft Azure 클러스터에서 가속 네트워킹 활성화

Azure에서 가속 네트워킹을 활성화하려면 머신 세트 YAML 파일에 acceleratedNetworking을 추가하세요.

사전 요구 사항

  • Machine API가 작동하는 기존 Microsoft Azure 클러스터가 있어야 합니다.

프로세스

  • providerSpec 필드에 다음을 추가합니다.

    providerSpec:
      value:
        acceleratedNetworking: true 
    1
    
        vmSize: <azure-vm-size> 
    2
    Copy to Clipboard Toggle word wrap
    1
    이 라인은 가속 네트워킹을 활성화합니다.
    2
    vCPU가 4개 이상인 Azure VM 크기를 지정합니다. VM 크기에 대한 자세한 내용은 Microsoft Azure 설명서를 참조하십시오.

다음 단계

  • 현재 실행 중인 노드에서 해당 기능을 활성화하려면 기존 머신을 모두 교체해야 합니다. 이 작업은 각 시스템에 대해 개별적으로 수행하거나 복제본을 0으로 축소한 다음 원하는 복제본 수로 다시 확장하여 수행할 수 있습니다.

검증

  • Microsoft Azure 포털에서 머신 세트에 의해 프로비저닝된 머신의 네트워킹 설정 페이지를 검토하고 Accelerated networking 필드가 Enabled 로 설정되어 있는지 확인합니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat