2장. Machine API를 사용하여 컴퓨팅 머신 관리


2.1. AWS에서 컴퓨팅 머신 세트 생성

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

중요

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

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

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

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

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

샘플 YAML은 us-east-1a Amazon Web Services(AWS) 로컬 영역에서 실행되는 컴퓨팅 머신 세트를 정의하고 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

  name: <infrastructure_id>-<role>-<zone> 
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>-<zone>
  template:
    metadata:
      labels:
        machine.openshift.io/cluster-api-cluster: <infrastructure_id>
        machine.openshift.io/cluster-api-machine-role: <role> 
3

        machine.openshift.io/cluster-api-machine-type: <role>
        machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone>
    spec:
      metadata:
        labels:
          node-role.kubernetes.io/<role>: ""
      providerSpec:
        value:
          ami:
            id: ami-046fe691f52a953f9 
4

          apiVersion: machine.openshift.io/v1beta1
          blockDevices:
            - ebs:
                iops: 0
                volumeSize: 120
                volumeType: gp2
          credentialsSecret:
            name: aws-cloud-credentials
          deviceIndex: 0
          iamInstanceProfile:
            id: <infrastructure_id>-worker-profile
          instanceType: m6i.large
          kind: AWSMachineProviderConfig
          placement:
            availabilityZone: <zone> 
5

            region: <region> 
6

          securityGroups:
            - filters:
                - name: tag:Name
                  values:
                    - <infrastructure_id>-node
            - filters:
                - name: tag:Name
                  values:
                    - <infrastructure_id>-lb
          subnet:
            filters:
              - name: tag:Name
                values:
                  - <infrastructure_id>-private-<zone> 
7

          tags:
            - name: kubernetes.io/cluster/<infrastructure_id>
              value: owned
            - name: <custom_tag_name> 
8

              value: <custom_tag_value>
          userDataSecret:
            name: worker-user-data
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
2
인프라 ID, 역할 노드 레이블, 영역을 지정합니다.
3
추가할 역할 노드 레이블을 지정합니다.
4
OpenShift Container Platform 노드의 AWS 영역에 유효한 Red Hat Enterprise Linux CoreOS(RHCOS) Amazon Machine Image(AMI)를 지정하세요. AWS Marketplace 이미지를 사용하려면 AWS Marketplace 에서 OpenShift Container Platform 구독을 완료하여 해당 지역의 AMI ID를 얻어야 합니다.
$ oc -n openshift-machine-api \
    -o jsonpath='{.spec.template.spec.providerSpec.value.ami.id}{"\n"}' \
    get machineset/<infrastructure_id>-<role>-<zone>
Copy to Clipboard Toggle word wrap
5
영역 이름을 지정합니다(예: us-east-1a) .
6
예를 들어 us-east-1과 같이 지역을 지정합니다.
7
인프라 ID와 영역을 지정합니다.
8
선택 사항: 클러스터에 대한 사용자 정의 태그 데이터를 지정합니다. 예를 들어 Email:admin-email@example.comname:value 쌍을 지정하여 관리자 연락처 이메일 주소를 추가할 수 있습니다.
참고

사용자 정의 태그는 install-config.yml 파일에서 설치하는 동안 지정할 수도 있습니다. install-config.yml 파일과 머신 세트에 동일한 name 데이터가 있는 태그가 포함된 경우 머신 세트의 태그 값이 install-config.yml 파일의 태그 값보다 우선합니다.

2.1.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
  4. 다른 가용성 영역에 컴퓨팅 머신 세트가 필요한 경우 이 프로세스를 반복하여 더 많은 컴퓨팅 머신 세트를 만듭니다.

검증

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

    $ 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.1.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 매개변수에 대해 이 레이블의 값을 지정해야 합니다. 자세한 내용은 "클러스터 자동 확장 리소스 정의"를 참조하세요.

기존 AWS 배치 그룹 내의 Elastic Fabric Adapter (EFA) 인스턴스에 머신을 배포하도록 머신 세트를 구성할 수 있습니다.

EFA 인스턴스에는 배치 그룹이 필요하지 않으며, EFA를 구성하는 것 외의 목적으로 배치 그룹을 사용할 수 있습니다. 이 예제에서는 두 가지를 모두 사용하여 지정된 배치 그룹 내의 머신에 대한 네트워크 성능을 개선할 수 있는 구성을 보여줍니다.

사전 요구 사항

  • AWS 콘솔에서 배치 그룹을 생성했습니다.

    참고

    생성한 배치 그룹 유형에 대한 규칙과 제한 사항이 의도한 사용 사례와 호환되는지 확인하세요.

