2.4. GCP에서 컴퓨팅 머신 세트 생성


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

중요

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

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

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

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

2.4.1. GCP의 컴퓨팅 머신 세트 사용자 정의 리소스에 대한 샘플 YAML

이 샘플 YAML은 GCP(Google Cloud Platform)에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/<role>: ""로 레이블이 지정된 노드를 생성합니다. 여기서 <role> 은 추가할 노드 레이블입니다.

OpenShift CLI를 사용하여 얻은 값

다음 예에서는 OpenShift CLI를 사용하여 클러스터의 일부 값을 얻을 수 있습니다.

인프라 ID

<infrastructure_id>문자열은 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID입니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.

$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
Copy to Clipboard Toggle word wrap
이미지 경로

<path_to_image> 문자열은 디스크를 생성하는 데 사용된 이미지의 경로입니다. OpenShift CLI가 설치되어 있으면 다음 명령을 실행하여 이미지에 대한 경로를 얻을 수 있습니다.

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

샘플 GCP MachineSet

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  labels:
    machine.openshift.io/cluster-api-cluster: <infrastructure_id> 
1

  name: <infrastructure_id>-w-a
  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>-w-a
  template:
    metadata:
      creationTimestamp: null
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id>
        machine.openshift.io/cluster-api-machine-role: <role> 
2

        machine.openshift.io/cluster-api-machine-type: <role>
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-w-a
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/<role>: ""
      providerSpec:
        value:
          apiVersion: machine.openshift.io/v1beta1
          canIPForward: false
          credentialsSecret:
            name: gcp-cloud-credentials
          deletionProtection: false
          disks:
          - autoDelete: true
            boot: true
            image: <path_to_image> 
3

            labels: null
            sizeGb: 128
            type: pd-ssd
          gcpMetadata: 
4

          - key: <custom_metadata_key>
            value: <custom_metadata_value>
          kind: GCPMachineProviderSpec
          machineType: n1-standard-4
          metadata:
            creationTimestamp: null
          networkInterfaces:
          - network: <infrastructure_id>-network
            subnetwork: <infrastructure_id>-worker-subnet
          projectID: <project_name> 
5

          region: us-central1
          serviceAccounts: 
6

          - email: <infrastructure_id>-w@<project_name>.iam.gserviceaccount.com
            scopes:
            - https://www.googleapis.com/auth/cloud-platform
          tags:
            - <infrastructure_id>-worker
          userDataSecret:
            name: worker-user-data
          zone: us-central1-a
Copy to Clipboard Toggle word wrap

1
<infrastructure_id>의 경우 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID를 지정합니다.
2
<node>에 대해 추가할 노드 레이블을 지정합니다.
3
현재 컴퓨팅 머신 세트에서 사용되는 이미지의 경로를 지정합니다.

GCP Marketplace 이미지를 사용하려면 사용할 제안을 지정하세요.

  • OpenShift 컨테이너 플랫폼: https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-ocp-413-x86-64-202305021736
  • OpenShift 플랫폼 플러스: https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-opp-413-x86-64-202305021736
  • 오픈시프트 쿠버네티스 엔진: https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-oke-413-x86-64-202305021736
4
선택 사항: key:value 쌍 형식으로 사용자 지정 메타데이터를 지정합니다. 예를 들어 사용자 정의 메타데이터를 설정하는 방법에 대한 사용 사례는 GCP 문서를 참조하세요.
5
<project_name>의 경우 클러스터에 사용하는 GCP 프로젝트의 이름을 지정합니다.
6
단일 서비스 계정을 지정합니다. 여러 서비스 계정은 지원되지 않습니다.

2.4.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.4.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.4.4. 머신 세트를 사용하여 영구 디스크 유형 구성

머신 세트 YAML 파일을 편집하여 머신 세트가 머신을 배포하는 영구 디스크 유형을 구성할 수 있습니다.

