이 항목에서는 Supervisor가 있는 vSphere 8에서 Tanzu Kubernertes Grid v2.0이 생성한 워크로드 클러스터에서 노드 풀을 생성, 업데이트, 삭제하는 방법을 설명합니다. 노드 풀을 사용하면 단일 워크로드 클러스터가 다양한 유형의 노드를 포함하고 관리하여 다양한 애플리케이션의 다양한 요구 사항을 지원할 수 있습니다.
예를 들어 클러스터는 스토리지 용량이 큰 노드를 사용하여 데이터 저장소를 실행하고 더 얇은 노드를 사용하여 애플리케이션 요청을 처리할 수 있습니다.
노드 풀은 워크로드 클러스터에서 사용하는 Worker 노드 집합의 속성을 정의합니다.
일부 노드 풀 속성은 기본 인프라에서 사용할 수 있는 VM 옵션에 따라 달라지지만 모든 클라우드 인프라의 모든 노드 풀은 다음 속성을 공유합니다.
name
: 업데이트 및 삭제와 같은 작업에 사용되는 노드 풀의 고유 식별자입니다.replicas
: 풀의 노드 수이며 모두 동일한 속성을 공유합니다.labels
: 풀의 노드에 워크로드를 일치시킬 수 있도록 노드에서 메타데이터로 설정된 키/값 쌍입니다. 자세한 내용 및 예시 레이블은 Kubernetes 설명서에서 레이블 및 선택기를 참조하십시오.모든 워크로드 클러스터는 첫 번째 원래 노드 풀로 생성되었습니다. 클러스터에 대한 추가 노드 풀을 만들 때 아래에 설명된 대로 첫 번째 노드 풀은 새 노드 풀 정의에 설정되지 않은 속성에 대한 기본값을 제공합니다.
클러스터에서 현재 사용할 수 있는 노드 풀을 검사하려면 다음을 실행합니다.
tanzu cluster node-pool list CLUSTER-NAME
그러면 클러스터의 모든 노드 풀 목록과 각 노드 풀의 복제본 상태가 반환됩니다.
클러스터에서 노드 풀을 생성하려면 다음을 수행합니다.
노드 풀의 구성 파일을 생성합니다. 샘플 구성 파일은 아래를 참조하십시오. 구성 속성의 전체 목록은 구성 속성을 참조하십시오.
구성 파일에 의해 정의된 노드 풀을 생성합니다.
tanzu cluster node-pool set CLUSTER-NAME -f /PATH/TO/CONFIG-FILE
옵션:
--namespace
는 클러스터의 네임스페이스를 지정합니다. 기본값은 default
입니다.--machine-deployment-base
는 새 노드 풀을 생성할 기본 MachineDeployment
개체를 지정합니다.
MachineDeployment
에 있는 tanzu cluster get
출력에 나열된 Details
식별자로 설정합니다.workerMDs[0]
으로 표시되는 Worker 노드 MachineDeployment
개체 중 첫 번째입니다.위의 필수 name
, replicas
, labels
속성 외에도 vSphere의 노드 풀에 대한 구성 파일에는 vSphere에서 VM 구성과 관련된 선택적 속성을 정의하기 위해 vsphere
블록이 포함될 수 있습니다.
vSphere 클러스터의 노드 풀 정의 예:
name: tkg-wc-oidc-md-1
replicas: 4
labels:
key1: value1
key2: value2
vsphere:
memoryMiB: 8192
diskGiB: 64
numCPUs: 4
datacenter: dc0
datastore: iscsi-ds-0
storagePolicyName: name
folder: vmFolder
resourcePool: rp-1
vcIP: 10.0.0.1
template: templateName
cloneMode: clone-mode
network: network-name
vsphere
블록에 설정되지 않은 모든 값은 클러스터의 첫 번째 노드 풀에 있는 값에서 상속됩니다
vcIP
값의 경우 워크로드 클러스터 노드 풀이 클러스터의 제어부와 동일한 vCenter에서 실행되어야 합니다.
storageClass
, tkr
, vmClass
속성에 대한 자세한 내용은 vSphere with Tanzu 설명서의 TanzuKubernetesCluster v1alpha3 API - 주석을 참조하십시오.
아래 표에는 워크로드 클러스터의 노드 풀 구성 파일에서 정의할 수 있는 모든 속성이 나열되어 있습니다.
이름 | 유형 | 클러스터 개체 | 참고 |
---|---|---|---|
name |
문자열 | 임의 | 생성하거나 업데이트할 노드 풀의 이름. |
replicas |
정수 | 임의 | 노드 풀의 노드 수. |
labels |
Map[string]string | 임의 | kubeletExtraArgs (‐‐node-labels )를 사용하여 노드에 설정할 레이블. |
taints |
[]corev1.Taint | 임의 | 노드에 적용할 Taint. |
vmClass |
문자열 | 임의 | Kubernetes vmClass 의 이름. TKC 클러스터에 정의된 vmClass 와 일치합니다. 이 클래스는 노드에서 사용할 수 있는 CPU 및 메모리를 설정합니다. 사용 가능한 VM 클래스를 나열하려면 kubectl describe virtualmachineclasses 를 실행합니다. |
storageClass |
문자열 | 임의 | 노드 풀에 사용할 Kubernetes StorageClass 이름. 이 클래스는 노드의 루트 파일 시스템을 저장하는 디스크에 적용됩니다. 사용 가능한 스토리지 클래스를 나열하려면 kubectl describe storageclasses 를 실행합니다. |
volumes :
|
[]object | 임의 | 노드에 사용할 볼륨. |
tkr :
|
개체 | TKC 기반 | 노드 풀에 사용할 TKR의 이름. 예: v1.23.8—vmware.2-tkg.2 . |
tkrResolver |
문자열 | 클래스 기반 | 클러스터 정의의 tkr-resolve 주석.–base-machine-deployment 플래그가 설정되지 않은 경우에만 필요합니다. |
nodeDrainTimeout |
metav1.Duration | 임의 | 노드 추출 시간 초과. |
vsphere |
개체 | 임의 | 아래를 참조하십시오. |
workerClass |
문자열 | 클래스 기반 | 노드 풀에서 사용할 ClusterClass 에서 workerClass 를 선택합니다.–base-machine-deployment 플래그가 설정되지 않은 경우에만 필요합니다. |
노드 풀의 노드 수만 변경해야 하는 경우 아래의 노드만 조정에서 Tanzu CLI 명령을 사용합니다. 레이블도 추가하려면 레이블 추가 및 노드 조정에 있는 절차를 따릅니다.
주의: 이러한 절차를 통해 노드 풀의 기존 레이블, 가용성 영역, 노드 인스턴스 유형(AWS 또는 Azure의 경우) 또는 가상 머신 속성(vSphere의 경우)을 변경하지 마십시오. 이로 인해 실행 워크로드에 심각한 부정적인 영향을 미칠 수 있습니다. 이러한 속성을 변경하려면 이러한 속성을 사용하여 새 노드 풀을 생성하고 원래 노드 풀을 삭제하기 전에 워크로드를 새 노드 풀로 마이그레이션합니다.
노드 풀의 노드 수를 변경하려면 다음을 실행합니다.
tanzu cluster scale CLUSTER-NAME -p NODE-POOL-NAME -w NODE-COUNT
형식 설명:
CLUSTER-NAME
은 워크로드 클러스터의 이름입니다.NODE-POOL-NAME
은 노드 풀의 이름입니다.NODE-COUNT
는 이 노드 풀에 속하는 노드 수(정수)입니다.노드 풀 구성 파일을 통해 노드 풀에 레이블을 추가하고 노드의 노드 크기를 동시에 지정할 수 있습니다.
업데이트하려는 노드 풀의 구성 파일을 엽니다.
이 노드 풀의 노드 수를 늘리거나 줄이는 경우 replicas
뒤에 숫자를 업데이트합니다.
레이블을 추가하는 경우 아래에 labels
을 입력합니다. 예:
labels:
key1: value1
key2: value2
노드 풀 구성 파일을 저장합니다.
터미널에서 다음을 실행합니다.
tanzu cluster node-pool set CLUSTER-NAME -f /PATH/TO/CONFIG-FILE
명령의 CLUSTER-NAME
과 구성 파일의 name
이 클러스터의 노드 풀과 일치하는 경우, 이 명령은 새 노드 풀을 만드는 대신 기존 노드 풀을 업데이트합니다.
노드 풀을 삭제하려면 다음을 실행합니다.
tanzu cluster node-pool delete CLUSTER-NAME -n NODE-POOL-NAME
여기서 CLUSTER-NAME
은 워크로드 클러스터의 이름이고 NODE-POOL-NAME
은 노드 풀의 이름입니다.
필요한 경우 --namespace
를 사용하여 클러스터의 네임스페이스를 지정합니다. 기본값은 default
입니다.
주의: 이 작업을 하기 전에 이러한 노드의 워크로드를 다른 노드로 마이그레이션합니다. tanzu cluster node-pool delete
는 워크로드를 삭제하기 전에 노드에서 마이그레이션하지 않습니다.