프로세스

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

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              instanceType: <supported_instance_type> 
    1
    
              networkInterfaceType: EFA 
    2
    
              placement:
                availabilityZone: <zone> 
    3
    
                region: <region> 
    4
    
              placementGroupName: <placement_group> 
    5
    
              placementGroupPartition: <placement_group_partition_number> 
    6
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    EFA를 지원하는 인스턴스 유형을 지정합니다.
    2
    EFA 네트워크 인터페이스 유형을 지정합니다.
    3
    예를 들어 us-east-1a 와 같이 영역을 지정합니다.
    4
    예를 들어 us-east-1과 같이 지역을 지정합니다.
    5
    머신을 배포할 기존 AWS 배치 그룹의 이름을 지정합니다.
    6
    선택 사항: 시스템을 배포할 기존 AWS 배치 그룹의 파티션 번호를 지정합니다.

검증

  • AWS 콘솔에서 머신 세트가 생성한 머신을 찾아 머신 속성에서 다음을 확인하세요.

    • 배치 그룹 필드에는 머신 세트의 placementGroupName 매개변수에 대해 지정한 값이 있습니다.
    • 파티션 번호 필드에는 머신 세트의 placementGroupPartition 매개변수에 대해 지정한 값이 있습니다.
    • 인터페이스 유형 필드는 EFA를 사용한다는 것을 나타냅니다.

2.1.5. Amazon EC2 인스턴스 메타데이터 서비스에 대한 머신 세트 옵션

머신 세트를 사용하면 Amazon EC2 인스턴스 메타데이터 서비스(IMDS)의 특정 버전을 사용하는 머신을 만들 수 있습니다. 머신 세트는 IMDSv1과 IMDSv2를 모두 사용할 수 있는 머신이나 IMDSv2를 사용해야 하는 머신을 만들 수 있습니다.

참고

OpenShift Container Platform 버전 4.6 이하로 생성된 AWS 클러스터에서 IMDSv2를 사용하려면 부트 이미지를 업데이트해야 합니다. 자세한 내용은 "업데이트된 부트 이미지"를 참조하세요.

원하는 IMDS 구성으로 새로운 컴퓨팅 머신을 배포하려면 적절한 값을 사용하여 컴퓨팅 머신 세트 YAML 파일을 만듭니다. 머신 세트가 확장되면 기존 머신 세트를 편집하여 원하는 IMDS 구성으로 새 머신을 만들 수도 있습니다.

중요

IMDSv2가 필요한 머신을 생성하기 위해 머신 세트를 구성하기 전에 AWS 메타데이터 서비스와 상호 작용하는 모든 워크로드가 IMDSv2를 지원하는지 확인하세요.

2.1.5.1. 머신 세트를 사용하여 IMDS 구성

머신의 머신 세트 YAML 파일에서 metadataServiceOptions.authentication 값을 추가하거나 편집하여 IMDSv2를 사용해야 하는지 여부를 지정할 수 있습니다.

사전 요구 사항

  • IMDSv2를 사용하려면 AWS 클러스터가 OpenShift Container Platform 버전 4.7 이상으로 생성되어야 합니다.

프로세스

  • providerSpec 필드 아래에 다음 줄을 추가하거나 편집하세요.

    providerSpec:
      value:
        metadataServiceOptions:
          authentication: Required 
    1
    Copy to Clipboard Toggle word wrap
    1
    IMDSv2를 요구하려면 매개변수 값을 필수 로 설정합니다. IMDSv1과 IMDSv2를 모두 사용하려면 매개변수 값을 Optional 로 설정합니다. 값을 지정하지 않으면 IMDSv1과 IMDSv2가 모두 허용됩니다.

2.1.6. 머신을 Dedicated 인스턴스로 배포하는 머신 세트

AWS에서 실행 중인 머신 세트를 생성하여 머신을 Dedicated 인스턴스로 배포할 수 있습니다. Dedicated 인스턴스는 단일 고객 전용 하드웨어의 VPC(가상 프라이빗 클라우드)에서 실행됩니다. 이러한 Amazon EC2 인스턴스는 호스트 하드웨어 수준에서 물리적으로 분리됩니다. Dedicated 인스턴스의 분리는 인스턴스가 하나의 유료 계정에 연결된 다른 AWS 계정에 속하는 경우에도 발생합니다. 하지만 전용이 아닌 다른 인스턴스는 동일한 AWS 계정에 속하는 경우 Dedicated 인스턴스와 하드웨어를 공유할 수 있습니다.