영구 디스크 유형, 호환성, 지역별 가용성 및 제한 사항에 대한 자세한 내용은 GCP Compute Engine 문서에서 영구 디스크 에 대한 내용을 참조하세요.

프로세스

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

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              disks:
                type: <pd-disk-type> 
    1
    Copy to Clipboard Toggle word wrap
    1
    영구 디스크 유형을 지정합니다. 유효한 값은 pd-ssd , pd-standardpd-balanced 입니다. 기본값은 pd-standard 입니다.

검증

  • Google Cloud 콘솔을 사용하여 머신 세트에서 배포한 머신의 세부 정보를 검토하고 유형 필드가 구성된 디스크 유형과 일치하는지 확인합니다.

2.4.5. 머신 세트를 사용하여 기밀 VM 구성

머신 세트 YAML 파일을 편집하면 머신 세트가 배포하는 머신에 대해 사용하는 기밀 VM 옵션을 구성할 수 있습니다.

Confidential VM 기능, 함수 및 호환성에 대한 자세한 내용은 Confidential VM 에 대한 GCP Compute Engine 문서를 참조하세요.

참고

현재 64비트 ARM 아키텍처에서는 기밀 VM이 지원되지 않습니다. Confidential VM을 사용하는 경우 지원되는 지역을 선택해야 합니다. 지원되는 지역 및 구성에 대한 자세한 내용은 GCP Compute Engine 설명서에서 지원되는 영역 에 대한 내용을 참조하세요.

프로세스

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

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              confidentialCompute: Enabled 
    1
    
              onHostMaintenance: Terminate 
    2
    
              machineType: n2d-standard-8 
    3
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    기밀 VM이 활성화되어 있는지 여부를 지정합니다. 유효한 값은 다음과 같습니다.
    활성화됨
    Confidential VM 기술의 기본 선택을 통해 Confidential VM을 활성화합니다. 기본 선택은 AMD Secure Encrypted Virtualization(AMD SEV)입니다.
    비활성화됨
    기밀 VM을 비활성화합니다.
    AMDEncryptedVirtualization
    AMD SEV를 사용하여 Confidential VM을 활성화합니다. AMD SEV는 c2d, n2d, c3d 머신을 지원합니다.
    AMDEncryptedVirtualizationNestedPaging
    AMD 보안 암호화 가상화 보안 중첩 페이징(AMD SEV-SNP)을 사용하여 기밀 VM을 활성화합니다. AMD SEV-SNP는 n2d 머신을 지원합니다.
    IntelTrustedDomainExtensions
    Intel Trusted Domain Extensions(Intel TDX)를 사용하여 Confidential VM을 활성화합니다. Intel TDX는 n2d 머신을 지원합니다.
    2
    하드웨어 또는 소프트웨어 업데이트와 같은 호스트 유지 관리 이벤트 중에 VM의 동작을 지정합니다. Confidential VM을 사용하는 머신의 경우 이 값을 Terminate 로 설정해야 VM이 중지됩니다. Confidential VM은 라이브 VM 마이그레이션을 지원하지 않습니다.
    3
    confidentialCompute 필드에 지정한 Confidential VM 옵션을 지원하는 머신 유형을 지정합니다.

검증

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

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

GCP Compute Engine은 언제든지 선점 가능한 가상 머신 인스턴스를 종료할 수 있습니다. Compute Engine은 인터럽션이 30 초 후에 발생하는 것을 알리는 선점 알림을 사용자에게 보냅니다. OpenShift Container Platform은 Compute Engine이 선점 알림을 발행할 때 영향을 받는 인스턴스에서 워크로드를 제거하기 시작합니다. 인스턴스가 중지되지 않은 경우 ACPI G3 Mechanical Off 신호는 30 초 후에 운영 체제로 전송됩니다. 다음으로 선점 가능한 가상 머신 인스턴스가 Compute Engine에 의해 TERMINATED 상태로 전환됩니다.

