클러스터 확장/축소

이 항목에서는 다음 방법을 사용하여 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터 및 독립형 관리 클러스터를 확장하는 방법을 설명합니다.

  • 자동조정기: 독립형 관리 클러스터에 의해 배포된 워크로드 클러스터의 경우 클러스터 자동조정기를 사용하여 수요에 맞게 Worker 노드 수를 자동으로 조정할 수 있습니다. 클러스터 자동조정기를 사용하여 Worker 노드 확장/축소를 참조하십시오.

    자동조정기를 사용하여 Supervisor 클러스터에 의해 배포된 워크로드 클러스터를 확장/축소할 수 없습니다.

  • 수평으로 조정: 워크로드 또는 독립형 관리 클러스터의 경우 제어부 및 Worker 노드의 수를 수동으로 조정할 수 있습니다. 수평으로 클러스터 조정을 참조하십시오.

  • 수직으로 조정: 워크로드 클러스터의 경우 제어부 및 Worker 노드의 크기를 수동으로 변경할 수 있습니다. 수직으로 클러스터 확장/축소를 참조하십시오.

참고

노드 풀에서 노드 크기를 조정하려면 서로 다른 VM 유형의 노드 풀 관리노드 풀 업데이트를 참조하십시오.

클러스터 자동조정기를 사용하여 Worker 노드 확장/축소(독립형 MC)

클러스터 자동조정기는 워크로드 클러스터의 요구 사항에 따라 Kubernetes 클러스터를 자동으로 확장/축소하는 Kubernetes 프로그램입니다. 독립형 관리 클러스터에 의해 배포된 워크로드 클러스터에 대해서만 클러스터 자동조정기를 사용합니다.

클러스터 자동조정기에 대한 자세한 내용은 GitHub에서 다음 설명서를 참조하십시오.

기본적으로 클러스터 자동조정기는 Tanzu Kubernetes Grid에서 비활성화됩니다. 워크로드 클러스터에서 클러스터 자동조정기를 사용하도록 설정하려면 ENABLE_AUTOSCALERtrue로 설정하고 tanzu cluster create --file을 실행하기 전에 클러스터 구성 파일 또는 환경 변수에서 AUTOSCALER_ 옵션을 설정합니다.

중요