공용 또는 전용 테넌시가 있는 인스턴스는 Machine API에서 지원됩니다. 공용 테넌시가 있는 인스턴스는 공유 하드웨어에서 실행됩니다. 공용 테넌시는 기본 테넌시입니다. 전용 테넌트가 있는 인스턴스는 단일 테넌트 하드웨어에서 실행됩니다.

2.1.6.1. 머신 세트를 사용하여 Dedicated 인스턴스 생성

Machine API 통합을 사용하여 Dedicated 인스턴스에서 지원하는 머신을 실행할 수 있습니다. 머신 세트 YAML 파일의 tenancy 필드를 설정하여 AWS에서 전용 인스턴스를 시작합니다.

프로세스

  • providerSpec 필드에서 전용 테넌트를 지정합니다.

    providerSpec:
      placement:
        tenancy: dedicated
    Copy to Clipboard Toggle word wrap

2.1.7. 머신을 Spot 인스턴스로 배포하는 머신 세트

AWS에서 실행되는 컴퓨팅 머신 세트를 생성하고 머신을 보장되지 않은 스팟 인스턴스로 배포하면 비용을 절감할 수 있습니다. Spot 인스턴스는 사용되지 않는 AWS EC2 용량을 사용하며 온 디맨드 인스턴스보다 저렴합니다. 일괄 처리 또는 상태 비저장, 수평적으로 확장 가능한 워크로드와 같이 인터럽트를 허용할 수 있는 워크로드에 Spot 인스턴스를 사용할 수 있습니다.

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

다음과 같은 이유로 Spot 인스턴스를 사용할 때 중단될 수 있습니다.

  • 인스턴스 가격이 최대 가격을 초과합니다.
  • Spot 인스턴스에 대한 수요가 증가합니다.
  • Spot 인스턴스의 공급이 감소합니다.

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

2.1.7.1. 컴퓨팅 머신 세트를 사용하여 Spot 인스턴스 생성

AWS에서 Spot Instance를 시작하려면 컴퓨팅 머신 세트 YAML 파일에 spotMarketOptions를 추가하세요.

프로세스

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

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

    선택 옵션으로 spotMarketOptions.maxPrice 필드를 설정하여 Spot 인스턴스의 비용을 제한할 수 있습니다. 예를 들어 maxPrice: '2.50'을 설정할 수 있습니다.

    maxPrice가 설정된 경우 이 값은 시간당 최대 Spot 가격으로 사용됩니다. 이 값이 설정되지 않은 경우 기본적으로 최대 가격은 온 디맨드 인스턴스 가격까지 청구됩니다.

    참고

    기본적인 온 디맨드 가격을 maxPrice 값으로 사용하여 Spot 인스턴스의 최대 가격을 설정하지 않는 것이 좋습니다.

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

OpenShift Container Platform 버전 4.19 이상에서는 ML을 위한 온디맨드 용량 예약 및 용량 블록을 포함하여 Amazon Web Services 클러스터의 용량 예약을 지원합니다.

사용자가 정의한 용량 요청의 매개변수와 일치하는 사용 가능한 리소스에 머신을 배포하도록 머신 세트를 구성할 수 있습니다. 이러한 매개변수는 예약하려는 인스턴스 유형, 지역 및 인스턴스 수를 지정합니다. 용량 예약이 용량 요청을 수용할 수 있는 경우 배포가 성공합니다.

이 AWS 제품에 대한 제한 사항 및 제안된 사용 사례를 포함한 자세한 내용은 AWS 설명서의 온디맨드 용량 예약 및 ML용 용량 블록을 참조하세요.

사전 요구 사항

  • cluster-admin 권한이 있는 클러스터에 액세스할 수 있습니다.
  • OpenShift CLI(oc)를 설치합니다.
  • ML에 대한 주문형 용량 예약 또는 용량 블록을 구매했습니다. 자세한 내용은 AWS 설명서의 온디맨드 용량 예약 및 ML에 대한 용량 블록을 참조하세요.

프로세스

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

    샘플 구성

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              capacityReservationId: <capacity_reservation> 
    1
    
              marketType: <market_type> 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    머신이 머신을 배포할 ML 또는 주문형 용량 예약에 대한 용량 블록의 ID를 지정합니다.
    2
    사용할 시장 유형을 지정하세요. 유효한 값은 다음과 같습니다.
    CapacityBlock
    ML을 위한 용량 블록과 함께 이 시장 유형을 사용하세요.
    OnDemand
    이 마켓 유형을 주문형 용량 예약과 함께 사용하세요.
    이 시장 유형을 스팟 인스턴스와 함께 사용하세요. 이 옵션은 용량 예약과 호환되지 않습니다.