다음과 같은 이유로 선점 가능한 가상 머신 인스턴스를 사용할 때 중단될 수 있습니다.

  • 시스템 또는 유지 관리 이벤트가 있는 경우
  • 선점 가능한 가상 머신 인스턴스의 공급이 감소하는 경우
  • 인스턴스가 선점 가능한 가상 머신 인스턴스에 할당된 24 시간 후에 종료되는 경우

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

컴퓨팅 머신 세트 YAML 파일에 preemptible을 추가하여 GCP에서 preemptible 가상 머신 인스턴스를 시작할 수 있습니다.

프로세스

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

    providerSpec:
      value:
        preemptible: true
    Copy to Clipboard Toggle word wrap

    preemptibletrue 로 설정된 경우 인스턴스가 시작된 후 해당 머신은 중단 가능 인스턴스 로 표시됩니다.

2.4.7. 머신 세트를 사용하여 Shielded VM 옵션 구성

머신 세트 YAML 파일을 편집하면 머신 세트가 배포하는 머신에 대해 사용하는 보호된 VM 옵션을 구성할 수 있습니다.

Shielded VM 기능에 대한 자세한 내용은 Shielded VM 에 대한 GCP Compute Engine 문서를 참조하세요.

프로세스

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

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              shieldedInstanceConfig: 
    1
    
                integrityMonitoring: Enabled 
    2
    
                secureBoot: Disabled 
    3
    
                virtualizedTrustedPlatformModule: Enabled 
    4
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    이 섹션에서는 원하는 보호된 VM 옵션을 지정합니다.
    2
    무결성 모니터링이 활성화되어 있는지 여부를 지정합니다. 유효한 값은 Disabled 또는 Enabled 입니다.
    참고

    무결성 모니터링이 활성화된 경우 가상 신뢰 플랫폼 모듈(vTPM)을 비활성화해서는 안 됩니다.

    3
    UEFI 보안 부팅이 활성화되어 있는지 여부를 지정합니다. 유효한 값은 Disabled 또는 Enabled 입니다.
    4
    vTPM이 활성화되어 있는지 여부를 지정합니다. 유효한 값은 Disabled 또는 Enabled 입니다.

검증

  • Google Cloud 콘솔을 사용하여 머신 세트에서 배포한 머신의 세부 정보를 검토하고 보호된 VM 옵션이 구성한 값과 일치하는지 확인합니다.

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

GCP(Google Cloud Platform) Compute Engine을 사용하면 사용자가 암호화 키를 제공하여 디스크의 데이터를 암호화 할 수 있습니다. 키는 고객의 데이터를 암호화하는 것이 아니라 데이터 암호화 키를 암호화하는 데 사용됩니다. 기본적으로 Compute Engine은 Compute Engine 키를 사용하여 이 데이터를 암호화합니다.

Machine API를 사용하는 클러스터에서 고객 관리 키로 암호화를 활성화할 수 있습니다. 먼저 KMS 키를 생성하고 서비스 계정에 올바른 권한을 할당해야 합니다. 서비스 계정에서 키를 사용하려면 KMS 키 이름, 키 링 이름 및 위치가 필요합니다.

참고

KMS 암호화에 전용 서비스 계정을 사용하지 않는 경우 Compute Engine 기본 서비스 계정이 대신 사용됩니다. 전용 서비스 계정을 사용하지 않는 경우 키에 액세스할 수 있는 기본 서비스 계정 권한을 부여해야 합니다. Compute Engine 기본 서비스 계정 이름은 service-<project_number>@compute-system.iam.gserviceaccount.com 패턴을 기반으로 합니다.

