노드 수를 변경하여 수평으로 또는 노드를 호스팅하는 가상 시스템 클래스를 변경하여 수직으로 TKG 서비스 클러스터를 확장/축소할 수 있습니다. 클러스터 노드에 연결된 볼륨을 확장/축소할 수도 있습니다.
지원되는 수동 확장/축소 작업
노드 | 수평 확장 | 수평 축소 | 수직 확장/축소 | 볼륨 확장/축소 |
---|---|---|---|---|
제어부 | 예 | 아니요 | 예 | 예* |
작업자 | 예 | 예 | 예 | 예 |
- 제어부 노드의 수는 홀수(1 또는 3)여야 합니다. 제어부 확장은 지원되지만 제어부 축소는 지원되지 않습니다. 제어부 확장의 내용을 참조하십시오.
- 클러스터 노드를 수직으로 확장/축소하는 동안은 사용 가능한 리소스가 부족하여 노드에서 워크로드가 더 이상 실행되지 못할 수 있습니다. 따라서 일반적으로 선호되는 접근 방식은 수평 확장/축소입니다. 작업자 노드 확장의 내용을 참조하십시오.
- VM 클래스는 변경할 수 없습니다. TKG 클러스터에서 사용되는 VM 클래스를 편집한 후 해당 클러스터를 확장하면, 새 클러스터 노드는 업데이트된 클래스 정의를 사용하지만 기존 클러스터 노드는 초기 클래스 정의를 계속 사용하여 불일치가 발생합니다. VM 클래스 정보의 내용을 참조하십시오.
- 작업자 노드 볼륨은 프로비저닝 후 변경할 수 있으며, 마찬가지로 제어부 노드도 vSphere 8 U3 이상 및 호환되는 TKr을 사용하는 경우 변경할 수 있습니다. 클러스터 노드 볼륨 확장/축소의 내용을 참조하십시오.
확장/축소 사전 요구 사항: Kubectl 편집 구성
TKG 클러스터를 확장/축소하려면 kubectl edit CLUSTER-KIND/CLUSTER-NAME
명령을 사용하여 클러스터 매니페스트를 업데이트합니다. 매니페스트 변경 내용을 저장하면 클러스터가 변경 내용으로 업데이트됩니다. Kubectl용 텍스트 편집기 구성의 내용을 참조하십시오.
kubectl edit tanzukubernetescluster/tkg-cluster-1 tanzukubernetescluster.run.tanzu.vmware.com/tkg-cluster-1 edited
kubectl edit tanzukubernetescluster/tkg-cluster-1 Edit cancelled, no changes made.
제어부 확장
- 감독자에 로그인합니다.
kubectl vsphere login --server=SUPERVISOR-IP-ADDRESS --vsphere-username USERNAME
- TKG 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkg-cluster-ns
- vSphere 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
다음 구문을 사용합니다.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
예를 들어 v1alpha3 API 클러스터의 경우:kubectl get tanzukubernetescluster -n tkg-cluster-ns
예를 들어 v1beta1 API 클러스터의 경우:kubectl get cluster -n tkg-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
v1alpha3 API 클러스터의 경우:
kubectl get tanzukubernetescluster tkg-cluster-1
TKG 클러스터에는 제어부 노드 1개와 작업자 노드 3개가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 1 3 v1.24.9---vmware.1-tkg.4 5d12h True
v1beta1 API 클러스터의 경우:
kubectl get cluster tkg-cluster-1
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.v1alpha3 API 클러스터의 경우:kubectl edit tanzukubernetescluster/tkg-cluster-1
v1beta1 API 클러스터의 경우:kubectl edit cluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- 매니페스트의
spec.topology.controlPlane.replicas
섹션에서 제어부 노드 수를 1에서 3으로 늘립니다.v1alpha3 API 클러스터의 경우:... spec: topology: controlPlane: replicas: 1 ...
... spec: topology: controlPlane: replicas: 3 ...
v1beta1 API 클러스터의 경우:... spec: ... topology: class: tanzukubernetescluster controlPlane: metadata: {} replicas: 1 variables: ...
... spec: ... topology: class: tanzukubernetescluster controlPlane: metadata: {} replicas: 3 variables: ...
- 텍스트 편집기에서 파일을 저장하여 변경 내용을 적용합니다. (취소하려면 저장하지 않고 편집기를 닫습니다.)
매니페스트 변경 내용을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 가상 시스템 서비스는 새 제어부 노드를 프로비저닝합니다.
- 새 노드가 추가되었는지 확인합니다.
v1alpha3 API 클러스터의 경우:
kubectl get tanzukubernetescluster tkg-cluster-1
확장된 제어부에 이제 3개의 노드가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 3 3 v1.24.9---vmware.1-tkg.4 5d12h True
v1beta1 API 클러스터의 경우:
kubectl get cluster tkg-cluster-1
작업자 노드 확장
작업자 노드 수를 늘려서 TKG 클러스터를 확장할 수 있습니다.
- 감독자에 로그인합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- TKG 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkg-cluster-ns
- vSphere 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
다음 구문을 사용합니다.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
예를 들어 v1alph3 API 클러스터의 경우:kubectl get tanzukubernetescluster -n tkg-cluster-ns
예를 들어 v1beta1 API 클러스터의 경우:kubectl get cluster -n tkg-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
v1alpha3 API 클러스터의 경우:
kubectl get tanzukubernetescluster tkg-cluster-1
예를 들어 다음 클러스터에는 제어부 노드 3개와 작업자 노드 3개가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 3 3 v1.24.9---vmware.1-tkg.4 5d12h True
v1beta1 API 클러스터의 경우:kubectl get cluster tkg-cluster-1
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.v1alpha3 API 클러스터의 경우:
kubectl edit tanzukubernetescluster/tkg-cluster-1
v1beta1 API 클러스터의 경우:kubectl edit cluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- 대상 작업자 노드 풀에 대한
spec.topology.nodePools.NAME.replicas
값을 편집하여 작업자 노드 수를 늘립니다.v1alpha3 API 클러스터의 경우:... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
v1beta1 API 클러스터의 경우:... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-1 replicas: 3 ...
... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-1 replicas: 4 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 변경 내용을 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 새 노드가 추가되었는지 확인합니다.
v1alpha3 API 클러스터의 경우:
kubectl get tanzukubernetescluster tkg-cluster-1
확장한 후에는 클러스터에 작업자 노드가 4개 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster 3 4 v1.24.9---vmware.1-tkg.4 5d12h True
v1beta1 API 클러스터의 경우:
kubectl get cluster tkg-cluster-1
작업자 노드 축소
작업자 노드 수를 줄여서 TKG 클러스터를 축소할 수 있습니다.
- 감독자에 로그인합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- TKG 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkg-cluster-ns
- vSphere 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
다음 구문을 사용합니다.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
예를 들어 v1alph3 API 클러스터의 경우:kubectl get tanzukubernetescluster -n tkg-cluster-ns
예를 들어 v1beta1 API 클러스터의 경우:kubectl get cluster -n tkg-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
kubectl get tanzukubernetescluster tkg-cluster-1
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
v1alpha3 API 클러스터의 경우:
kubectl get tanzukubernetescluster tkg-cluster-1
예를 들어 다음 클러스터에는 제어부 노드 3개와 작업자 노드 4개가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster 3 4 v1.24.9---vmware.1-tkg.4 5d12h True
v1beta1 API 클러스터의 경우:kubectl get cluster tkg-cluster-1
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.v1alpha3 API 클러스터의 경우:
kubectl edit tanzukubernetescluster/tkg-cluster-1
v1beta1 API 클러스터의 경우:kubectl edit cluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- 대상 작업자 노드 풀에 대한
spec.topology.nodePools.NAME.replicas
값을 편집하여 작업자 노드 수를 줄입니다.v1alpha3 API 클러스터의 경우:... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
v1beta1 API 클러스터의 경우:... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-1 replicas: 4 ...
... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-1 replicas: 3 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 변경 내용을 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 작업자 노드가 제거되었는지 확인합니다.
v1alpha3 API 클러스터의 경우:
kubectl get tanzukubernetescluster tkg-cluster-1
축소한 후에는 클러스터에 작업자 노드가 3개 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 3 3 v1.24.9---vmware.1-tkg.4 5d12h True
v1beta1 API 클러스터의 경우:
kubectl get cluster tkg-cluster-1
클러스터를 수직으로 확장/축소
감독자의 TKG는 클러스터 제어부 및 작업자 노드에 대한 수직 확장/축소를 지원합니다. 클러스터 노드에 사용되는 가상 시스템 클래스를 변경하여 TKG 클러스터를 수직으로 확장/축소합니다. 사용하는 VM 클래스는 TKG 클러스터가 프로비저닝된 vSphere 네임스페이스에 바인딩되어야 합니다.
감독자의 TKG는 시스템에 내장된 롤링 업데이트 메커니즘을 통해 수직 확장/축소를 지원합니다. VirtualMachineClass
정의를 변경하면 시스템은 새 클래스를 사용하여 새 노드를 롤아웃하고 이전 노드를 스핀 다운합니다. TKG 서비스 클러스터 업데이트의 내용을 참조하십시오.
- 감독자에 로그인합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- TKG 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkg-cluster-ns
- vSphere 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
다음 구문을 사용합니다.
kubectl get CLUSTER-KIND -n tkg-cluster-ns
예를 들어 v1alph3 API 클러스터의 경우:kubectl get tanzukubernetescluster -n tkg-cluster-ns
예를 들어 v1beta1 API 클러스터의 경우:kubectl get cluster -n tkg-cluster-ns
- 대상 TKG 클러스터에 describe 명령을 실행하고 VM 클래스를 확인합니다.
v1alpha3 API 클러스터의 경우:
kubectl describe tanzukubernetescluster tkg-cluster-1
예를 들어 다음 클러스터는 best-effort-medium VM 클래스를 사용합니다.
spec: topology: controlPlane: replicas: 3 vmClass: best-effort-medium ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: best-effort-medium ...
v1beta1 API 클러스터의 경우:
kubectl describe cluster tkg-cluster-1
예를 들어 다음 클러스터는 best-effort-medium VM 클래스를 사용합니다.
... Topology: ... Variables: ... Name: vmClass Value: best-effort-medium ...
참고: v1beta1 API 클러스터의 경우 기본적으로 vmClass는 전역적으로 단일 변수로 설정됩니다. 이 설정을 재정의하고 제어부 및 작업자 노드에 대해 다른 VM 클래스를 사용할 수 있습니다. API 참조에서 vmClass의 내용을 참조하십시오. - 사용 가능한 VM 클래스를 나열하고 설명합니다.
kubectl get virtualmachineclass
kubectl describe virtualmachineclass
- 대상 클러스터 매니페스트를 편집하기 위해 엽니다.
v1alpha3 API 클러스터의 경우:
kubectl edit tanzukubernetescluster/tkg-cluster-1
v1beta1 API 클러스터의 경우:kubectl edit cluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- VM 클래스를 변경하여 매니페스트를 편집합니다.
v1alpha3 API 클러스터의 경우, 제어부에 대한 VM 클래스를
guaranteed-medium
로 변경하고 작업자 노드에 대한 VM 클래스를guaranteed-large
로 변경합니다.spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-large ...
v1beta API 클러스터의 경우 VM 클래스를guaranteed-large
로 변경합니다.... Topology: ... Variables: ... Name: vmClass Value: guaranteed-large ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 변경 내용을 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 TKG는 TKG 클러스터의 롤링 업데이트를 수행합니다.
- TKG 클러스터가 새 VM 클래스로 업데이트되었는지 확인합니다.
v1alpha3 API 클러스터의 경우:
kubectl describe tanzukubernetescluster tkg-cluster-1
v1beta1 API 클러스터의 경우:
kubectl describe cluster tkg-cluster-1
클러스터 노드 볼륨 확장/축소
노드에 대한 TKG 클러스터 규격에서 필요에 따라 노드에 대해 하나 이상의 영구 볼륨을 선언할 수 있습니다. 노드 볼륨 선언은 작업자 노드의 컨테이너 런타임 및 kubelet과 같이 변동률이 높은 구성 요소에 유용합니다.
볼륨 노드 | 설명 |
---|---|
작업자 노드 볼륨 변경이 허용됩니다. |
TKG 클러스터가 프로비저닝된 후 작업자 노드 볼륨을 추가하거나 업데이트할 수 있습니다. 롤링 업데이트를 시작하면 클러스터가 새 볼륨 또는 변경된 볼륨으로 업데이트됩니다.
경고: 새 볼륨 또는 변경된 볼륨으로 작업자 노드를 확장하는 경우 롤링 업데이트 중에 현재 볼륨의 데이터가 삭제됩니다. 다음 설명을 참조하십시오.
TKG 클러스터 노드에 대해 선언된 볼륨은 사용 후 삭제로 처리됩니다. TKG 클러스터는 vSphere 네임스페이스에서 PVC(영구 볼륨 할당)를 사용하여 볼륨 용량이 TKG 클러스터의 스토리지 할당량에서 차감되도록 합니다. TKC 볼륨의 용량을 늘리면 Kubernetes CAPI(Cluster API)가 새 PVC를 사용하여 새 작업자를 롤아웃합니다. 이 경우 TKG는 데이터 마이그레이션을 수행하지 않지만 Kubernetes는 그에 따라 워크로드 포드를 (다시)스케줄링합니다. |
vSphere 8 U3 이상을 사용하는 경우 제어부 노드 볼륨 변경이 허용됩니다. |
vSphere 8 U3 이상 및 호환되는 Tanzu Kubernetes 릴리스를 사용하는 경우 TKG 서비스 클러스터가 프로비저닝되면 제어부 노드 볼륨을 추가하거나 업데이트할 수 있습니다. vSphere 8 U3 이상을 사용하지 않는 경우 CAPI(Kubernetes Cluster API)는 클러스터 생성 후 제어부 볼륨을 추가하거나 변경하려고 하면 요청이 거부되고 "불변 필드에 대한 업데이트는 허용되지 않습니다."라는 오류 메시지가 표시됩니다. |
다음은 선언된 노드 볼륨이 있는 v1alpha3 API를 기반으로 하는 클러스터 규격에서 발췌한 것입니다. 필요에 따라 이 발췌를 가져온 전체 TKG 클러스터 예시(v1alpha3 예시: 기본 스토리지 및 노드 볼륨이 있는 TKC)를 참조하십시오. v1beta1 API 클러스터 예는 v1beta1 예시: 기본 ClusterClass를 기반으로 하는 사용자 지정 클러스터 항목을 참조하십시오.
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TanzuKubernetesCluster ... spec: topology: controlPlane: replicas: 3 storageClass: tkg-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.24.9---vmware.1-tkg.4 nodePools: - name: worker-nodepool-a1 replicas: 3 storageClass: tkg-storage-policy vmClass: guaranteed-large tkr: reference: name: v1.24.9---vmware.1-tkg.4 volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 50Gi - name: kubelet mountPath: /var/lib/kubelet capacity: storage: 50Gi - name: worker-nodepool-a2 ... settings: ...