2.9. vSphere에서 컴퓨팅 머신 세트 생성


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

중요

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

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

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

$ oc get infrastructure cluster -o jsonpath='{.status.platform}'

2.9.1. vSphere에서 컴퓨팅 머신 세트 사용자 정의 리소스의 샘플 YAML

이 샘플 YAML은 VMware vSphere에서 실행되는 컴퓨팅 머신 세트를 정의하고 node-role.kubernetes.io/<role>: "" 로 레이블이 지정된 노드를 생성합니다.

이 샘플에서 <infrastructure_id>는 클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로 하는 인프라 ID 레이블이며 <role>은 추가할 노드 레이블입니다.

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  creationTimestamp: null
  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> 3
      machine.openshift.io/cluster-api-machineset: <infrastructure_id>-<role> 4
  template:
    metadata:
      creationTimestamp: null
      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> 8
    spec:
      metadata:
        creationTimestamp: null
        labels:
          node-role.kubernetes.io/<role>: "" 9
      providerSpec:
        value:
          apiVersion: vsphereprovider.openshift.io/v1beta1
          credentialsSecret:
            name: vsphere-cloud-credentials
          diskGiB: 120
          kind: VSphereMachineProviderSpec
          memoryMiB: 8192
          metadata:
            creationTimestamp: null
          network:
            devices:
            - networkName: "<vm_network_name>" 10
          numCPUs: 4
          numCoresPerSocket: 1
          snapshot: ""
          template: <vm_template_name> 11
          userDataSecret:
            name: worker-user-data
          workspace:
            datacenter: <vcenter_data_center_name> 12
            datastore: <vcenter_datastore_name> 13
            folder: <vcenter_vm_folder_path> 14
            resourcepool: <vsphere_resource_pool> 15
            server: <vcenter_server_ip> 16
1 3 5
클러스터를 프로비저닝할 때 설정한 클러스터 ID를 기반으로하는 인프라 ID를 지정합니다. OpenShift CLI (oc) 패키지가 설치되어 있으면 다음 명령을 실행하여 인프라 ID를 얻을 수 있습니다.
$ oc get -o jsonpath='{.status.infrastructureName}{"\n"}' infrastructure cluster
2 4 8
인프라 ID 및 노드 레이블을 지정합니다.
6 7 9
추가할 노드 레이블을 지정합니다.
10
컴퓨팅 머신 세트를 배포할 vSphere VM 네트워크를 지정합니다. 이 VM 네트워크는 다른 컴퓨팅 시스템이 클러스터에 상주하는 위치여야 합니다.
11
사용할 vSphere VM 템플릿 (예: user-5ddjd-rhcos)을 지정합니다.
12
컴퓨팅 머신 세트를 배포할 vCenter 데이터 센터를 지정합니다.
13
컴퓨팅 머신 세트를 배포할 vCenter 데이터 저장소를 지정합니다.
14
vCenter의 vSphere VM 폴더에 경로(예: /dc1/vm/user-inst-5ddjd)를 지정합니다.
15
VM의 vSphere 리소스 풀을 지정합니다.
16
vCenter 서버 IP 또는 정규화된 도메인 이름을 지정합니다.

2.9.2. 컴퓨팅 머신 세트 관리에 필요한 최소 vCenter 권한

vCenter의 OpenShift Container Platform 클러스터에서 컴퓨팅 머신 세트를 관리하려면 필요한 리소스를 읽고, 생성하고, 삭제하려면 권한이 있는 계정을 사용해야 합니다. 필요한 모든 권한에 액세스할 수 있는 가장 간단한 방법은 글로벌 관리 권한이 있는 계정을 사용하는 것입니다.

글로벌 관리 권한이 있는 계정을 사용할 수 없는 경우 필요한 최소 권한을 부여하려면 역할을 생성해야 합니다. 다음 표에는 컴퓨팅 머신 세트를 생성, 확장 및 삭제하고 OpenShift Container Platform 클러스터에서 머신을 삭제하는 데 필요한 최소 vCenter 역할 및 권한이 나열되어 있습니다.

