kubectl을 사용하여 클러스터 Autoscaler 패키지를 설치하고 구성하려면 다음 지침을 참조하십시오.

요구 사항

다음 요구 사항을 준수합니다.
  • 최소 vSphere 버전은 vSphere 8 U3입니다.
  • 최소 TKr 버전은 vSphere 8의 경우 TKr 1.27.x입니다.
  • TKr의 부 버전과 클러스터 Autoscaler 패키지의 부 버전이 일치해야 합니다.
주의: Autoscaler 패키지 부 버전과 TKr 부 버전 간에는 일대일 관계가 있습니다. 예를 들어 TKr 1.27.11을 사용하는 경우 Autoscaler v1.27.2를 설치해야 합니다. 버전이 일치하지 않으면 패키지 조정이 실패합니다.

vSphere 네임스페이스 구성

TKG 클러스터 프로비저닝을 위한 다음 사전 요구 사항 작업을 완료합니다.

  1. vSphere 8의 경우 vSphere 8 U3 및 TKr 1.27.x로 환경을 설치하거나 업데이트합니다.
  2. 최신 Tanzu Kubernetes 릴리스로 컨텐츠 라이브러리를 생성하거나 업데이트합니다. TKG 서비스 클러스터에 대한 Kubernetes 릴리스 관리의 내용을 참조하십시오.
  3. TKG 클러스터를 호스팅하기 위한 vSphere 네임스페이스를 생성하고 구성합니다. TKG 서비스 클러스터 호스팅을 위한 vSphere 네임스페이스 구성의 내용을 참조하십시오.
  4. vSphere에 대한 Kubernetes CLI 도구를 설치합니다.

    다음 예는 명령줄에서 도구를 설치하는 데 사용할 수 있습니다. 추가 지침은 vSphere에 대한 Kubernetes CLI 도구 설치 항목을 참조하십시오.

    curl -LOk https://${SUPERVISOR_IP-or-FQDN}/wcp/plugin/linux-amd64/vsphere-plugin.zip
    unzip vsphere-plugin.zip
    mv -v bin/* /usr/local/bin/
  5. kubectlkubectl vsphere를 실행하여 설치를 확인합니다.

Autoscaler 주석을 사용하여 TKG 클러스터 생성

지침에 따라 TKG 클러스터를 생성합니다. 추가 지침은 Kubectl을 사용하여 TKG 클러스터를 프로비저닝하기 위한 워크플로 항목을 참조하십시오.

Autoscaler를 사용하려면 여기에 제공된 클러스터 규격 예에 설명된 대로 Autoscaler 레이블 주석으로 클러스터를 구성해야 합니다. 일반 클러스터 프로비저닝과 달리 작업자 노드 복제본 수를 하드 코딩하지 않습니다. Kubernetes에는 Autoscaler 최소 및 최대 크기 주석을 기반으로 복제본에 대한 기본 논리가 기본 제공됩니다. 이는 새 클러스터이므로 최소 크기는 클러스터를 생성하는 데 사용됩니다. 자세한 내용은 https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling의 내용을 참조하십시오.

  1. kubectl을 사용하여 감독자에서 인증합니다.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
  2. 클러스터를 호스팅할 대상 vSphere 네임스페이스로 컨텍스트를 전환합니다.
    kubectl config use-context tkgs-cluster-namespace
  3. vSphere 네임스페이스에서 사용할 수 있는 VM 클래스를 나열합니다.

    대상 vSphere 네임스페이스에 바인딩된 VM 클래스만 사용할 수 있습니다. TKG 서비스 클러스터에서 VM 클래스 사용의 내용을 참조하십시오.

  4. 사용 가능한 영구 볼륨 스토리지 클래스를 나열합니다.
    kubectl describe namespace VSPHERE-NAMESPACE-NAME

    이 명령은 스토리지 클래스를 포함하여 vSphere 네임스페이스에 대한 세부 정보를 반환합니다. kubectl describe storageclasses 명령도 사용 가능한 스토리지 클래스를 반환하지만 vSphere 관리자 권한이 필요합니다.

  5. 사용 가능한 Tanzu Kubernetes 릴리스를 나열합니다.
    kubectl get tkr

    이 명령은 이 vSphere 네임스페이스에서 사용할 수 있는 TKr과 해당 호환성을 반환합니다. TKG 서비스 클러스터에 대한 Kubernetes 릴리스 관리의 내용을 참조하십시오.

  6. 수집한 정보를 사용하여 필요한 클러스터 Autoscaler 구성으로 TKG 클러스터 규격 YAML 파일을 만듭니다.
    • 작업자 nodePools에 대한 *-min-size*-max-size 주석을 사용합니다. 이 예에서 3은 최소값이고 5는 확장 가능한 최대 작업자 노드 수입니다. 기본적으로 클러스터는 작업자 노드 3개를 사용하여 생성됩니다.
    • TKr 및 Autoscaler 패키지에 대해 일치하는 부 버전을 사용합니다.
    • 사용된 클러스터 metadata.namemetadata.namespace 값은 Autoscaler 패키지 기본값과 일치합니다. 클러스터 규격에서 이러한 값을 변경하는 경우 autoscaler-data-values에서 수정해야 합니다(아래 참조).
    #cc-autoscaler.yaml
    apiVersion: cluster.x-k8s.io/v1beta1
    kind: Cluster
    metadata:
     name: gc1
     namespace: cluster
    spec:
     clusterNetwork:
       pods:
         cidrBlocks:
         - 192.0.2.0/16
       serviceDomain: cluster.local
       services:
         cidrBlocks:
         - 198.51.100.0/12
     topology:
       class: tanzukubernetescluster
       controlPlane:
         metadata: {}
         replicas: 3
       variables:
       - name: storageClasses
         value:
         - wcpglobal-storage-profile
       - name: vmClass
         value: guaranteed-medium
       - name: storageClass
         value: wcpglobal-storage-profile
       #minor versions must match
       version: v1.27.11---vmware.1-fips.1-tkg.2
       workers:
         machineDeployments:
         - class: node-pool
           metadata:
             annotations:
               cluster.x-k8s.io/cluster-api-autoscaler-node-group-min-size: "3"
               cluster.x-k8s.io/cluster-api-autoscaler-node-group-max-size: "5"
           name: np-1
  7. 클러스터 규격을 적용합니다.
    kubectl apply -f cc-autoscaler.yaml
  8. 클러스터 생성을 확인합니다.
    kubectl get cluster,vm
  9. 클러스터 노드 버전을 확인합니다.
    kubectl get node

TKG 클러스터에 패키지 관리자를 생성합니다.

TKG 클러스터가 프로비저닝되면 클러스터에 패키지 관리자를 설치하고 패키지 저장소를 설정합니다.
  1. 프로비저닝한 TKG 클러스터에 로그인합니다.
    kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN \
    --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
  2. Carvel imgpkg 도구를 설치합니다.
    wget -O- https://carvel.dev/install.sh > install.sh
    sudo bash install.sh
  3. imgpkg version을 실행하여 설치를 확인합니다.
  4. 패키지 저장소 버전을 확인합니다.
    imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
  5. 패키지 저장소를 설치합니다. 그에 따라 저장소 버전을 업데이트합니다.
    apiVersion: packaging.carvel.dev/v1alpha1
    kind: PackageRepository
    metadata:  
      name: tanzu-standard  
      namespace: tkg-system
    spec:  
      fetch:    
        imgpkgBundle:      
          image: projects.registry.vmware.com/tkg/packages/standard/repo:v2024.4.12
  6. 패키지 저장소를 확인합니다.
    kubectl get packagerepository -A
    NAMESPACE    NAME             AGE     DESCRIPTION
    tkg-system   tanzu-standard   2m22s   Reconcile succeeded
  7. 클러스터 Autoscaler 패키지가 있는지 확인합니다.
    kubectl get package
    NAME                                                                  PACKAGEMETADATA NAME                             VERSION                 AGE
    cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.1                    cert-manager.tanzu.vmware.com                    1.7.2+vmware.3-tkg.1    5s
    cert-manager.tanzu.vmware.com.1.7.2+vmware.3-tkg.3                    cert-manager.tanzu.vmware.com                    1.7.2+vmware.3-tkg.3    5s
    cluster-autoscaler.tanzu.vmware.com.1.25.1+vmware.1-tkg.3             cluster-autoscaler.tanzu.vmware.com              1.25.1+vmware.1-tkg.3   5s
    cluster-autoscaler.tanzu.vmware.com.1.26.2+vmware.1-tkg.3             cluster-autoscaler.tanzu.vmware.com              1.26.2+vmware.1-tkg.3   5s
    cluster-autoscaler.tanzu.vmware.com.1.27.2+vmware.1-tkg.3             cluster-autoscaler.tanzu.vmware.com              1.27.2+vmware.1-tkg.3   5s
    contour.tanzu.vmware.com.1.26.2+vmware.1-tkg.1                        contour.tanzu.vmware.com                         1.26.2+vmware.1-tkg.1   5s
    ...

Autoscaler 패키지 설치

이제 클러스터 Autoscaler 패키지를 설치할 수 있습니다. 클러스터 Autoscaler는 kube-system 네임스페이스에 배포로 설치됩니다.
  1. autoscaler.yaml 구성 파일을 생성합니다.
    • 환경에 적합한 값으로 규격의 autoscaler-data-values 섹션을 변경하여 Autoscaler를 사용자 지정할 수 있습니다.
    #autoscaler.yaml
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: autoscaler-sa
      namespace: tkg-system
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: autoscaler-role-binding
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: cluster-admin
    subjects:
      - kind: ServiceAccount
        name: autoscaler-sa
        namespace: tkg-system
    ---
    apiVersion: packaging.carvel.dev/v1alpha1
    kind: PackageInstall
    metadata:
      name: autoscaler
      namespace: tkg-system
    spec:
      serviceAccountName: autoscaler-sa
      packageRef:
        refName: cluster-autoscaler.tanzu.vmware.com
        versionSelection:
          constraints: 1.27.2+vmware.1-tkg.3
      values:
      - secretRef:
          name: autoscaler-data-values
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: autoscaler-data-values
      namespace: tkg-system
    stringData:
      values.yml: |
        ---
        arguments:
          ignoreDaemonsetsUtilization: true
          maxNodeProvisionTime: 15m
          maxNodesTotal: 0
          metricsPort: 8085
          scaleDownDelayAfterAdd: 10m
          scaleDownDelayAfterDelete: 10s
          scaleDownDelayAfterFailure: 3m
          scaleDownUnneededTime: 10m
        clusterConfig:
          clusterName: "gc1"
          clusterNamespace: "cluster"
        paused: false
  2. 클러스터 Autoscaler 패키지를 설치합니다.
    kubectl apply -f autoscaler.yaml
  3. Autoscaler 패키지 설치를 확인합니다.
    kubectl get pkgi -A | grep autoscaler
    예상 결과:
    tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
  4. Autoscaler 배포를 확인합니다.
    kubectl get pods -n kube-system | grep autoscaler
    cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m

클러스터 자동 크기 조정 테스트

클러스터 자동 크기 조정을 테스트하려면 애플리케이션을 배포하고, 복제본 수를 늘리고, 로드를 처리하기 위해 추가 작업자 노드가 확장되었는지 확인합니다.

클러스터 Autoscaler 테스트의 내용을 참조하십시오.

자동 크기 조정된 클러스터 업그레이드

자동 크기 조정된 클러스터를 업그레이드하려면 Autoscaler 패키지를 일시 중지합니다.

Kubectl을 사용하여 자동 크기 조정된 클러스터 업그레이드의 내용을 참조하십시오.