검증

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

    $ 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.1.9. 기존 OpenShift Container Platform 클러스터에 GPU 노드 추가

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

지원되는 인스턴스 유형에 대한 자세한 내용은 다음 NVIDIA 설명서를 참조하세요.

프로세스

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

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                        STATUS   ROLES                  AGE     VERSION
    ip-10-0-52-50.us-east-2.compute.internal    Ready    worker                 3d17h   v1.32.3
    ip-10-0-58-24.us-east-2.compute.internal    Ready    control-plane,master   3d17h   v1.32.3
    ip-10-0-68-148.us-east-2.compute.internal   Ready    worker                 3d17h   v1.32.3
    ip-10-0-68-68.us-east-2.compute.internal    Ready    control-plane,master   3d17h   v1.32.3
    ip-10-0-72-170.us-east-2.compute.internal   Ready    control-plane,master   3d17h   v1.32.3
    ip-10-0-74-50.us-east-2.compute.internal    Ready    worker                 3d17h   v1.32.3
    Copy to Clipboard Toggle word wrap

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

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

    출력 예

    NAME                                        DESIRED   CURRENT   READY   AVAILABLE   AGE
    preserve-dsoc12r4-ktjfc-worker-us-east-2a   1         1         1       1           3d11h
    preserve-dsoc12r4-ktjfc-worker-us-east-2b   2         2         2       2           3d11h
    Copy to Clipboard Toggle word wrap

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

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

    출력 예

    preserve-dsoc12r4-ktjfc-worker-us-east-2a-dts8r      Running   m5.xlarge   us-east-2   us-east-2a   3d11h
    preserve-dsoc12r4-ktjfc-worker-us-east-2b-dkv7w      Running   m5.xlarge   us-east-2   us-east-2b   3d11h
    preserve-dsoc12r4-ktjfc-worker-us-east-2b-k58cw      Running   m5.xlarge   us-east-2   us-east-2b   3d11h
    Copy to Clipboard Toggle word wrap

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

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

    • Worker를 GPU 로 교체합니다. 이것이 새로운 기계 세트의 이름이 될 것입니다.
    • 새로운 MachineSet 정의의 인스턴스 유형을 NVIDIA Tesla T4 GPU를 포함하는 g4dn 으로 변경합니다. AWS g4dn 인스턴스 유형에 대한 자세한 내용은 가속 컴퓨팅을 참조하십시오.

      $ jq .spec.template.spec.providerSpec.value.instanceType preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json
      
      "g4dn.xlarge"
      Copy to Clipboard Toggle word wrap

      <output_file.json> 파일은 preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json 으로 저장됩니다.

  6. preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json 에서 다음 필드를 업데이트합니다.

    • .metadata.name을 gpu를 포함하는 이름으로 변경합니다.
    • 새로운 .metadata.name 과 일치하도록 .spec.selector.matchLabels["machine.openshift.io/cluster-api-machineset"]을 설정합니다 .
    • .spec.template.metadata.labels["machine.openshift.io/cluster-api-machineset"]을 새로운 .metadata.name 과 일치시킵니다.
    • .spec.template.spec.providerSpec.value.instanceTypeg4dn.xlarge으로 설정합니다.
  7. 변경 사항을 확인하려면 다음 명령을 실행하여 원래 컴퓨팅 정의와 새 GPU 사용 노드 정의의 diff를 수행합니다.

    $ oc -n openshift-machine-api get preserve-dsoc12r4-ktjfc-worker-us-east-2a -o json | diff preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json -
    Copy to Clipboard Toggle word wrap

    출력 예

    10c10
    
    < "name": "preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a",
    ---
    > "name": "preserve-dsoc12r4-ktjfc-worker-us-east-2a",
    
    21c21
    
    < "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a"
    ---
    > "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-us-east-2a"
    
    31c31
    
    < "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a"
    ---
    > "machine.openshift.io/cluster-api-machineset": "preserve-dsoc12r4-ktjfc-worker-us-east-2a"
    
    60c60
    
    < "instanceType": "g4dn.xlarge",
    ---
    > "instanceType": "m5.xlarge",
    Copy to Clipboard Toggle word wrap

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

    $ oc create -f preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json
    Copy to Clipboard Toggle word wrap

    출력 예

    machineset.machine.openshift.io/preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a 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 객체가 자동으로 생성됩니다.

    출력 예

    preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a   1         1         1       1           4m21s
    Copy to Clipboard Toggle word wrap

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

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

    출력 예

    preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a    running    g4dn.xlarge   us-east-2   us-east-2a  4m36s
    Copy to Clipboard Toggle word wrap

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

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

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