2장. Machine API를 사용하여 컴퓨팅 머신 관리
2.1. AWS에서 컴퓨팅 머신 세트 생성
AWS(Amazon Web Services)의 OpenShift Container Platform 클러스터에서 특정 목적을 충족하기 위해 다른 컴퓨팅 머신 세트를 생성할 수 있습니다. 예를 들어, 지원되는 워크로드를 새 머신으로 이동할 수 있도록 인프라 머신 세트 및 관련 머신을 작성할 수 있습니다.
머신 API가 작동하는 클러스터에서만 고급 머신 관리 및 스케일링 기능을 사용할 수 있습니다. 사용자 프로비저닝 인프라가 있는 클러스터에는 Machine API를 사용하기 위해 추가 검증 및 구성이 필요합니다.
인프라 플랫폼 유형이 none
인 클러스터는 Machine API를 사용할 수 없습니다. 이 제한은 클러스터에 연결된 컴퓨팅 머신이 기능을 지원하는 플랫폼에 설치된 경우에도 적용됩니다. 설치 후에는 이 매개변수를 변경할 수 없습니다.
클러스터의 플랫폼 유형을 보려면 다음 명령을 실행합니다.
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
2.1.1. AWS에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML
샘플 YAML은 us-east-1a
AWS(Amazon Web Services) 로컬 영역에서 실행되는 컴퓨팅 머신 세트를 정의하고 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> 3 machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone> 4 template: metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> 5 machine.openshift.io/cluster-api-machine-role: <role> 6 machine.openshift.io/cluster-api-machine-type: <role> 7 machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role>-<zone> 8 spec: metadata: labels: node-role.kubernetes.io/<role>: "" 9 providerSpec: value: ami: id: ami-046fe691f52a953f9 10 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 11 instanceType: m6i.large kind: AWSMachineProviderConfig placement: availabilityZone: <zone> 12 region: <region> 13 securityGroups: - filters: - name: tag:Name values: - <infrastructure_id>-worker-sg 14 subnet: filters: - name: tag:Name values: - <infrastructure_id>-private-<zone> 15 tags: - name: kubernetes.io/cluster/<infrastructure_id> 16 value: owned - name: <custom_tag_name> 17 value: <custom_tag_value> 18 userDataSecret: name: worker-user-data
- 1 3 5 11 14 16
- 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로하는 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
- 2 4 8
- 인프라 ID, 역할 노드 레이블 및 영역을 지정합니다.
- 6 7 9
- 추가할 역할 노드 레이블을 지정합니다.
- 10
- OpenShift Container Platform 노드의 AWS 영역에 유효한 RHCOS(Red Hat Enterprise Linux CoreOS) Amazon 머신 이미지(AMI)를 지정합니다. AWS Marketplace 이미지를 사용하려면 해당 리전의 AMI ID를 받으려면 AWS Marketplace 에서 OpenShift Container Platform 서브스크립션을 완료해야 합니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.ami.id}{"\n"}' \ get machineset/<infrastructure_id>-<role>-<zone>
- 17 18
- 선택 사항: 클러스터의 사용자 지정 태그 데이터를 지정합니다. 예를 들어
Email:admin-email@example.com
의name:value
쌍을 지정하여 관리자 연락처 이메일 주소를 추가할 수 있습니다.참고install-config.yml
파일에서 설치 중에 사용자 지정 태그를 지정할 수도 있습니다.install-config.yml
파일과 머신 세트에 동일한name
데이터가 있는 태그가 포함된 경우 머신 세트의 태그 값이install-config.yml
파일의 태그 값보다 우선합니다. - 12
- 영역을 지정합니다(예:
us-east-1a
). - 13
- 리전을 지정합니다(예:
us-east-1
). - 15
- 인프라 ID 및 영역을 지정합니다.
2.1.2. 컴퓨팅 머신 세트 생성
설치 프로그램에서 생성한 컴퓨팅 머신 세트 외에도 고유한 머신 세트를 생성하여 선택한 특정 워크로드의 머신 컴퓨팅 리소스를 동적으로 관리할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터를 배포합니다.
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로oc
에 로그인합니다.
프로세스
컴퓨팅 머신 세트 CR(사용자 정의 리소스) 샘플이 포함된 새 YAML 파일을 만들고
<file_name>.yaml
이라는 이름을 지정합니다.<clusterID>
및<role>
매개 변수 값을 설정해야 합니다.선택 사항: 특정 필드에 설정할 값이 확실하지 않은 경우 클러스터에서 기존 컴퓨팅 머신 세트를 확인할 수 있습니다.
클러스터의 컴퓨팅 머신 세트를 나열하려면 다음 명령을 실행합니다.
$ oc get machinesets -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m agl030519-vplxk-worker-us-east-1d 0 0 55m agl030519-vplxk-worker-us-east-1e 0 0 55m agl030519-vplxk-worker-us-east-1f 0 0 55m
특정 컴퓨팅 머신 세트 CR(사용자 정의 리소스)의 값을 보려면 다음 명령을 실행합니다.
$ oc get machineset <machineset_name> \ -n openshift-machine-api -o yaml
출력 예
apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> 1 name: <infrastructure_id>-<role> 2 namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> template: metadata: labels: machine.openshift.io/cluster-api-cluster: <infrastructure_id> machine.openshift.io/cluster-api-machine-role: <role> machine.openshift.io/cluster-api-machine-type: <role> machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> spec: providerSpec: 3 ...
다음 명령을 실행하여
MachineSet
CR을 생성합니다.$ oc create -f <file_name>.yaml
- 다른 가용성 영역에 컴퓨팅 머신 세트가 필요한 경우 이 프로세스를 반복하여 더 많은 컴퓨팅 머신 세트를 생성합니다.
검증
다음 명령을 실행하여 컴퓨팅 머신 세트 목록을 확인합니다.
$ oc get machineset -n openshift-machine-api
출력 예
NAME DESIRED CURRENT READY AVAILABLE AGE agl030519-vplxk-infra-us-east-1a 1 1 1 1 11m agl030519-vplxk-worker-us-east-1a 1 1 1 1 55m agl030519-vplxk-worker-us-east-1b 1 1 1 1 55m agl030519-vplxk-worker-us-east-1c 1 1 1 1 55m agl030519-vplxk-worker-us-east-1d 0 0 55m agl030519-vplxk-worker-us-east-1e 0 0 55m agl030519-vplxk-worker-us-east-1f 0 0 55m
새 컴퓨팅 머신 세트를 사용할 수 있으면
DESIRED
및CURRENT
값이 일치합니다. 컴퓨팅 머신 세트를 사용할 수 없는 경우 몇 분 기다렸다가 명령을 다시 실행합니다.
2.1.3. 머신 세트를 사용하여 Elastic Fabric Adapter 인스턴스에 대한 배치 그룹에 머신 할당
기존 AWS 배치 그룹 내에서 EBS( Elastic Fabric Adapter ) 인스턴스에 머신을 배포하도록 머신 세트를 구성할 수 있습니다.
EFA 인스턴스에는 배치 그룹이 필요하지 않으며 EFA 구성 이외의 용도로 배치 그룹을 사용할 수 있습니다. 이 예에서는 둘 다 사용하여 지정된 배치 그룹 내의 시스템의 네트워크 성능을 향상시킬 수 있는 구성을 보여줍니다.
사전 요구 사항
AWS 콘솔에 배치 그룹을 생성하셨습니다.
참고생성하는 배치 그룹 유형에 대한 규칙 및 제한 사항이 의도한 사용 사례와 호환되는지 확인합니다.
프로세스
- 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 머신을 생성합니다.
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 # ...
검증
AWS 콘솔에서 머신 세트가 생성된 머신을 찾아 머신 속성에서 다음을 확인합니다.
-
placement group 필드에는 시스템 세트의
placementGroupName
매개변수에 대해 지정한 값이 있습니다. -
파티션 번호 필드에는 머신 세트의
placementGroup Cryostat
매개변수에 대해 지정한 값이 있습니다. - interface 유형 필드는 EFA를 사용함을 나타냅니다.
-
placement group 필드에는 시스템 세트의
2.1.4. Amazon EC2 인스턴스 메타데이터 서비스에 대한 머신 세트 옵션
머신 세트를 사용하여 특정 버전의 Amazon EC2 인스턴스 메타데이터 서비스(IMDS)를 사용하는 머신을 생성할 수 있습니다. 머신 세트는 IMDSv1 및 IMDSv2 또는 IMDSv2 를 사용해야 하는 머신을 생성할 수 있습니다.
IMDSv2 사용은 OpenShift Container Platform 버전 4.7 이상으로 생성된 AWS 클러스터에서만 지원됩니다.
원하는 IMDS 구성으로 새 컴퓨팅 머신을 배포하려면 적절한 값으로 컴퓨팅 머신 세트 YAML 파일을 생성합니다. 머신 세트가 확장될 때 기존 머신 세트를 편집하여 기본 IMDS 구성으로 새 머신을 생성할 수도 있습니다.
IMDSv2가 필요한 머신을 생성하도록 머신 세트를 구성하기 전에 AWS 메타데이터 서비스와 상호 작용하는 모든 워크로드가 IMDSv2를 지원하는지 확인합니다.
2.1.4.1. 머신 세트를 사용하여 IMDS 구성
머신의 머신 세트 YAML 파일에서 metadataServiceOptions.authentication
값을 추가하거나 편집하여 IMDSv2의 사용이 필요한지 여부를 지정할 수 있습니다.
사전 요구 사항
- IMDSv2를 사용하려면 OpenShift Container Platform 버전 4.7 이상을 사용하여 AWS 클러스터가 생성되어 있어야 합니다.
프로세스
providerSpec
필드 아래에 다음 행을 추가하거나 편집합니다.providerSpec: value: metadataServiceOptions: authentication: Required 1
- 1
- IMDSv2를 요구하려면 매개 변수 값을
Required
로 설정합니다. IMDSv1 및 IMDSv2를 모두 사용할 수 있도록 하려면 매개 변수 값을Optional
로 설정합니다. 값을 지정하지 않으면 IMDSv1 및 IMDSv2가 모두 허용됩니다.
2.1.5. 머신을 Dedicated 인스턴스로 배포하는 머신 세트
AWS에서 실행 중인 머신 세트를 생성하여 머신을 Dedicated 인스턴스로 배포할 수 있습니다. Dedicated 인스턴스는 단일 고객 전용 하드웨어의 VPC(가상 프라이빗 클라우드)에서 실행됩니다. 이러한 Amazon EC2 인스턴스는 호스트 하드웨어 수준에서 물리적으로 분리됩니다. Dedicated 인스턴스의 분리는 인스턴스가 하나의 유료 계정에 연결된 다른 AWS 계정에 속하는 경우에도 발생합니다. 하지만 전용이 아닌 다른 인스턴스는 동일한 AWS 계정에 속하는 경우 Dedicated 인스턴스와 하드웨어를 공유할 수 있습니다.
공용 또는 전용 테넌시가 있는 인스턴스는 Machine API에서 지원됩니다. 공용 테넌시가 있는 인스턴스는 공유 하드웨어에서 실행됩니다. 공용 테넌시는 기본 테넌시입니다. 전용 테넌트가 있는 인스턴스는 단일 테넌트 하드웨어에서 실행됩니다.
2.1.5.1. 머신 세트를 사용하여 Dedicated 인스턴스 생성
Machine API 통합을 사용하여 Dedicated 인스턴스에서 지원하는 머신을 실행할 수 있습니다. 머신 세트 YAML 파일의 tenancy
필드를 설정하여 AWS에서 전용 인스턴스를 시작합니다.
프로세스
providerSpec
필드에서 전용 테넌트를 지정합니다.providerSpec: placement: tenancy: dedicated
2.1.6. 머신을 Spot 인스턴스로 배포하는 머신 세트
AWS에서 실행되는 컴퓨팅 머신 세트를 생성하여 보장되지 않는 Spot 인스턴스로 머신을 배포하면 비용을 절감할 수 있습니다. Spot 인스턴스는 사용되지 않는 AWS EC2 용량을 사용하며 온 디맨드 인스턴스보다 저렴합니다. 일괄 처리 또는 상태 비저장, 수평적으로 확장 가능한 워크로드와 같이 인터럽트를 허용할 수 있는 워크로드에 Spot 인스턴스를 사용할 수 있습니다.
AWS EC2는 언제든지 Spot 인스턴스를 종료할 수 있습니다. AWS는 중단이 발생하면 사용자에게 2 분 동안 경고 메세지를 보냅니다. OpenShift Container Platform은 AWS가 종료에 대한 경고를 발행할 때 영향을 받는 인스턴스에서 워크로드를 제거하기 시작합니다.
다음과 같은 이유로 Spot 인스턴스를 사용할 때 중단될 수 있습니다.
- 인스턴스 가격이 최대 가격을 초과합니다.
- Spot 인스턴스에 대한 수요가 증가합니다.
- Spot 인스턴스의 공급이 감소합니다.
AWS가 인스턴스를 종료하면 Spot 인스턴스 노드에서 실행중인 종료 프로세스가 머신 리소스를 삭제합니다. 컴퓨팅 머신 세트 replicas
수량을 충족하기 위해 컴퓨팅 머신 세트는 Spot 인스턴스를 요청하는 머신을 생성합니다.
2.1.6.1. 컴퓨팅 머신 세트를 사용하여 Spot 인스턴스 생성
컴퓨팅 머신 세트 YAML 파일에 spotMarketOptions
를 추가하여 AWS에서 Spot 인스턴스를 시작할 수 있습니다.
프로세스
providerSpec
필드 아래에 다음 행을 추가합니다.providerSpec: value: spotMarketOptions: {}
선택 옵션으로
spotMarketOptions.maxPrice
필드를 설정하여 Spot 인스턴스의 비용을 제한할 수 있습니다. 예를 들어maxPrice: '2.50'
을 설정할 수 있습니다.maxPrice
가 설정된 경우 이 값은 시간당 최대 Spot 가격으로 사용됩니다. 이 값이 설정되지 않은 경우 기본적으로 최대 가격은 온 디맨드 인스턴스 가격까지 청구됩니다.참고기본적인 온 디맨드 가격을
maxPrice
값으로 사용하여 Spot 인스턴스의 최대 가격을 설정하지 않는 것이 좋습니다.
2.1.7. 기존 OpenShift Container Platform 클러스터에 GPU 노드 추가
기본 컴퓨팅 머신 세트 구성을 복사하고 수정하여 AWS EC2 클라우드 공급자에 대한 GPU 사용 머신 세트 및 머신을 생성할 수 있습니다.
지원되는 인스턴스 유형에 대한 자세한 내용은 다음 NVIDIA 설명서를 참조하십시오.
프로세스
다음 명령을 실행하여 기존 노드, 시스템 및 머신 세트를 확인합니다. 각 노드는 특정 AWS 리전 및 OpenShift Container Platform 역할을 사용하는 머신 정의 인스턴스입니다.
$ oc get nodes
출력 예
NAME STATUS ROLES AGE VERSION ip-10-0-52-50.us-east-2.compute.internal Ready worker 3d17h v1.30.3 ip-10-0-58-24.us-east-2.compute.internal Ready control-plane,master 3d17h v1.30.3 ip-10-0-68-148.us-east-2.compute.internal Ready worker 3d17h v1.30.3 ip-10-0-68-68.us-east-2.compute.internal Ready control-plane,master 3d17h v1.30.3 ip-10-0-72-170.us-east-2.compute.internal Ready control-plane,master 3d17h v1.30.3 ip-10-0-74-50.us-east-2.compute.internal Ready worker 3d17h v1.30.3
다음 명령을 실행하여
openshift-machine-api
네임스페이스에 있는 머신 및 머신 세트를 확인합니다. 각 컴퓨팅 머신 세트는 AWS 리전 내의 다른 가용성 영역과 연결되어 있습니다. 설치 프로그램은 가용성 영역에서 컴퓨팅 시스템을 자동으로 로드 밸런싱합니다.$ oc get machinesets -n openshift-machine-api
출력 예
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
다음 명령을 실행하여
openshift-machine-api
네임스페이스에 있는 머신을 확인합니다. 현재 머신 세트당 하나의 컴퓨팅 시스템만 있지만, 컴퓨팅 머신 세트를 확장하여 특정 리전 및 영역에 노드를 추가할 수 있습니다.$ oc get machines -n openshift-machine-api | grep worker
출력 예
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
다음 명령을 실행하여 기존 컴퓨팅
MachineSet
정의 중 하나의 사본을 만들고 결과를 JSON 파일로 출력합니다. GPU 지원 컴퓨팅 머신 세트 정의의 기반이 됩니다.$ oc get machineset preserve-dsoc12r4-ktjfc-worker-us-east-2a -n openshift-machine-api -o json > <output_file.json>
JSON 파일을 편집하고 새
MachineSet
정의를 다음과 같이 변경합니다.-
worker
를gpu
로 바꿉니다. 이 이름은 새 머신 세트의 이름이 됩니다. 새
MachineSet
정의의 인스턴스 유형을 NVIDIA Cryostat T4 GPU를 포함하는g4dn
으로 변경합니다. AWSg4dn
인스턴스 유형에 대한 자세한 내용은 가속 컴퓨팅을 참조하십시오.$ jq .spec.template.spec.providerSpec.value.instanceType preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json "g4dn.xlarge"
<
output_file.json
> 파일은preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json
로 저장됩니다.
-
preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.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.instanceType
을g4dn.xlarge
으로 설정합니다.
-
변경 사항을 확인하려면 다음 명령을 실행하여 원래 컴퓨팅 정의와 새 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 -
출력 예
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",
다음 명령을 실행하여 정의에서 GPU 지원 컴퓨팅 머신 세트를 생성합니다.
$ oc create -f preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a.json
출력 예
machineset.machine.openshift.io/preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a created
검증
다음 명령을 실행하여 생성한 머신 세트를 확인합니다.
$ oc -n openshift-machine-api get machinesets | grep gpu
MachineSet 복제본 수는
1
로 설정되므로 새Machine
개체가 자동으로 생성됩니다.출력 예
preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a 1 1 1 1 4m21s
다음 명령을 실행하여 머신 세트에서 생성한
Machine
오브젝트를 확인합니다.$ oc -n openshift-machine-api get machines | grep gpu
출력 예
preserve-dsoc12r4-ktjfc-worker-gpu-us-east-2a running g4dn.xlarge us-east-2 us-east-2a 4m36s
노드에 네임스페이스를 지정할 필요가 없습니다. 노드 정의는 클러스터 범위입니다.
2.1.8. Node Feature Discovery Operator 배포
GPU 지원 노드를 생성한 후 예약할 수 있도록 GPU 사용 노드를 검색해야 합니다. 이렇게 하려면 NFD(Node Feature Discovery) Operator를 설치합니다. NFD Operator는 노드에서 하드웨어 장치 기능을 식별합니다. 이는 인프라 노드에서 하드웨어 리소스를 식별하고 카탈로그하는 일반적인 문제를 해결하여 OpenShift Container Platform에서 사용할 수 있도록 합니다.
프로세스
- OpenShift Container Platform 콘솔의 OperatorHub 에서 Node Feature Discovery Operator를 설치합니다.
-
NFD Operator를 OperatorHub 에 설치한 후 설치된 Operator 목록에서 Node Feature Discovery 를 선택하고 Create instance 를 선택합니다. 이렇게 하면 각 컴퓨팅 노드에 대해
nfd-master
및nfd-worker
, 하나의nfd-worker
Pod가openshift-nfd
네임스페이스에 설치됩니다. 다음 명령을 실행하여 Operator가 설치되어 실행 중인지 확인합니다.
$ oc get pods -n openshift-nfd
출력 예
NAME READY STATUS RESTARTS AGE nfd-controller-manager-8646fcbb65-x5qgk 2/2 Running 7 (8h ago) 1d
- 콘솔에 설치된 Oerator로 이동하여 Create Node Feature Discovery 를 선택합니다.
-
생성 을 선택하여 NFD 사용자 정의 리소스를 빌드합니다. 이렇게 하면 하드웨어 리소스에 대해 OpenShift Container Platform 노드를 폴링하고 카탈로그하는
openshift-nfd
네임스페이스에 NFD Pod가 생성됩니다.
검증
빌드에 성공하면 다음 명령을 실행하여 NFD Pod가 각 노드에서 실행 중인지 확인합니다.
$ oc get pods -n openshift-nfd
출력 예
NAME READY STATUS RESTARTS AGE nfd-controller-manager-8646fcbb65-x5qgk 2/2 Running 7 (8h ago) 12d nfd-master-769656c4cb-w9vrv 1/1 Running 0 12d nfd-worker-qjxb2 1/1 Running 3 (3d14h ago) 12d nfd-worker-xtz9b 1/1 Running 5 (3d14h ago) 12d
NFD Operator는 벤더 PCI ID를 사용하여 노드의 하드웨어를 식별합니다. NVIDIA는 PCI ID
10de
를 사용합니다.다음 명령을 실행하여 NFD Operator가 검색한 NVIDIA GPU를 확인합니다.
$ oc describe node ip-10-0-132-138.us-east-2.compute.internal | egrep 'Roles|pci'
출력 예
Roles: worker feature.node.kubernetes.io/pci-1013.present=true feature.node.kubernetes.io/pci-10de.present=true feature.node.kubernetes.io/pci-1d0f.present=true
10de
는 GPU 사용 노드의 노드 기능 목록에 나타납니다. 즉, NFD Operator가 GPU 지원 MachineSet에서 노드를 올바르게 식별했습니다.