예 2.1. 컴퓨팅 머신 세트 관리에 필요한 최소 vCenter 역할 및 권한

역할의 vSphere 개체필요한 경우필요한 권한

vSphere vCenter

Always

InventoryService.Tagging.AttachTag
InventoryService.Tagging.CreateCategory
InventoryService.Tagging.CreateTag
InventoryService.Tagging.DeleteCategory
InventoryService.Tagging.DeleteTag
InventoryService.Tagging.EditCategory
InventoryService.Tagging.EditTag
InventoryService.Tagging.EditTag
Sessions.ValidateSession
StorageProfile.Update1

vSphere vCenter Cluster

Always

Resource.AssignVMToPool

vSphere 데이터 저장소

Always

Datastore.AllocateSpace
Datastore.Browse

vSphere Port Group

Always

Network.Assign

가상 머신 폴더

Always

VirtualMachine.Config.AddRemoveDevice
VirtualMachine.Config.AdvancedConfig
VirtualMachine.Config.CPUCount
VirtualMachine.Config.DiskExtend

VirtualMachine.Config.Memory
VirtualMachine.Config.Memory
VirtualMachine.Config.Settings
VirtualMachine.PowerOff
VirtualMachine.PowerOff
VirtualMachine.PowerOn Cryostat.CreateFromExisting Cryostat VirtualMachine.Cryostat VirtualMachine.ECDHE VirtualMachine.Provision VirtualMachine.
Config.DiskExtend
VirtualMachine.Config.MemoryExtend
VirtualMachine.Cryostat

vSphere vCenter 데이터 센터

설치 프로그램이 가상 머신 폴더를 생성하는 경우

Resource.AssignVMToPool
VirtualMachine.Provisioning.DeployTemplate

1 StorageProfile.UpdateStorageProfile.View 권한은 CSI(Container Storage Interface)를 사용하는 스토리지 백엔드에만 필요합니다.

다음 표에서는 컴퓨팅 머신 세트 관리에 필요한 권한 및 전파 설정을 자세히 설명합니다.

예 2.2. 필수 권한 및 권한 부여 설정

vSphere 오브젝트폴더 유형하위 항목으로 권한 부여권한 필요

vSphere vCenter

Always

필요하지 않음

나열된 필수 권한

vSphere vCenter 데이터 센터

기존 폴더

필요하지 않음

ReadOnly 권한

설치 프로그램은 폴더를 생성

필수 항목

나열된 필수 권한

vSphere vCenter Cluster

Always

필수 항목

나열된 필수 권한

vSphere vCenter 데이터 저장소

Always

필요하지 않음

나열된 필수 권한

vSphere Switch

Always

필요하지 않음

ReadOnly 권한

vSphere Port Group

Always

필요하지 않음

나열된 필수 권한

vSphere vCenter Virtual Machine Folder

기존 폴더

필수 항목

나열된 필수 권한

필요한 권한만으로 계정을 생성하는 방법에 대한 자세한 내용은 vSphere 문서에서 vSphere 권한 및 사용자 관리 작업을 참조하십시오.

2.9.3. 컴퓨팅 머신 세트를 사용하기 위해 사용자 프로비저닝 인프라가 있는 클러스터의 요구사항

사용자 프로비저닝 인프라가 있는 클러스터에서 컴퓨팅 머신 세트를 사용하려면 클러스터 구성이 Machine API 사용을 지원하는지 확인해야 합니다.

인프라 ID 가져오기

컴퓨팅 머신 세트를 생성하려면 클러스터의 인프라 ID를 제공할 수 있어야 합니다.

프로세스

  • 클러스터의 인프라 ID를 가져오려면 다음 명령을 실행합니다.

    $ oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
vSphere 인증 정보 요구 사항 충족

