노드 수를 변경하여 수평으로 또는 노드를 호스팅하는 가상 시스템 클래스를 변경하여 수직으로 감독자에서 TKG 클러스터를 확장/축소할 수 있습니다. 영구 볼륨을 확장/축소할 수도 있습니다. 몇 가지 제한 사항이 적용될 수 있습니다.
지원되는 확장/축소 작업
노드 | 수평 확장 | 수평 축소 | 수직 확장/축소 | 볼륨 확장/축소 |
---|---|---|---|---|
제어부 | 예 | 아니요 | 예 | 아니요 |
작업자 | 예 | 예 | 예 | 예 |
- 제어부 노드의 수는 홀수(1 또는 3)여야 합니다. 제어부 확장은 지원되지만 제어부 축소는 지원되지 않습니다.
- 클러스터 노드를 수직으로 확장/축소하는 동안은 사용 가능한 리소스가 부족하여 노드에서 워크로드가 더 이상 실행되지 못할 수 있습니다. 이러한 이유로 인해 수평으로 확장/축소하는 방식을 선호하기도 합니다.
- VM 클래스는 변경할 수 없습니다. TKG 클러스터에서 사용되는 VM 클래스를 편집한 후 해당 클러스터를 확장하면, 새 클러스터 노드는 업데이트된 클래스 정의를 사용하지만 기존 클러스터 노드는 초기 클래스 정의를 계속 사용하여 불일치가 발생합니다.
- 작업자 노드 볼륨은 프로비저닝 후에 변경할 수 있습니다. 제어부 노드 볼륨은 할 수 없습니다.
확장/축소 사전 요구 사항: 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
예:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
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
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.kubectl edit tanzukubernetescluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- 매니페스트의
spec.topology.controlPlane.replicas
섹션에서 제어부 노드 수를 1에서 3으로 늘립니다.예:... spec: topology: controlPlane: replicas: 1 ...
... spec: topology: controlPlane: replicas: 3 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.
매니페스트 변경 내용을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 새 노드가 추가되었는지 확인합니다.
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
작업자 노드 확장
작업자 노드 수를 늘려서 TKG 2.0 클러스터를 확장할 수 있습니다.
- 감독자에 로그인합니다.
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
예:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
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
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.kubectl edit tanzukubernetescluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- 대상 작업자 노드 풀에 대한
spec.topology.nodePools.NAME.replicas
값을 편집하여 작업자 노드 수를 늘립니다.예:... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 변경 내용을 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 새 작업자 노드가 추가되었는지 확인합니다.
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
작업자 노드 축소
작업자 노드 수를 줄여서 TKG 2.0 클러스터를 축소할 수 있습니다.
- 감독자에 로그인합니다.
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
예:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
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
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.kubectl edit tanzukubernetescluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- 대상 작업자 노드 풀에 대한
spec.topology.nodePools.NAME.replicas
값을 편집하여 작업자 노드 수를 줄입니다.예:... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 변경 내용을 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 작업자 노드가 제거되었는지 확인합니다.
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
클러스터를 수직으로 확장/축소
감독자의 TKG 2.0은 클러스터 제어부 및 작업자 노드에 대한 수직 확장/축소를 지원합니다. 클러스터 노드에 사용되는 가상 시스템 클래스를 변경하여 TKG 클러스터를 수직으로 확장/축소합니다. 사용하는 VM 클래스는 TKG 클러스터가 프로비저닝된 vSphere 네임스페이스에 바인딩되어야 합니다.
감독자의 TKG 2.0은 시스템에 내장된 롤링 업데이트 메커니즘을 통해 수직 확장/축소를 지원합니다. 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
예:kubectl get tanzukubernetescluster -n tkg-cluster-ns
- 대상 TKG 클러스터에 describe 명령을 실행하고 VM 클래스를 확인합니다.
kubectl describe tanzukubernetescluster tkg-cluster-1
예를 들어 다음 클러스터는 best-effort-medium VM 클래스를 사용합니다.
spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-medium ...
- 사용 가능한 VM 클래스를 나열하고 설명합니다.
kubectl get virtualmachineclassbinding
kubectl describe virtualmachineclassbinding
- 대상 클러스터 매니페스트를 편집하기 위해 엽니다.
kubectl edit tanzukubernetescluster/tkg-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- VM 클래스를 변경하여 매니페스트를 편집합니다.
예를 들어 클러스터는 제어부 및 작업자 노드에 대해
VM 클래스를 사용합니다.best-effort-xsmall
spec: topology: controlPlane: replicas: 3 vmClass: best-effort-xsmall ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: best-effort-xsmall ...
제어부에 대한 VM 클래스를guaranteed-large
로 변경하고 작업자 노드에 대한 VM 클래스를guaranteed-2xlarge
로 변경합니다.spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-large ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-2xlarge ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 변경 내용을 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자의 TKG는 TKG 클러스터의 롤링 업데이트를 수행합니다.
- TKG 클러스터가 새 VM 클래스로 업데이트되었는지 확인합니다.
kubectl describe tanzukubernetescluster tkg-cluster-1
TKG 클러스터 노드 볼륨 확장/축소
노드에 대한 TKG 클러스터 규격에서 필요에 따라 노드에 대해 하나 이상의 영구 볼륨을 선언할 수 있습니다. 노드 볼륨 선언은 제어부의 ectd 데이터베이스 및 작업자 노드의 컨테이너 런타임 및 kubelet과 같이 변동률이 높은 구성 요소에 유용합니다.
볼륨 노드 | 설명 |
---|---|
작업자 노드 볼륨 변경이 허용됩니다. |
TKG 클러스터가 프로비저닝된 후 작업자 노드 볼륨을 추가하거나 업데이트할 수 있습니다. 롤링 업데이트를 시작하면 클러스터가 새 볼륨 또는 변경된 볼륨으로 업데이트됩니다.
경고: 새 볼륨 또는 변경된 볼륨으로 작업자 노드를 확장하는 경우 롤링 업데이트 중에 현재 볼륨의 데이터가 삭제됩니다. 다음 설명을 참조하십시오.
TKG 클러스터 노드에 대해 선언된 볼륨은 사용 후 삭제로 처리됩니다. TKG 클러스터는 vSphere 네임스페이스에서 PVC(영구 볼륨 할당)를 사용하여 볼륨 용량이 TKG 클러스터의 스토리지 할당량에서 차감되도록 합니다. TKC 볼륨의 용량을 늘리면 Kubernetes CAPI(Cluster API)가 새 PVC를 사용하여 새 작업자를 롤아웃합니다. 이 경우 TKG는 데이터 마이그레이션을 수행하지 않지만 Kubernetes는 그에 따라 워크로드 포드를 (다시)스케줄링합니다. |
제어부 노드 볼륨 변경이 허용되지 않습니다. |
TKG 클러스터가 프로비저닝된 후에는 제어부 노드 볼륨을 추가하거나 업데이트할 수 없습니다. Kubernetes CAPI(Cluster API)는 클러스터 생성 후 제어부 볼륨을 추가하거나 변경하려고 하면 요청이 거부되고 "불변 필드에 대한 업데이트는 허용되지 않습니다."라는 오류 메시지가 표시됩니다. |
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: ...