프로세스

  1. 특정 서비스 계정이 KMS 키를 사용하고 서비스 계정에 올바른 IAM 역할을 부여하도록 하려면 KMS 키 이름, 키 링 이름 및 위치를 사용하여 다음 명령을 실행하세요.

    $ gcloud kms keys add-iam-policy-binding <key_name> \
      --keyring <key_ring_name> \
      --location <key_ring_location> \
      --member "serviceAccount:service-<project_number>@compute-system.iam.gserviceaccount.com” \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    Copy to Clipboard Toggle word wrap
  2. 사용자가 머신 세트 YAML 파일의 providerSpec 필드에 암호화 키를 구성할 수 있습니다. 예를 들면 다음과 같습니다.

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              disks:
              - type:
                encryptionKey:
                  kmsKey:
                    name: machine-encryption-key 
    1
    
                    keyRing: openshift-encrpytion-ring 
    2
    
                    location: global 
    3
    
                    projectID: openshift-gcp-project 
    4
    
                  kmsKeyServiceAccount: openshift-service-account@openshift-gcp-project.iam.gserviceaccount.com 
    5
    Copy to Clipboard Toggle word wrap
    1
    디스크 암호화에 사용되는 고객 관리 암호화 키의 이름입니다.
    2
    KMS 키가 속한 KMS 키 링의 이름입니다.
    3
    KMS 키 링이 있는 GCP 위치입니다.
    4
    선택 사항: KMS 키 링이 존재하는 프로젝트의 ID입니다. 프로젝트 ID가 설정되지 않은 경우 머신 세트가 사용된 머신 세트의 projectID를 설정합니다.
    5
    선택 사항: 지정된 KMS 키의 암호화 요청에 사용되는 서비스 계정입니다. 서비스 계정이 설정되지 않은 경우 Compute Engine 기본 서비스 계정이 사용됩니다.

    업데이트된 providerSpec 개체 구성을 사용하여 새 컴퓨터를 생성하면 디스크 암호화 키는 KMS 키로 암호화됩니다.

2.4.9. 컴퓨팅 머신 세트에 대한 GPU 지원 활성화

GCP(Google Cloud Platform) Compute Engine을 사용하면 사용자가 VM 인스턴스에 GPU를 추가할 수 있습니다. GPU 리소스에 액세스할 수 있는 워크로드는 이 기능이 활성화된 컴퓨팅 머신에서 더 효과적으로 수행할 수 있습니다. GCP의 OpenShift Container Platform은 A2 및 N1 머신 시리즈에서 NVIDIA GPU 모델을 지원합니다.

Expand
표 2.2. 지원되는 GPU 구성
모델명GPU 유형기계 유형 [1]

NVIDIA A100

nvidia-tesla-a100

  • a2-highgpu-1g
  • a2-highgpu-2g
  • a2-highgpu-4g
  • a2-highgpu-8g
  • a2-megagpu-16g

NVIDIA K80

nvidia-tesla-k80

  • n1-standard-1
  • n1-standard-2
  • n1-standard-4
  • n1-standard-8
  • n1-standard-16
  • n1-standard-32
  • n1-standard-64
  • n1-standard-96
  • n1-highmem-2
  • n1-highmem-4
  • n1-highmem-8
  • n1-highmem-16
  • n1-highmem-32
  • n1-highmem-64
  • n1-highmem-96
  • n1-highcpu-2
  • n1-highcpu-4
  • n1-highcpu-8
  • n1-highcpu-16
  • n1-highcpu-32
  • n1-highcpu-64
  • n1-highcpu-96

NVIDIA P100

nvidia-tesla-p100

NVIDIA P4

nvidia-tesla-p4

NVIDIA T4

nvidia-tesla-t4

NVIDIA V100

nvidia-tesla-v100

  1. 사양, 호환성, 지역 가용성 및 제한을 포함한 머신 유형에 대한 자세한 내용은 N1 머신 시리즈 ,A2 머신 시리즈 GPU 리전 및 영역 가용성에 대한 GCP Compute Engine 설명서를 참조하십시오.

Machine API를 사용하여 인스턴스에 사용할 지원 GPU를 정의할 수 있습니다.