컴퓨팅 머신 세트를 사용하려면 Machine API가 vCenter와 상호 작용할 수 있어야 합니다. Machine API 구성 요소가 vCenter와 상호 작용하도록 권한을 부여하는 인증 정보는 openshift-machine-api 네임스페이스의 시크릿에 있어야 합니다.

프로세스

  1. 필요한 인증 정보가 있는지 확인하려면 다음 명령을 실행합니다.

    $ oc get secret \
      -n openshift-machine-api vsphere-cloud-credentials \
      -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

    샘플 출력

    <vcenter-server>.password=<openshift-user-password>
    <vcenter-server>.username=<openshift-user>

    여기서 < vcenter-server >는 vCenter 서버의 IP 주소 또는 FQDN(정규화된 도메인 이름)이며 < openshift-user > 및 < openshift-user-password >는 사용할 OpenShift Container Platform 관리자 인증 정보입니다.

  2. 보안이 없는 경우 다음 명령을 실행하여 시크릿을 생성합니다.

    $ oc create secret generic vsphere-cloud-credentials \
      -n openshift-machine-api \
      --from-literal=<vcenter-server>.username=<openshift-user> --from-literal=<vcenter-server>.password=<openshift-user-password>
Ignition 구성 요구 사항 충족

VM(가상 머신) 프로비저닝에는 유효한 Ignition 구성이 필요합니다. Ignition 구성에는 Machine Config Operator에서 추가 Ignition 구성을 가져오기 위한 machine-config-server 주소와 시스템 신뢰 번들이 포함되어 있습니다.

기본적으로 이 구성은 machine-api-operator 네임스페이스의 worker-user-data 시크릿에 저장됩니다. 컴퓨팅 머신 세트는 머신 생성 프로세스 중에 시크릿을 참조합니다.

프로세스

  1. 필요한 시크릿이 있는지 확인하려면 다음 명령을 실행합니다.

    $ oc get secret \
      -n openshift-machine-api worker-user-data \
      -o go-template='{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

    샘플 출력

    disableTemplating: false
    userData: 1
      {
        "ignition": {
          ...
          },
        ...
      }

    1
    전체 출력은 여기에서 생략되지만 이 형식이 있어야 합니다.
  2. 보안이 없는 경우 다음 명령을 실행하여 시크릿을 생성합니다.

    $ oc create secret generic worker-user-data \
      -n openshift-machine-api \
      --from-file=<installation_directory>/worker.ign

    여기서 <installation_directory >는 클러스터 설치 중에 설치 자산을 저장하는 데 사용된 디렉터리입니다.

2.9.4. 컴퓨팅 머신 세트 생성

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

참고

사용자 프로비저닝 인프라로 설치된 클러스터에는 설치 프로그램에서 프로비저닝한 인프라가 있는 클러스터와 다른 네트워킹 스택이 있습니다. 이러한 차이로 인해 사용자 프로비저닝 인프라가 있는 클러스터에서 자동 로드 밸런서 관리가 지원되지 않습니다. 이러한 클러스터의 경우 컴퓨팅 머신 세트는 workerinfra 유형 머신만 생성할 수 있습니다.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 배포합니다.
  • OpenShift CLI(oc)를 설치합니다.
  • cluster-admin 권한이 있는 사용자로 oc에 로그인합니다.
  • vCenter 인스턴스에 가상 머신을 배포하는데 필요한 권한이 있고 지정된 데이터 저장소에 필요한 액세스 권한이 있습니다.
  • 클러스터가 사용자 프로비저닝 인프라를 사용하는 경우 해당 구성에 대한 특정 머신 API 요구 사항을 충족했습니다.

