노드 수를 변경하여 수평으로 또는 노드를 호스팅하는 가상 시스템 클래스를 변경하여 수직으로 Tanzu Kubernetes 클러스터를 확장/축소할 수 있습니다.

지원되는 확장/축소 작업

다음 표에는 Tanzu Kubernetes 클러스터에 대해 지원되는 확장/축소 작업이 나열되어 있습니다.
표 1. 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.

제어부 확장

제어부 노드 수를 1에서 3으로 늘려서 Tanzu Kubernetes 클러스터를 확장할 수 있습니다. 제어부 노드의 수는 홀수여야 합니다. 제어부는 축소할 수 없습니다.
  1. 감독자 클러스터로 인증합니다.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context tkgs-cluster-ns
  3. 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 대상 클러스터에서 실행 중인 노드 수를 구합니다.
    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
    
  5. kubectl edit 명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.

  6. spec.topology.controlPlane.count 매개 변수를 찾아서 노드 수를 1에서 3으로 늘립니다.
    ...
    controlPlane:
        replicas: 1
    ...
    
    ...
    ControlPlane:
        replicas: 3
    ...
    
  7. 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.

    파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자 클러스터가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.

  8. 새 노드가 추가되었는지 확인합니다.
    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 클러스터를 확장할 수 있습니다.

  1. 감독자 클러스터로 인증합니다.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context tkgs-cluster-ns
  3. 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 대상 클러스터에서 실행 중인 노드 수를 구합니다.
    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
    
  5. kubectl edit 명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.

  6. spec.topology.workers.count 매개 변수를 찾아서 노드 수를 늘립니다.
    ...
    workers:
        replicas: 3
    ...
    
    ...
    workers:
        replicas: 4
    ...
    
  7. 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.

    파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자 클러스터가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.

  8. 새 작업자 노드가 추가되었는지 확인합니다.
    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 클러스터를 축소할 수 있습니다. 제어부에서는 확장/축소가 지원되지 않습니다.

  1. 감독자 클러스터로 인증합니다.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context tkgs-cluster-ns
  3. 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 대상 클러스터에서 실행 중인 노드 수를 구합니다.
    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
    
  5. kubectl edit 명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

    KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.

  6. spec.topology.workers.count 매개 변수를 찾아서 노드 수를 줄입니다.
    ...
    workers:
        replicas: 4
    ...
    
    ...
    workers:
        replicas: 2
    ...
    
  7. 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.

    파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 감독자 클러스터가상 시스템 서비스는 새 작업자 노드를 프로비저닝합니다.

  8. 작업자 노드가 제거되었는지 확인합니다.
    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 클러스터 업데이트의 내용을 참조하십시오.

  1. 감독자 클러스터로 인증합니다.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Tanzu Kubernetes 클러스터를 실행 중인 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context tkgs-cluster-ns
  3. 네임스페이스에서 실행 중인 Kubernetes 클러스터를 나열합니다.
    kubectl get tanzukubernetescluster -n tkgs-cluster-ns
  4. 대상 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
          ...
    
  5. 사용 가능한 VM 클래스를 나열하고 설명합니다.
    kubectl get virtualmachineclassbinding
    kubectl describe virtualmachineclassbinding
    참고: 사용하려는 VM 클래스는 vSphere 네임스페이스에 바인딩되어야 합니다. Tanzu Kubernetes 클러스터에 대한 가상 시스템 클래스의 내용을 참조하십시오.
  6. 대상 클러스터 매니페스트를 편집하기 위해 엽니다.
    kubectl edit tanzukubernetescluster/tkgs-cluster-2

    KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 텍스트 편집기에서 클러스터 매니페스트가 열립니다.

  7. VM 클래스를 변경하여 매니페스트를 편집합니다.
    예를 들어 제어부 및 작업자 노드에 대해 guaranteed-large VM 클래스를 사용하도록 클러스터 매니페스트를 편집합니다.
    spec:
      topology:
        controlPlane:
          class: guaranteed-large
          ...
        nodePool-a1:
          class: guaranteed-large
          ...
    
  8. 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.

    파일을 저장하면 kubectl이 변경 내용을 클러스터에 적용합니다. 백그라운드에서 Tanzu Kubernetes Grid 서비스는 새 노드를 프로비저닝하고 이전 노드를 삭제합니다. 롤링 업데이트 프로세스에 대한 설명은 Tanzu Kubernetes Grid 서비스 클러스터 업데이트 정보 항목을 참조하십시오.

  9. 클러스터가 업데이트되었는지 확인합니다.
    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