노드 수를 변경하여 수평으로 또는 노드를 호스팅하는 가상 시스템 클래스를 변경하여 수직으로 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개가 있습니다.
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      1               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. kubectl edit 명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

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

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

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

  8. 새 노드가 추가되었는지 확인합니다.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    확장된 제어부에 이제 3개의 노드가 있습니다.
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

작업자 노드 확장

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개가 있습니다.
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               3        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. kubectl edit 명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

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

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

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

  8. 새 작업자 노드가 추가되었는지 확인합니다.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    확장한 후에는 클러스터에 작업자 노드가 4개 있습니다.
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               4        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

작업자 노드 축소

작업자 노드 수를 줄여서 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개가 있습니다.
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               4        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    
  5. kubectl edit 명령을 사용하여 편집할 클러스터 매니페스트를 로드합니다.
    kubectl edit tanzukubernetescluster/tkgs-cluster-1

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

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

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

  8. 작업자 노드가 제거되었는지 확인합니다.
    kubectl get tanzukubernetescluster tkgs-cluster-1
    축소한 후에는 클러스터에 작업자 노드가 2개 있습니다.
    NAME                CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1      3               2        v1.18.5+vmware.1-tkg.1.886c781   1d    running
    

클러스터를 수직으로 확장/축소

클러스터 노드를 호스팅하는 데 사용되는 가상 시스템 클래스를 변경하여 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-small VM 클래스를 사용합니다.

    Spec:
      ...
      Topology:
        Control Plane:
          Class:          best-effort-small
          ...
        Workers:
          Class:          best-effort-small
          ...
    
  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-xlarge VM 클래스를 사용하도록 클러스터 매니페스트를 편집합니다.
    spec:
      topology:
        controlPlane:
          class: guaranteed-xlarge
          ...
        workers:
          class: guaranteed-xlarge
          ...
    
  8. 변경 내용을 적용하려면 텍스트 편집기에서 파일을 저장합니다. 취소하려면 저장하지 않고 편집기를 닫습니다.

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

  9. 클러스터가 업데이트되고 있는지 확인합니다.
    kubectl get tanzukubernetescluster
    NAME             CONTROL PLANE   WORKER   DISTRIBUTION                     AGE   PHASE
    tkgs-cluster-1   3               3        v1.18.5+vmware.1-tkg.1.c40d30d   21h   updating