프로세스

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

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

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

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

      $ 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

    2. 특정 컴퓨팅 머신 세트 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
              ...

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

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

      3
      컴퓨팅 머신 세트 CR의 <providerSpec> 섹션에 있는 값은 플랫폼에 따라 다릅니다. CR의 <providerSpec> 매개변수에 대한 자세한 내용은 공급자의 샘플 컴퓨팅 머신 세트 CR 구성을 참조하십시오.
    3. 사용자 프로비저닝 인프라가 있는 클러스터에 대한 컴퓨팅 머신 세트를 생성하는 경우 다음과 같은 중요한 값을 기록하십시오.

      vSphere providerSpec 값 예

      apiVersion: machine.openshift.io/v1beta1
      kind: MachineSet
      ...
      template:
        ...
        spec:
          providerSpec:
            value:
              apiVersion: machine.openshift.io/v1beta1
              credentialsSecret:
                name: vsphere-cloud-credentials 1
              diskGiB: 120
              kind: VSphereMachineProviderSpec
              memoryMiB: 16384
              network:
                devices:
                  - networkName: "<vm_network_name>"
              numCPUs: 4
              numCoresPerSocket: 4
              snapshot: ""
              template: <vm_template_name> 2
              userDataSecret:
                name: worker-user-data 3
              workspace:
                datacenter: <vcenter_data_center_name>
                datastore: <vcenter_datastore_name>
                folder: <vcenter_vm_folder_path>
                resourcepool: <vsphere_resource_pool>
                server: <vcenter_server_address> 4

      1
      필요한 vCenter 인증 정보가 포함된 openshift-machine-api 네임스페이스의 시크릿 이름입니다.
      2
      설치 중에 생성된 클러스터의 RHCOS VM 템플릿 이름입니다.
      3
      필요한 Ignition 구성 인증 정보가 포함된 openshift-machine-api 네임스페이스의 시크릿 이름입니다.
      4
      vCenter 서버의 IP 주소 또는 FQDN(정규화된 도메인 이름)입니다.
  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

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

2.9.5. 클러스터 자동 스케일러의 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
    1
    영숫자 문자 -, _ 또는 . 로 구성되며 영숫자 문자로 시작하고 끝나는 레이블을 지정합니다. 예를 들어 nvidia-t4 를 사용하여 Nvidia T4 GPU를 표시하거나 A10G GPU의 경우 nvidia-a10g 를 사용할 수 있습니다.
    참고

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

2.9.6. 머신 세트를 사용하여 머신에 태그 추가

OpenShift Container Platform은 생성된 각 VM(가상 머신)에 클러스터별 태그를 추가합니다. 설치 프로그램은 이러한 태그를 사용하여 클러스터를 제거할 때 삭제할 VM을 선택합니다.

VM에 할당된 클러스터별 태그 외에도 프로비저닝하는 VM에 최대 10개의 vSphere 태그를 추가하도록 머신 세트를 구성할 수 있습니다.

사전 요구 사항

  • cluster-admin 권한이 있는 계정을 사용하여 vSphere에 설치된 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
  • 클러스터와 연결된 VMware vCenter 콘솔에 액세스할 수 있습니다.
  • vCenter 콘솔에 태그가 생성되어 있습니다.
  • OpenShift CLI(oc)가 설치되어 있습니다.

프로세스

  1. vCenter 콘솔을 사용하여 시스템에 추가할 태그의 태그 ID를 찾습니다.

    1. vCenter 콘솔에 로그인합니다.
    2. 메뉴에서 태그 및 사용자 지정 속성을 클릭합니다.
    3. 시스템에 추가할 태그를 선택합니다.
    4. 선택한 태그의 브라우저 URL을 사용하여 태그 ID를 식별합니다.

      태그 URL 예

      https://vcenter.example.com/ui/app/tags/tag/urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL/permissions

      태그 ID 예

      urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL

  2. 텍스트 편집기에서 기존 머신 세트의 YAML 파일을 열거나 새 머신을 생성합니다.
  3. providerSpec 필드 아래의 다음 행을 편집합니다.

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    # ...
    spec:
      template:
        spec:
          providerSpec:
            value:
              tagIDs: 1
              - <tag_id_value> 2
    # ...
    1
    이 시스템이 프로비저닝한 머신에 추가할 최대 10개의 태그 목록을 지정합니다.
    2
    시스템에 추가할 태그 값을 지정합니다. For example, urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.