노드 수를 변경하여 수평으로 또는 노드를 호스팅하는 가상 시스템 클래스를 변경하여 수직으로 Tanzu Kubernetes 클러스터를 확장/축소할 수 있습니다.
지원되는 확장/축소 작업
노드 | 수평 확장 | 수평 축소 | 수직 확장/축소 | 볼륨 확장/축소 |
---|---|---|---|---|
제어부 | 예 | 아니요 | 예 | 아니요 |
작업자 | 예 | 예 | 예 | 예 |
- 클러스터 노드를 수직으로 확장/축소하는 동안은 사용 가능한 리소스가 부족하여 노드에서 워크로드가 더 이상 실행되지 못할 수 있습니다. 이러한 이유로 인해 수평으로 확장/축소하는 방식을 선호하기도 합니다.
- VM 클래스는 변경할 수 없습니다. 클러스터에서 사용되는 VM 클래스를 편집한 후 Tanzu Kubernetes 클러스터를 확장하면, 새 클러스터 노드는 업데이트된 클래스 정의를 사용하지만 기존 클러스터 노드는 초기 클래스 정의를 계속 사용하여 불일치가 발생합니다. Tanzu Kubernetes 클러스터에 대한 가상 시스템 클래스의 내용을 참조하십시오.
- 작업자 노드 볼륨은 프로비저닝 후에 변경할 수 있습니다. 제어부 노드 볼륨은 할 수 없습니다.
확장/축소 사전 요구 사항: Kubectl 편집 구성
Tanzu Kubernetes 클러스터 크기를 조정하려면 kubectl edit tanzukubernetescluster/CLUSTER-NAME
명령을 사용하여 클러스터 매니페스트를 업데이트합니다. kubectl edit 명령은 KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트를 엽니다. 환경 변수 설정에 대한 지침은 kubectl용 기본 텍스트 편집기 지정 항목을 참조하십시오.
kubectl
은 편집 내용이 기록되었다고 보고하고 이 변경 내용으로 클러스터가 업데이트됩니다.
kubectl edit tanzukubernetescluster/tkgs-cluster-1 tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 edited
kubectl edit tanzukubernetescluster/tkgs-cluster-1 Edit cancelled, no changes made.
제어부 확장
- 감독자 클러스터로 인증합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkgs-cluster-ns
- 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
kubectl get tanzukubernetescluster tkgs-cluster-1
예를 들어 다음 클러스터에는 제어부 노드 1개와 작업자 노드 3개가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 1 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.kubectl edit tanzukubernetescluster/tkgs-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
spec.topology.controlPlane.count
매개 변수를 찾아서 노드 수를 1에서 3으로 늘립니다.... controlPlane: replicas: 1 ...
... ControlPlane: replicas: 3 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자 클러스터의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 새 노드가 추가되었는지 확인합니다.
kubectl get tanzukubernetescluster tkgs-cluster-1
확장된 제어부에 이제 3개의 노드가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
작업자 노드 확장
kubectl을 사용하여 작업자 노드 수를 늘려서 Tanzu Kubernetes 클러스터를 확장할 수 있습니다.
- 감독자 클러스터로 인증합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkgs-cluster-ns
- 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
kubectl get tanzukubernetescluster tkgs-cluster-1
예를 들어 다음 클러스터에는 제어부 노드 3개와 작업자 노드 3개가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.kubectl edit tanzukubernetescluster/tkgs-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
spec.topology.workers.count
매개 변수를 찾아서 노드 수를 늘립니다.... workers: replicas: 3 ...
... workers: replicas: 4 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자 클러스터의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 새 작업자 노드가 추가되었는지 확인합니다.
kubectl get tanzukubernetescluster tkgs-cluster-1
확장한 후에는 클러스터에 작업자 노드가 4개 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
작업자 노드 축소
작업자 노드 수를 줄여서 Tanzu Kubernetes 클러스터를 축소할 수 있습니다. 제어부에서는 확장/축소가 지원되지 않습니다.
- 감독자 클러스터로 인증합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkgs-cluster-ns
- 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 대상 클러스터에서 실행 중인 노드 수를 구합니다.
kubectl get tanzukubernetescluster tkgs-cluster-1
예를 들어 다음 클러스터에는 제어부 노드 3개와 작업자 노드 4개가 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 4 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
kubectl edit
명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.kubectl edit tanzukubernetescluster/tkgs-cluster-1
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
spec.topology.workers.count
매개 변수를 찾아서 노드 수를 줄입니다.... workers: replicas: 4 ...
... workers: replicas: 2 ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자 클러스터의 가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.
- 작업자 노드가 제거되었는지 확인합니다.
kubectl get tanzukubernetescluster tkgs-cluster-1
축소한 후에는 클러스터에 작업자 노드가 2개 있습니다.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 2 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
클러스터를 수직으로 확장/축소
클러스터 노드를 호스팅하는 데 사용되는 가상 시스템 클래스를 변경하여 Tanzu Kubernetes 클러스터를 수직으로 확장/축소할 수 있습니다. 수직 확장/축소는 제어부 및 작업자 노드 모두에서 지원됩니다.
Tanzu Kubernetes Grid 서비스는 서비스에 내장된 롤링 업데이트 메커니즘을 통해 클러스터 노드를 수직으로 확장/축소하도록 지원합니다. VirtualMachineClass
정의를 변경하는 경우 이 서비스는 새 클래스를 사용하여 새 노드를 롤아웃하고 이전 노드를 스핀 다운합니다. Tanzu Kubernetes 클러스터 업데이트의 내용을 참조하십시오.
- 감독자 클러스터로 인증합니다.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkgs-cluster-ns
- 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
kubectl get tanzukubernetescluster -n tkgs-cluster-ns
- 대상 Tanzu Kubernetes 클러스터를 설명하고 VM 클래스를 확인합니다.
kubectl describe tanzukubernetescluster tkgs-cluster-2
예를 들어 다음 클러스터는 best-effort-medium VM 클래스를 사용합니다.
Spec: ... Topology: Control Plane: Class: best-effort-medium ... nodePool-a1: Class: best-effort-medium ...
- 사용 가능한 VM 클래스를 나열하고 설명합니다.
kubectl get virtualmachineclassbinding
kubectl describe virtualmachineclassbinding
- 대상 클러스터 매니페스트를 편집하기 위해 엽니다.
kubectl edit tanzukubernetescluster/tkgs-cluster-2
KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.
- VM 클래스를 변경하여 매니페스트를 편집합니다.
예를 들어 제어부 및 작업자 노드에 대해
guaranteed-large
VM 클래스를 사용하도록 클러스터 매니페스트를 편집합니다.spec: topology: controlPlane: class: guaranteed-large ... nodePool-a1: class: guaranteed-large ...
- 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.
파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 Tanzu Kubernetes Grid 서비스는 새 노드를 프로비저닝하고 이전 노드를 삭제합니다. 롤링 업데이트 프로세스에 대한 설명은 Tanzu Kubernetes Grid 서비스 클러스터 업데이트 정보 항목을 참조하십시오.
- 클러스터가 업데이트되었는지 확인합니다.
kubectl get tanzukubernetescluster NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkgs-cluster-ns test-cluster 3 3 v1.21.2---vmware.1-tkg.1.13da849 5d12h True
노드 볼륨 확장/축소
노드에 대한 Tanzu Kubernetes 클러스터 규격에는 하나 이상의 영구 볼륨을 선언하는 옵션이 있습니다. 노드 볼륨 선언은 제어부의 ectd 데이터베이스 및 작업자 노드의 컨테이너 런타임과 같이 변동률이 높은 구성 요소에 유용합니다. 참조를 위해 이러한 노드 볼륨이 모두 선언된 클러스터 규격 발췌가 아래에 제공됩니다. (전체 예제 클러스터 규격은 여기에서 확인할 수 있습니다.)
볼륨 노드 | 설명 |
---|---|
작업자 노드 볼륨 변경이 허용됩니다. |
Tanzu Kubernetes 클러스터가 프로비저닝된 후 작업자 노드 볼륨을 추가하거나 업데이트할 수 있습니다. 롤링 업데이트를 시작하면 클러스터가 새 볼륨 또는 변경된 볼륨으로 업데이트됩니다.
경고: 새 볼륨 또는 변경된 볼륨으로 작업자 노드를 확장하는 경우 롤링 업데이트 중에 현재 볼륨의 데이터가 삭제됩니다.
|
제어부 노드 볼륨 변경은 허용되지 않습니다. | Tanzu Kubernetes 클러스터가 프로비저닝된 후에는 제어부 노드 볼륨을 추가하거나 업데이트할 수 없습니다. Kubernetes CAPI(Cluster API)는 spec.toplogy.controlPlane.volumes 에 대한 생성 후 변경을 금지합니다. 클러스터 생성 후 제어부 볼륨을 추가하거나 변경하려고 하면 요청이 거부되고 "불변 필드에 대한 업데이트는 허용되지 않습니다."라는 오류 메시지가 표시됩니다. |
spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium storageClass: vwt-storage-policy volumes: - name: etcd mountPath: /var/lib/etcd capacity: storage: 4Gi tkr: reference: name: v1.21.2---vmware.1-tkg.1.ee25d55 nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-large storageClass: vwt-storage-policy volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 16Gi