클래스 기반 클러스터의 경우 클러스터 API의 클러스트 API에서 라벨 전파 문제로 인해 클래스 기반 워크로드 클러스터를 생성한 후에는 아래의 (수동으로 최소 및 최대 크기 주석 추가)[#cc 해결 방법]에 설명된 대로 min-size 개체에 max-sizeMachineDeployment 주석을 수동으로 추가해야 합니다.

클러스터 구성 파일의 각 클러스터 자동조정기 구성 변수는 클러스터 자동조정기 도구의 매개 변수에 해당합니다. 이러한 변수 및 해당 기본값 목록은 구성 파일 변수 참조의 클러스터 자동조정기를 참조하십시오.

AUTOSCALER_*_SIZE 설정은 클러스터의 Worker 노드 수를 제한하지만, AUTOSCALER_MAX_NODES_TOTAL은 Worker와 제어부의 모든 노드 수를 제한합니다.

클러스터의 Worker 노드 수에 따라 AUTOSCALER_*_SIZE 값을 설정합니다.

  • 단일 Worker 노드가 있는 클러스터(예: dev 클러스터)의 경우 AUTOSCALER_MIN_SIZE_0AUTOSCALER_MAX_SIZE_0을 설정합니다.
  • Worker 노드가 여러 개 있는 클러스터(예: prod 클러스터)의 경우 다음을 설정합니다.
    • AUTOSCALER_MIN_SIZE_0AUTOSCALER_MAX_SIZE_0
    • AUTOSCALER_MIN_SIZE_1AUTOSCALER_MAX_SIZE_1
    • AUTOSCALER_MIN_SIZE_2AUTOSCALER_MAX_SIZE_2

다음은 클러스터 구성 파일의 클러스터 자동조정기 설정 예입니다. 클러스터를 배포한 후에는 이러한 값을 변경할 수 없습니다.

#! ---------------------------------------------------------------------
#! Autoscaler related configuration
#! ---------------------------------------------------------------------
ENABLE_AUTOSCALER: false
AUTOSCALER_MAX_NODES_TOTAL: "0"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
AUTOSCALER_MIN_SIZE_0:
AUTOSCALER_MAX_SIZE_0:
AUTOSCALER_MIN_SIZE_1:
AUTOSCALER_MAX_SIZE_1:
AUTOSCALER_MIN_SIZE_2:
AUTOSCALER_MAX_SIZE_2:

클러스터 자동조정기를 사용하도록 설정한 상태로 생성하는 각 워크로드 클러스터에 대해 Tanzu Kubernetes Grid는 관리 클러스터에 클러스터 자동조정기 배포를 생성합니다. 클러스터 자동조정기를 비활성화하려면 워크로드 클러스터와 연결된 클러스터 자동조정기 배포를 삭제합니다.

최소 및 최대 크기 주석 수동 추가

클러스터 자동조정기를 사용하도록 설정한 클래스 기반 워크로드 클러스터를 생성한 후에는 클러스트 API에서 라벨 전파 문제로 인해 클러스터 API의 min-sizemax-size 주석을 MachineDeployment에 수동으로 추가해야 합니다.

  1. 관리 클러스터에 kubectl 컨텍스트를 설정합니다.

    kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
    

    여기서 MY-MGMT-CLUSTER는 관리 클러스터의 이름입니다.

  2. MachineDeployment 개체를 나열하고 해당 AGE 값을 기록합니다.

    kubectl get md
    

    개체 이름은 -md로 끝나고 뒤에 각 AZ(가용성 영역) 숫자가 붙습니다.

  3. 클러스터에서 새로 생성된 각 MachineDeployment:

    1. min-size 주석을 추가합니다.

      kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
      

      여기서:

      • MD-NAMEMachineDeployment 개체의 이름입니다(예: my-wc-md-0).
      • MIN-SIZE는 AZ의 AUTOSCALER_MIN_SIZE_* 값입니다(예: 첫 번째 AZ에 배포되는 *-md0AUTOSCALER_MIN_SIZE_0 값).
    2. max-size 주석을 추가합니다.

      kubectl annotate machinedeployment MD-NAME cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
      

      여기서 MAX-SIZE는 위와 같이 AZ의 최대 MachineDeployment 노드 수입니다.

수평으로 클러스터 조정

클러스터 유형에 따라 두 가지 방법으로 TKG 클러스터를 수평으로 확장할 수 있습니다.

  • 모든 클러스터 아래에 설명된 대로 Tanzu CLI를 사용합니다.
  • 클래스 기반 워크로드 클러스터 아래의 클래스 기반 클러스터 확장/축소 섹션에 설명된 대로 클러스터 정의에서 replicas 설정을 변경합니다.

Tanzu CLI를 사용하여 수평으로 워크로드 클러스터를 확장/축소하려면 tanzu cluster scale 명령을 실행합니다.

중요

Tanzu Kubernetes Grid 작업이 실행되는 동안 컨텍스트를 변경하거나 .kube-tkg/config 파일을 편집하지 마십시오.

  • 제어부 및 Worker 노드: --controlplane-machine-count--worker-machine-count 옵션은 각각 새로운 수의 제어부 및 Worker 노드를 설정합니다.
  • 예:

    • 클러스터를 제어부 노드 5개와 Worker 노드 10개로 확장하려면 다음을 수행합니다.

      tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10
      

      --controlplane-machine-count 1과 함께 클러스터를 배포한 후 최대 3개의 제어부 노드로 확장한 경우, Tanzu Kubernetes Grid는 제어부에서 누적된 HA를 자동으로 사용하도록 설정합니다.

    • 클러스터가 default 이외의 네임스페이스에서 실행되는 경우 --namespace 옵션을 포함해야 합니다.

      tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
      
  • 독립형 관리 클러스터가 있는 vSphere: 독립형 관리 클러스터를 사용하여 배포된 vSphere 클러스터의 노드 수를 변경한 후에는 추가되거나 제거된 노드의 IP 주소에 대한 DHCP 예약을 예약하거나 해제해야 합니다. 이러한 예약을 수동으로 변경하려면 노드 DHCP 예약 및 끝점 DNS 레코드 구성(vSphere 전용)을 참조하십시오. DHCP 예약을 구성하는 방법에 대한 지침은 DHCP 서버 설명서를 참조하십시오.

  • Supervisor 클러스터가 있는 vSphere vSphere with Tanzu에서 실행되는 클러스터에서는 제어부 노드 1개 또는 제어부 노드 3개만 실행할 수 있습니다. 제어부 노드 수를 1에서 3으로 확장할 수 있지만 이 수를 3에서 1로 축소할 수는 없습니다.

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

워크로드 클러스터를 수직으로 확장/축소하는 절차는 클러스터 유형에 따라 다릅니다.

TKC 및 계획 기반 클러스터

클러스터의 시스템 템플릿을 변경하는 클러스터 API 설명서인프라 시스템 템플릿 업데이트 절차를 따르십시오.

이 절차는 다음과 같이 구성할 수 있는 kubectl get 명령을 사용하여 클러스터의 기존 시스템 템플릿을 다운로드합니다.

kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml

형식 설명:

  • MACHINE-TEMPLATE-TYPE:
    • vSphere의 VsphereMachineTemplate
    • Amazon Web Services(AWS)의 AWSMachineTemplate
    • Azure의 AzureMachineTemplate
  • MACHINE-TEMPLATE-NAME은 크기 조정 중인 클러스터 노드의 시스템 템플릿 이름으로, 다음과 같은 형식을 따릅니다.
    • 제어부 노드용 CLUSTER-NAME-control-plane
    • Worker 노드용 CLUSTER-NAME-worker

예:

kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml

클래스 기반 클러스터

클래스 기반 클러스터를 수직으로 확장/축소하려면 아래의 클래스 기반 클러스터 확장/축소에 설명된 대로 클러스터 정의에서 machine 설정을 변경합니다.

클래스 기반 클러스터 확장/축소

topology 구성을 사용하여 클래스 기반 클러스터를 수평 또는 수직으로 확장/축소하려면 다음을 수행합니다.

  1. kubectl을 관리 클러스터의 컨텍스트로 설정합니다. 예:

    kubectl config use-context management-cluster@admin
    
  2. kubectl edit cluster CLUSTER-NAME을 실행하고 controlPlaneworker 아래의 topology 블록에서 설정을 편집합니다.

    수평으로 확장/축소하려면 replicas 설정을 변경합니다. - 수직으로 확장/축소하려면 machine 아래에서 설정을 변경합니다.

    예:

    - name: controlPlane
      value:
        replicas: 3
        machine:
          diskGiB: 20
          memoryMiB: 8192
          numCPUs: 4
    - name: worker
      value:
        replicas: 5
        machine:
          diskGiB: 20
          memoryMiB: 8192
          numCPUs: 4
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon