2.6. vSphere에서 머신 세트 생성
VMware vSphere의 OpenShift Container Platform 클러스터에서 특정 목적을 충족하기 위해 다른 머신 세트를 만들 수 있습니다. 예를 들어, 지원되는 워크로드를 새 머신으로 이동할 수 있도록 인프라 머신 세트 및 관련 머신을 작성할 수 있습니다.
머신 API가 작동하는 클러스터에서만 고급 머신 관리 및 스케일링 기능을 사용할 수 있습니다. 사용자 프로비저닝 인프라가 있는 클러스터에는 Machine API를 사용하려면 추가 검증 및 구성이 필요합니다.
인프라 플랫폼 유형의 클러스터가 Machine API를 사용할 수 없습니다
. 이 제한은 클러스터에 연결된 컴퓨팅 시스템이 기능을 지원하는 플랫폼에 설치된 경우에도 적용됩니다. 이 매개변수는 설치 후 변경할 수 없습니다.
클러스터의 플랫폼 유형을 보려면 다음 명령을 실행합니다.
$ oc get infrastructure cluster -o jsonpath='{.status.platform}'
2.6.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_datacenter_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 Datacenter를 지정합니다.
- 13
- 컴퓨팅 머신 세트를 배포할 vCenter Datastore를 지정합니다.
- 14
- vCenter의 vSphere VM 폴더에 경로(예:
/dc1/vm/user-inst-5ddjd
)를 지정합니다. - 15
- VM의 vSphere 리소스 풀을 지정합니다.
- 16
- vCenter 서버 IP 또는 정규화된 도메인 이름을 지정합니다.
2.6.2. 머신 세트 관리에 필요한 최소 vCenter 권한
vCenter의 OpenShift Container Platform 클러스터에서 머신 세트를 관리하려면 필요한 리소스를 읽고, 생성하고, 삭제할 수 있는 권한이 있는 계정을 사용해야 합니다. 필요한 모든 권한에 액세스할 수 있는 가장 간단한 방법은 글로벌 관리 권한이 있는 계정을 사용하는 것입니다.
글로벌 관리 권한이 있는 계정을 사용할 수 없는 경우 필요한 최소 권한을 부여하려면 역할을 생성해야 합니다. 다음 표에는 머신 세트를 생성, 스케일링, 삭제하고 OpenShift Container Platform 클러스터에서 머신을 삭제하는 데 필요한 최소 vCenter 역할 및 권한이 나열되어 있습니다.
예 2.1. 머신 세트 관리에 필요한 최소 vCenter 역할 및 권한
역할의 vSphere 개체 | 필요한 경우 | 필요한 권한 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter Cluster | Always |
|
vSphere Datastore | Always |
|
vSphere Port Group | Always |
|
가상 머신 폴더 | Always |
|
vSphere vCenter Datacenter | 설치 프로그램이 가상 머신 폴더를 생성하는 경우 |
|
1 CSI(Container Storage Interface)를 사용하는 스토리지 백엔드에만 중요 일부 CSI 드라이버 및 기능은 OpenShift Container Platform 4.9의 기술 프리뷰에 있습니다. 자세한 내용은 OpenShift Container Platform에서 지원하는 CSI 드라이버를 참조하십시오. |
다음 표에서는 시스템 세트 관리에 필요한 권한 및 전파 설정에 대해 자세히 설명합니다.
예 2.2. 필수 권한 및 권한 부여 설정
vSphere 오브젝트 | 폴더 유형 | 하위 항목으로 권한 부여 | 권한 필요 |
---|---|---|---|
vSphere vCenter | Always | 필요하지 않음 | 나열된 필수 권한 |
vSphere vCenter Datacenter | 기존 폴더 | 필요하지 않음 |
|
설치 프로그램은 폴더를 생성 | 필수 항목 | 나열된 필수 권한 | |
vSphere vCenter Cluster | Always | 필수 항목 | 나열된 필수 권한 |
vSphere vCenter Datastore | Always | 필요하지 않음 | 나열된 필수 권한 |
vSphere Switch | Always | 필요하지 않음 |
|
vSphere Port Group | Always | 필요하지 않음 | 나열된 필수 권한 |
vSphere vCenter Virtual Machine Folder | 기존 폴더 | 필수 항목 | 나열된 필수 권한 |
필요한 권한만으로 계정을 생성하는 방법에 대한 자세한 내용은 vSphere 문서에서 vSphere 권한 및 사용자 관리 작업을 참조하십시오.
추가 리소스
- CSI 드라이버 및 기능 지원에 대한 자세한 내용은 OpenShift Container Platform에서 지원하는 CSI 드라이버를 참조하십시오.
2.6.3. 컴퓨팅 머신 세트를 사용하는 사용자 프로비저닝 인프라가 있는 클러스터의 요구사항
사용자 프로비저닝 인프라가 있는 클러스터에서 컴퓨팅 머신 세트를 사용하려면 Machine API를 사용하여 클러스터 구성을 지원해야 합니다.
인프라 ID 가져오기
컴퓨팅 머신 세트를 생성하려면 클러스터의 인프라 ID를 제공할 수 있어야 합니다.
절차
클러스터의 인프라 ID를 가져오려면 다음 명령을 실행합니다.
$ oc get infrastructure cluster -o jsonpath='{.status.infrastructureName}'
vSphere 인증 정보 요구 사항 충족
컴퓨팅 머신 세트를 사용하려면 Machine API가 vCenter와 상호 작용할 수 있어야 합니다. Machine API 구성 요소가 vCenter와 상호 작용하도록 권한을 부여하는 인증 정보는 openshift-machine-api
네임스페이스의 시크릿에 있어야 합니다.
프로세스
필요한 인증 정보가 있는지 확인하려면 다음 명령을 실행합니다.
$ 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 서버 및 <openshift-user
>의 IP 주소 또는 정규화된 도메인 이름(FQDN)이고 <openshift-user-password
>는 사용할 OpenShift Container Platform 관리자 자격 증명입니다.시크릿이 없는 경우 다음 명령을 실행하여 시크릿을 생성합니다.
$ 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
시크릿에 저장됩니다. 컴퓨팅 머신 세트는 머신 생성 프로세스 중 시크릿을 참조합니다.
프로세스
필요한 보안이 존재하는지 확인하려면 다음 명령을 실행합니다.
$ 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
- 전체 출력은 여기에서 생략되지만 이 형식이 있어야 합니다.
시크릿이 없는 경우 다음 명령을 실행하여 시크릿을 생성합니다.
$ oc create secret generic worker-user-data \ -n openshift-machine-api \ --from-file=<installation_directory>/worker.ign
여기서
<installation_directory
>는 클러스터 설치 중에 설치 자산을 저장하는 데 사용된 디렉터리입니다.
2.6.4. 머신 세트 만들기
설치 프로그램에서 생성한 컴퓨팅 머신 세트 외에도 고유한 머신 세트를 생성하여 선택한 특정 워크로드의 머신 컴퓨팅 리소스를 동적으로 관리할 수 있습니다.
사용자 프로비저닝 인프라로 설치된 클러스터에는 설치 프로그램에서 프로비저닝한 인프라가 있는 클러스터와 다른 네트워킹 스택이 있습니다. 이러한 차이로 인해 사용자가 프로비저닝한 인프라가 있는 클러스터에서 자동 로드 밸런서 관리가 지원되지 않습니다. 이러한 클러스터의 경우 컴퓨팅 머신 세트는 작업자
및 인프라
유형 머신만 생성할 수 있습니다.
사전 요구 사항
- OpenShift Container Platform 클러스터를 배포합니다.
-
OpenShift CLI(
oc
)를 설치합니다. -
cluster-admin
권한이 있는 사용자로oc
에 로그인합니다. - vCenter 인스턴스에 가상 머신을 배포하는데 필요한 권한이 있고 지정된 데이터 저장소에 필요한 액세스 권한이 있습니다.
- 클러스터에서 사용자 프로비저닝 인프라를 사용하는 경우 해당 구성에 대한 특정 Machine API 요구 사항을 충족할 수 있습니다.
절차
머신 세트 CR(사용자 지정 리소스) 샘플이 포함된 이름이
<file_name>.yaml
인 새 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 ...
사용자 프로비저닝 인프라가 있는 클러스터에 대한 컴퓨팅 머신 세트를 생성하는 경우 다음 중요한 값을 기록해 두십시오.
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_datacenter_name> datastore: <vcenter_datastore_name> folder: <vcenter_vm_folder_path> resourcepool: <vsphere_resource_pool> server: <vcenter_server_address> 4
다음 명령을 실행하여
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
값이 일치합니다. 머신 세트를 사용할 수 없는 경우 몇 분 후에 명령을 다시 실행합니다.