지원되는 GPU 유형 중 하나를 사용하여 N1 머신 시리즈의 머신을 배포하도록 구성할 수 있습니다. A2 머신 시리즈의 시스템에는 연결된 GPU가 제공되며 게스트 가속기를 사용할 수 없습니다.

참고

그래픽 워크로드를 위한 GPU는 지원되지 않습니다.

프로세스

  1. 텍스트 편집기에서 기존 컴퓨팅 머신 세트의 YAML 파일을 열거나 새 파일을 만듭니다.
  2. 컴퓨팅 머신 세트 YAML 파일의 providerSpec 필드에서 GPU 구성을 지정합니다. 다음은 유효한 구성의 예입니다.

    A2 머신 시리즈에 대한 구성 예

      providerSpec:
        value:
          machineType: a2-highgpu-1g 
    1
    
          onHostMaintenance: Terminate 
    2
    
          restartPolicy: Always 
    3
    Copy to Clipboard Toggle word wrap

    1
    기계 유형을 지정하세요. 해당 기계 유형이 A2 기계 시리즈에 포함되어 있는지 확인하세요.
    2
    GPU 지원을 사용하는 경우 onHostMaintenance를 Terminate 로 설정해야 합니다.
    3
    컴퓨팅 머신 세트에 의해 배포된 머신에 대한 재시작 정책을 지정합니다. 허용되는 값은 Always 또는 Never 입니다.

    N1 머신 시리즈에 대한 구성 예

    providerSpec:
      value:
        gpus:
        - count: 1 
    1
    
          type: nvidia-tesla-p100 
    2
    
        machineType: n1-standard-1 
    3
    
        onHostMaintenance: Terminate 
    4
    
        restartPolicy: Always 
    5
    Copy to Clipboard Toggle word wrap

    1
    머신에 연결할 GPU 수를 지정합니다.
    2
    머신에 연결할 GPU 유형을 지정합니다. 머신 유형과 GPU 유형이 호환되는지 확인하세요.
    3
    기계 유형을 지정하세요. 머신 유형과 GPU 유형이 호환되는지 확인하세요.
    4
    GPU 지원을 사용하는 경우 onHostMaintenance를 Terminate 로 설정해야 합니다.
    5
    컴퓨팅 머신 세트에 의해 배포된 머신에 대한 재시작 정책을 지정합니다. 허용되는 값은 Always 또는 Never 입니다.

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

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

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

Expand
인스턴스 유형엔비디아 GPU 가속기최대 GPU 수아키텍처

a2-highgpu-1g

A100

1

x86

n1-standard-4

T4

1

x86

