2.5. GCP에서 컴퓨팅 머신 세트 생성
GCP(Google Cloud Platform)의 OpenShift Container Platform 클러스터에서 특정 목적을 충족하기 위해 다른 컴퓨팅 머신 세트를 생성할 수 있습니다. 예를 들어, 지원되는 워크로드를 새 머신으로 이동할 수 있도록 인프라 머신 세트 및 관련 머신을 작성할 수 있습니다.
머신 API가 작동하는 클러스터에서만 고급 머신 관리 및 스케일링 기능을 사용할 수 있습니다. 사용자 프로비저닝 인프라가 있는 클러스터에는 Machine API를 사용하려면 추가 검증 및 구성이 필요합니다.
인프라 플랫폼 유형의 클러스터가 Machine API를 사용할 수 없습니다
. 이 제한은 클러스터에 연결된 컴퓨팅 시스템이 기능을 지원하는 플랫폼에 설치된 경우에도 적용됩니다. 이 매개변수는 설치 후 변경할 수 없습니다.
클러스터의 플랫폼 유형을 보려면 다음 명령을 실행합니다.
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
2.5.1. GCP에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML
이 샘플 YAML은 GCP(Google Cloud Platform)에서 실행되는 컴퓨팅 머신 세트를 정의하고 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>-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: gcpprovider.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
- 1
- &
lt;infrastructure_id
>의 경우 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 인프라 ID를 지정합니다. OpenShift CLI 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
- 2
- &
lt;node&
gt; 의 경우 추가할 노드 레이블을 지정합니다. - 3
- 현재 컴퓨팅 머신 세트에서 사용되는 이미지의 경로를 지정합니다. OpenShift CLI가 설치되어 있으면 다음 명령을 실행하여 이미지에 대한 경로를 얻을 수 있습니다.
$ oc -n openshift-machine-api \ -o jsonpath='{.spec.template.spec.providerSpec.value.disks[0].image}{"\n"}' \ get machineset/<infrastructure_id>-worker-a
GCP Marketplace 이미지를 사용하려면 사용할 오퍼를 지정합니다.
-
OpenShift Container Platform:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-ocp-48-x86-64-202210040145
-
OpenShift Platform Plus:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-opp-48-x86-64-202206140145
-
OpenShift Kubernetes Engine:
https://www.googleapis.com/compute/v1/projects/redhat-marketplace-public/global/images/redhat-coreos-oke-48-x86-64-202206140145
-
OpenShift Container Platform:
- 4
- 선택 사항:
키:값
쌍의 형태로 사용자 지정 메타데이터를 지정합니다. 예를 들어 사용 사례는 사용자 정의 메타데이터 설정에 대한 GCP 설명서를 참조하십시오. - 5
- &
lt;project_name
>에 대해 클러스터에 사용하는 GCP 프로젝트의 이름을 지정합니다. - 6
- 단일 서비스 계정을 지정합니다. 여러 서비스 계정이 지원되지 않습니다.
2.5.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.5.3. 컴퓨팅 머신 세트를 사용하여 영구 디스크 유형 구성
컴퓨팅 머신 세트에서 컴퓨팅 머신 세트 YAML 파일을 편집하여 머신을 배포하는 영구 디스크 유형을 구성할 수 있습니다.
영구 디스크 유형, 호환성, 지역 가용성 및 제한 사항에 대한 자세한 내용은 영구 디스크에 대한 GCP Compute Engine 설명서를 참조하십시오.
절차
- 텍스트 편집기에서 기존 컴퓨팅 머신 세트의 YAML 파일을 열고 새 컴퓨팅 머신 세트를 생성합니다.
providerSpec
필드 아래의 다음 행을 편집합니다.providerSpec: value: disks: type: <pd-disk-type> 1
- 1
- 디스크 영구 유형을 지정합니다. 유효한 값은
pd-ssd
,pd-standard
,pd-balanced
입니다. 기본값은pd-standard
입니다.
검증
-
Google Cloud 콘솔에서 컴퓨팅 머신 세트에서 배포한 머신의 세부 정보를 검토하고
유형
필드가 구성된 디스크 유형과 일치하는지 확인합니다.
2.5.4. 머신을 선점할 수 있는 가상 머신 인스턴스로 배포하는 머신 세트
머신을 보장되지 않는 선점 가능한 가상 머신 인스턴스로 배포하는 GCP에서 실행되는 컴퓨팅 머신 세트를 생성하여 비용을 절감할 수 있습니다. 선점 가능한 가상 머신 인스턴스는 과도한 Compute Engine 용량을 사용하며 일반 인스턴스보다 비용이 저렴합니다. 일괄 처리 또는 상태 비저장, 수평적으로 확장 가능한 워크로드와 같이 인터럽트를 허용할 수있는 워크로드에 선점 가능한 가상 머신 인스턴스를 사용할 수 있습니다.
GCP Compute Engine은 언제든지 선점 가능한 가상 머신 인스턴스를 종료할 수 있습니다. Compute Engine은 인터럽션이 30 초 후에 발생하는 것을 알리는 선점 알림을 사용자에게 보냅니다. OpenShift Container Platform은 Compute Engine이 선점 알림을 발행할 때 영향을 받는 인스턴스에서 워크로드를 제거하기 시작합니다. 인스턴스가 중지되지 않은 경우 ACPI G3 Mechanical Off 신호는 30 초 후에 운영 체제로 전송됩니다. 다음으로 선점 가능한 가상 머신 인스턴스가 Compute Engine에 의해 TERMINATED
상태로 전환됩니다.
다음과 같은 이유로 선점 가능한 가상 머신 인스턴스를 사용할 때 중단될 수 있습니다.
- 시스템 또는 유지 관리 이벤트가 있는 경우
- 선점 가능한 가상 머신 인스턴스의 공급이 감소하는 경우
- 인스턴스가 선점 가능한 가상 머신 인스턴스에 할당된 24 시간 후에 종료되는 경우
GCP가 인스턴스를 종료하면 선점 가능한 가상 머신 인스턴스 노드에서 실행되는 종료 프로세스가 머신 리소스를 삭제합니다. 컴퓨팅 머신 세트 replicas
수량을 충족하기 위해 컴퓨팅 머신 세트는 선점 가능한 가상 머신 인스턴스를 요청하는 머신을 생성합니다.
2.5.4.1. 컴퓨팅 머신 세트를 사용하여 선점 가능한 가상 머신 인스턴스 생성
컴퓨팅 머신 세트 YAML 파일에 preemptible을 추가하여 GCP에서 선점 가능한
가상 머신 인스턴스를 시작할 수 있습니다.
절차
providerSpec
필드 아래에 다음 행을 추가합니다.providerSpec: value: preemptible: true
preemptible
이true
로 설정되면 인스턴스가 시작된 후 머신에interruptable-instance
로 레이블이 지정됩니다.
2.5.5. 컴퓨팅 머신 세트의 고객 관리 암호화 키 활성화
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
패턴을 기반으로 합니다.
절차
KMS 키 이름, 키 링 이름 및 위치를 지정하고 다음 명령을 실행하여 특정 서비스 계정에서 KMS 키를 사용하여 서비스 계정에 올바른 IAM 역할을 부여할 수 있습니다.
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
컴퓨팅 머신 세트 YAML 파일의
providerSpec
필드에 암호화 키를 구성합니다. 예를 들면 다음과 같습니다.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
업데이트된
providerSpec
개체 구성을 사용하여 새 머신을 생성한 후 디스크 암호화 키는 KMS 키로 암호화됩니다.
2.5.6. 컴퓨팅 머신 세트에 대한 GPU 지원 활성화
GCP(Google Cloud Platform) Compute Engine을 사용하면 사용자가 VM 인스턴스에 GPU를 추가할 수 있습니다. GPU 리소스에 액세스할 수 있는 워크로드는 이 기능이 활성화된 컴퓨팅 머신에서 더 효과적으로 수행할 수 있습니다. GCP의 OpenShift Container Platform은 A2 및 N1 머신 시리즈의 NVIDIA GPU 모델을 지원합니다.
모델 이름 | GPU 유형 | 머신 유형 [1] |
---|---|---|
NVIDIA A100 |
|
|
NVIDIA K80 |
|
|
NVIDIA P100 |
| |
NVIDIA P4 |
| |
NVIDIA T4 |
| |
NVIDIA V100 |
|
- 사양, 호환성, 지역 가용성 및 제한 사항을 포함한 머신 유형에 대한 자세한 내용은 N1 머신 시리즈,A2 시스템 시리즈, GPU 리전 및 영역 가용성에 대한 GCP Compute Engine 설명서를 참조하십시오.
Machine API를 사용하여 인스턴스에 사용할 지원되는 GPU를 정의할 수 있습니다.
지원되는 GPU 유형 중 하나로 배포하도록 N1 머신 시리즈에서 머신을 구성할 수 있습니다. A2 머신 시리즈의 머신은 연결된 GPU와 함께 제공되며 게스트 가속기를 사용할 수 없습니다.
그래픽 워크로드용 GPU는 지원되지 않습니다.
절차
- 텍스트 편집기에서 기존 컴퓨팅 머신 세트의 YAML 파일을 열고 새 컴퓨팅 머신 세트를 생성합니다.
컴퓨팅 머신 세트 YAML 파일의
providerSpec
필드에 GPU 구성을 지정합니다. 유효한 구성의 다음 예제를 참조하십시오.A2 시스템 시리즈의 구성 예:
providerSpec: value: machineType: a2-highgpu-1g 1 onHostMaintenance: Terminate 2 restartPolicy: Always 3
N1 시스템 시리즈의 구성 예:
providerSpec: value: gpus: - count: 1 1 type: nvidia-tesla-p100 2 machineType: n1-standard-1 3 onHostMaintenance: Terminate 4 restartPolicy: Always 5
2.5.7. 기존 OpenShift Container Platform 클러스터에 GPU 노드 추가
기본 컴퓨팅 머신 세트 구성을 복사하고 수정하여 GPU 지원 머신 세트 및 GCP 클라우드 공급자의 머신을 생성할 수 있습니다.
다음 표에는 검증된 인스턴스 유형이 나열되어 있습니다.
인스턴스 유형 | NVIDIA GPU 가속기 | 최대 GPU 수 | 아키텍처 |
---|---|---|---|
| A100 | 1 | x86 |
| T4 | 1 | x86 |
절차
-
기존
MachineSet
을 복사합니다. -
새 사본에서
metadata.
의 두 인스턴스 모두 변경합니다.name
의 머신 세트 이름과machine.
openshift.io/cluster-api-machineset 인스턴스 유형을 변경하여 새로 복사한
MachineSet
에 다음 두 행을 추가합니다.machineType: a2-highgpu-1g onHostMaintenance: Terminate
2-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 } }
다음 명령을 실행하여 기존 노드, 시스템 및 머신 세트를 확인합니다. 각 노드는 특정 GCP 리전 및 OpenShift Container Platform 역할이 있는 머신 정의의 인스턴스입니다.
$ oc get nodes
출력 예
NAME STATUS ROLES AGE VERSION myclustername-2pt9p-master-0.c.openshift-qe.internal Ready control-plane,master 8h v1.25.4+77bec7a myclustername-2pt9p-master-1.c.openshift-qe.internal Ready control-plane,master 8h v1.25.4+77bec7a myclustername-2pt9p-master-2.c.openshift-qe.internal Ready control-plane,master 8h v1.25.4+77bec7a myclustername-2pt9p-worker-a-mxtnz.c.openshift-qe.internal Ready worker 8h v1.25.4+77bec7a myclustername-2pt9p-worker-b-9pzzn.c.openshift-qe.internal Ready worker 8h v1.25.4+77bec7a myclustername-2pt9p-worker-c-6pbg6.c.openshift-qe.internal Ready worker 8h v1.25.4+77bec7a myclustername-2pt9p-worker-gpu-a-wxcr6.c.openshift-qe.internal Ready worker 4h35m v1.25.4+77bec7a
다음 명령을 실행하여
openshift-machine-api
네임스페이스에 있는 머신 및 머신 세트를 확인합니다. 각 컴퓨팅 머신 세트는 GCP 리전 내의 다른 가용성 영역과 연결되어 있습니다. 설치 프로그램은 가용 영역 전체에 컴퓨팅 시스템을 자동으로 로드합니다.$ oc get machinesets -n openshift-machine-api
출력 예
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
다음 명령을 실행하여
openshift-machine-api
네임스페이스에 있는 시스템을 확인합니다. 특정 리전 및 영역에서 노드를 추가하기 위해 컴퓨팅 시스템 집합을 확장할 수 있지만 세트당 하나의 컴퓨팅 시스템만 구성할 수 있습니다.$ oc get machines -n openshift-machine-api | grep worker
출력 예
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
다음 명령을 실행하여 기존 컴퓨팅
MachineSet
정의 중 하나의 사본을 만들고 결과를 JSON 파일로 출력합니다. GPU 지원 컴퓨팅 머신 세트 정의의 기반이 됩니다.$ oc get machineset myclustername-2pt9p-worker-a -n openshift-machine-api -o json > <output_file.json>
JSON 파일을 편집하여 새
MachineSet
정의를 다음과 같이 변경합니다.-
metadata.
에 하위 문자열name
gpu
를 삽입하고machine.openshift.io/cluster-api-machineset
의 두 인스턴스에서 모두 머신 세트 이름의 이름을 변경합니다. 새
MachineSet
정의의machineType
을 NVIDIA A100 GPU를 포함하는2-highgpu-1g
로 변경합니다.jq .spec.template.spec.providerSpec.value.machineType ocp_4.12_machineset-a2-highgpu-1g.json "a2-highgpu-1g"
&
lt;output_file.json
> 파일은ocp_4.12_machineset-a2-highgpu-1g.json
으로 저장됩니다.
-
ocp_4.12_machineset-a2-highgpu-1g.json
에서 다음 필드를 업데이트합니다.-
.metadata.name
을gpu
가 포함된 이름으로 변경합니다. -
새
.metadata.name
과 일치하도록.spec.selector.matchLabels["machine.openshift.io/cluster-api-machineset"]
를 변경합니다. -
새
.metadata.name
과 일치하도록.spec.template.metadata.labels["machine.openshift.io/cluster-api-machineset"]
를 변경합니다. -
.spec.template.spec.providerSpec.value.MachineType
을2-highgpu-1g
로 변경합니다. machineType
: ''onHostMaintenance": "Terminate" 아래에 다음 행을 추가합니다. 예를 들면 다음과 같습니다."machineType": "a2-highgpu-1g", "onHostMaintenance": "Terminate",
-
변경 사항을 확인하려면 다음 명령을 실행하여 원래 컴퓨팅 정의와 새 GPU 지원 노드 정의를 수행합니다.
$ oc get machineset/myclustername-2pt9p-worker-a -n openshift-machine-api -o json | diff ocp_4.12_machineset-a2-highgpu-1g.json -
출력 예
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",
다음 명령을 실행하여 정의 파일에서 GPU 지원 컴퓨팅 머신 세트를 생성합니다.
$ oc create -f ocp_4.12_machineset-a2-highgpu-1g.json
출력 예
machineset.machine.openshift.io/myclustername-2pt9p-worker-gpu-a created
검증
다음 명령을 실행하여 생성한 머신 세트를 확인합니다.
$ oc -n openshift-machine-api get machinesets | grep gpu
MachineSet 복제본 수가
1
로 설정되어 새Machine
오브젝트가 자동으로 생성됩니다.출력 예
myclustername-2pt9p-worker-gpu-a 1 1 1 1 5h24m
다음 명령을 실행하여 머신 세트에서 생성된
Machine
오브젝트를 표시합니다.$ oc -n openshift-machine-api get machines | grep gpu
출력 예
myclustername-2pt9p-worker-gpu-a-wxcr6 Running a2-highgpu-1g us-central1 us-central1-a 5h25m
노드의 네임스페이스를 지정할 필요가 없습니다. 노드 정의는 클러스터 범위가 지정되었습니다.
2.5.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를 설치합니다.
-
OperatorHub 에 NFD Operator를 설치한 후 설치된 Operator 목록에서 Node Feature Discovery 를 선택하고 인스턴스 생성 을 선택합니다. 이렇게 하면
openshift-nfd
네임스페이스에 각 컴퓨팅 노드에 대해nfd-master
및nfd-worker
다음 명령을 실행하여 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-nfd
네임스페이스에 NFD Pod가 생성되어 OpenShift Container Platform 노드에서 하드웨어 리소스에 대해 폴링하고 카탈로그를 작성합니다.
검증
성공적으로 빌드한 후 다음 명령을 실행하여 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에서 노드를 올바르게 식별했습니다.