프로세스

  1. 기존 MachineSet 의 복사본을 만듭니다.
  2. 새 사본에서 metadata. name machine.openshift.io/cluster-api-machineset 의 두 인스턴스에서 머신 세트 이름을 변경합니다.
  3. 인스턴스 유형을 변경하여 새로 복사한 MachineSet 에 다음 두 줄을 추가합니다.

    machineType: a2-highgpu-1g
    onHostMaintenance: Terminate
    Copy to Clipboard Toggle word wrap

    a2-highgpu-1g.json 파일 예시

    {
        "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-01-13T17:11:02Z",
            "generation": 1,
            "labels": {
                "machine.openshift.io/cluster-api-cluster": "myclustername-2pt9p"
            },
            "name": "myclustername-2pt9p-worker-gpu-a",
            "namespace": "openshift-machine-api",
            "resourceVersion": "20185",
            "uid": "2daf4712-733e-4399-b4b4-d43cb1ed32bd"
        },
        "spec": {
            "replicas": 1,
            "selector": {
                "matchLabels": {
                    "machine.openshift.io/cluster-api-cluster": "myclustername-2pt9p",
                    "machine.openshift.io/cluster-api-machineset": "myclustername-2pt9p-worker-gpu-a"
                }
            },
            "template": {
                "metadata": {
                    "labels": {
                        "machine.openshift.io/cluster-api-cluster": "myclustername-2pt9p",
                        "machine.openshift.io/cluster-api-machine-role": "worker",
                        "machine.openshift.io/cluster-api-machine-type": "worker",
                        "machine.openshift.io/cluster-api-machineset": "myclustername-2pt9p-worker-gpu-a"
                    }
                },
                "spec": {
                    "lifecycleHooks": {},
                    "metadata": {},
                    "providerSpec": {
                        "value": {
                            "apiVersion": "machine.openshift.io/v1beta1",
                            "canIPForward": false,
                            "credentialsSecret": {
                                "name": "gcp-cloud-credentials"
                            },
                            "deletionProtection": false,
                            "disks": [
                                {
                                    "autoDelete": true,
                                    "boot": true,
                                    "image": "projects/rhcos-cloud/global/images/rhcos-412-86-202212081411-0-gcp-x86-64",
                                    "labels": null,
                                    "sizeGb": 128,
                                    "type": "pd-ssd"
                                }
                            ],
                            "kind": "GCPMachineProviderSpec",
                            "machineType": "a2-highgpu-1g",
                            "onHostMaintenance": "Terminate",
                            "metadata": {
                                "creationTimestamp": null
                            },
                            "networkInterfaces": [
                                {
                                    "network": "myclustername-2pt9p-network",
                                    "subnetwork": "myclustername-2pt9p-worker-subnet"
                                }
                            ],
                            "preemptible": true,
                            "projectID": "myteam",
                            "region": "us-central1",
                            "serviceAccounts": [
                                {
                                    "email": "myclustername-2pt9p-w@myteam.iam.gserviceaccount.com",
                                    "scopes": [
                                        "https://www.googleapis.com/auth/cloud-platform"
                                    ]
                                }
                            ],
                            "tags": [
                                "myclustername-2pt9p-worker"
                            ],
                            "userDataSecret": {
                                "name": "worker-user-data"
                            },
                            "zone": "us-central1-a"
                        }
                    }
                }
            }
        },
        "status": {
            "availableReplicas": 1,
            "fullyLabeledReplicas": 1,
            "observedGeneration": 1,
            "readyReplicas": 1,
            "replicas": 1
        }
    }
    Copy to Clipboard Toggle word wrap

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

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                                             STATUS     ROLES                  AGE     VERSION
    myclustername-2pt9p-master-0.c.openshift-qe.internal             Ready      control-plane,master   8h      v1.32.3
    myclustername-2pt9p-master-1.c.openshift-qe.internal             Ready      control-plane,master   8h      v1.32.3
    myclustername-2pt9p-master-2.c.openshift-qe.internal             Ready      control-plane,master   8h      v1.32.3
    myclustername-2pt9p-worker-a-mxtnz.c.openshift-qe.internal       Ready      worker                 8h      v1.32.3
    myclustername-2pt9p-worker-b-9pzzn.c.openshift-qe.internal       Ready      worker                 8h      v1.32.3
    myclustername-2pt9p-worker-c-6pbg6.c.openshift-qe.internal       Ready      worker                 8h      v1.32.3
    myclustername-2pt9p-worker-gpu-a-wxcr6.c.openshift-qe.internal   Ready      worker                 4h35m   v1.32.3
    Copy to Clipboard Toggle word wrap

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

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

    출력 예

    NAME                               DESIRED   CURRENT   READY   AVAILABLE   AGE
    myclustername-2pt9p-worker-a       1         1         1       1           8h
    myclustername-2pt9p-worker-b       1         1         1       1           8h
    myclustername-2pt9p-worker-c       1         1                             8h
    myclustername-2pt9p-worker-f       0         0                             8h
    Copy to Clipboard Toggle word wrap

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

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

    출력 예

    myclustername-2pt9p-worker-a-mxtnz       Running   n2-standard-4   us-central1   us-central1-a   8h
    myclustername-2pt9p-worker-b-9pzzn       Running   n2-standard-4   us-central1   us-central1-b   8h
    myclustername-2pt9p-worker-c-6pbg6       Running   n2-standard-4   us-central1   us-central1-c   8h
    Copy to Clipboard Toggle word wrap

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

    $ oc get machineset myclustername-2pt9p-worker-a -n openshift-machine-api -o json  > <output_file.json>
    Copy to Clipboard Toggle word wrap
  8. JSON 파일을 편집하여 새 MachineSet 정의에 다음과 같은 변경 사항을 적용합니다.

    • metadata.name 에 하위 문자열 gpu 를 삽입하고 machine.openshift.io/cluster-api-machineset 의 두 인스턴스에 하위 문자열 gpu를 삽입하여 머신 세트 name의 이름을 바꿉니다.
    • 새로운 MachineSet 정의의 machineType을 NVIDIA A100 GPU를 포함하는 a2-highgpu-1g 로 변경합니다.

      jq .spec.template.spec.providerSpec.value.machineType ocp_4.19_machineset-a2-highgpu-1g.json
      
      "a2-highgpu-1g"
      Copy to Clipboard Toggle word wrap

      <output_file.json> 파일은 ocp_4.19_machineset-a2-highgpu-1g.json 으로 저장됩니다.

  9. ocp_4.19_machineset-a2-highgpu-1g.json 에서 다음 필드를 업데이트합니다.

    • .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 과 일치하도록 변경합니다.
    • .spec.template.spec.providerSpec.value.MachineType을 a2-highgpu-1g 로 변경합니다.
    • machineType 아래에 다음 줄을 추가합니다: `"onHostMaintenance": "Terminate". 예를 들면 다음과 같습니다.

      "machineType": "a2-highgpu-1g",
      "onHostMaintenance": "Terminate",
      Copy to Clipboard Toggle word wrap
  10. 변경 사항을 확인하려면 다음 명령을 실행하여 원래 컴퓨팅 정의와 새 GPU 사용 노드 정의의 diff를 수행합니다.

    $ oc get machineset/myclustername-2pt9p-worker-a -n openshift-machine-api -o json | diff ocp_4.19_machineset-a2-highgpu-1g.json -
    Copy to Clipboard Toggle word wrap

    출력 예

    15c15
    <         "name": "myclustername-2pt9p-worker-gpu-a",
    ---
    >         "name": "myclustername-2pt9p-worker-a",
    25c25
    <                 "machine.openshift.io/cluster-api-machineset": "myclustername-2pt9p-worker-gpu-a"
    ---
    >                 "machine.openshift.io/cluster-api-machineset": "myclustername-2pt9p-worker-a"
    34c34
    <                     "machine.openshift.io/cluster-api-machineset": "myclustername-2pt9p-worker-gpu-a"
    ---
    >                     "machine.openshift.io/cluster-api-machineset": "myclustername-2pt9p-worker-a"
    59,60c59
    <                         "machineType": "a2-highgpu-1g",
    <                         "onHostMaintenance": "Terminate",
    ---
    >                         "machineType": "n2-standard-4",
    Copy to Clipboard Toggle word wrap

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

    $ oc create -f ocp_4.19_machineset-a2-highgpu-1g.json
    Copy to Clipboard Toggle word wrap

    출력 예

    machineset.machine.openshift.io/myclustername-2pt9p-worker-gpu-a created
    Copy to Clipboard Toggle word wrap

검증

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

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

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

    출력 예

    myclustername-2pt9p-worker-gpu-a   1         1         1       1           5h24m
    Copy to Clipboard Toggle word wrap

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

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

    출력 예

    myclustername-2pt9p-worker-gpu-a-wxcr6   Running   a2-highgpu-1g   us-central1   us-central1-a   5h25m
    Copy to Clipboard Toggle word wrap

참고

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

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

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에서 노드를 올바르게 식별했음을 의미합니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat