kubectl을 사용하여 클러스터 Autoscaler 패키지를 설치하고 구성하려면 다음 지침을 참조하십시오.
요구 사항
- 최소 vSphere 버전은 vSphere 8 U3입니다.
- 최소 TKr 버전은 vSphere 8의 경우 TKr 1.27.x입니다.
- TKr의 부 버전과 클러스터 Autoscaler 패키지의 부 버전이 일치해야 합니다.
vSphere 네임스페이스 구성
TKG 클러스터 프로비저닝을 위한 다음 사전 요구 사항 작업을 완료합니다.
- vSphere 8의 경우 vSphere 8 U3 및 TKr 1.27.x로 환경을 설치하거나 업데이트합니다.
- 최신 Tanzu Kubernetes 릴리스로 컨텐츠 라이브러리를 생성하거나 업데이트합니다. TKG 서비스 클러스터에 대한 Kubernetes 릴리스 관리의 내용을 참조하십시오.
- TKG 클러스터를 호스팅하기 위한 vSphere 네임스페이스를 생성하고 구성합니다. TKG 서비스 클러스터 호스팅을 위한 vSphere 네임스페이스 구성의 내용을 참조하십시오.
- 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/
kubectl
및kubectl vsphere
를 실행하여 설치를 확인합니다.
Autoscaler 주석을 사용하여 TKG 클러스터 생성
지침에 따라 TKG 클러스터를 생성합니다. 추가 지침은 Kubectl을 사용하여 TKG 클러스터를 프로비저닝하기 위한 워크플로 항목을 참조하십시오.
Autoscaler를 사용하려면 여기에 제공된 클러스터 규격 예에 설명된 대로 Autoscaler 레이블 주석으로 클러스터를 구성해야 합니다. 일반 클러스터 프로비저닝과 달리 작업자 노드 복제본 수를 하드 코딩하지 않습니다. Kubernetes에는 Autoscaler 최소 및 최대 크기 주석을 기반으로 복제본에 대한 기본 논리가 기본 제공됩니다. 이는 새 클러스터이므로 최소 크기는 클러스터를 생성하는 데 사용됩니다. 자세한 내용은 https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling의 내용을 참조하십시오.
- kubectl을 사용하여 감독자에서 인증합니다.
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- 클러스터를 호스팅할 대상 vSphere 네임스페이스로 컨텍스트를 전환합니다.
kubectl config use-context tkgs-cluster-namespace
- vSphere 네임스페이스에서 사용할 수 있는 VM 클래스를 나열합니다.
대상 vSphere 네임스페이스에 바인딩된 VM 클래스만 사용할 수 있습니다. TKG 서비스 클러스터에서 VM 클래스 사용의 내용을 참조하십시오.
- 사용 가능한 영구 볼륨 스토리지 클래스를 나열합니다.
kubectl describe namespace VSPHERE-NAMESPACE-NAME
이 명령은 스토리지 클래스를 포함하여 vSphere 네임스페이스에 대한 세부 정보를 반환합니다.
kubectl describe storageclasses
명령도 사용 가능한 스토리지 클래스를 반환하지만 vSphere 관리자 권한이 필요합니다. - 사용 가능한 Tanzu Kubernetes 릴리스를 나열합니다.
kubectl get tkr
이 명령은 이 vSphere 네임스페이스에서 사용할 수 있는 TKr과 해당 호환성을 반환합니다. TKG 서비스 클러스터에 대한 Kubernetes 릴리스 관리의 내용을 참조하십시오.
- 수집한 정보를 사용하여 필요한 클러스터 Autoscaler 구성으로 TKG 클러스터 규격 YAML 파일을 만듭니다.
- 작업자 nodePools에 대한
*-min-size
및*-max-size
주석을 사용합니다. 이 예에서 3은 최소값이고 5는 확장 가능한 최대 작업자 노드 수입니다. 기본적으로 클러스터는 작업자 노드 3개를 사용하여 생성됩니다. - TKr 및 Autoscaler 패키지에 대해 일치하는 부 버전을 사용합니다.
- 사용된 클러스터
metadata.name
및metadata.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
- 작업자 nodePools에 대한
- 클러스터 규격을 적용합니다.
kubectl apply -f cc-autoscaler.yaml
- 클러스터 생성을 확인합니다.
kubectl get cluster,vm
- 클러스터 노드 버전을 확인합니다.
kubectl get node
TKG 클러스터에 패키지 관리자를 생성합니다.
- 프로비저닝한 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
- Carvel imgpkg 도구를 설치합니다.
wget -O- https://carvel.dev/install.sh > install.sh sudo bash install.sh
imgpkg version
을 실행하여 설치를 확인합니다.- 패키지 저장소 버전을 확인합니다.
imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
- 패키지 저장소를 설치합니다. 그에 따라 저장소 버전을 업데이트합니다.
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
- 패키지 저장소를 확인합니다.
kubectl get packagerepository -A NAMESPACE NAME AGE DESCRIPTION tkg-system tanzu-standard 2m22s Reconcile succeeded
- 클러스터 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 패키지 설치
kube-system
네임스페이스에 배포로 설치됩니다.
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
- 환경에 적합한 값으로 규격의
- 클러스터 Autoscaler 패키지를 설치합니다.
kubectl apply -f autoscaler.yaml
- 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
- Autoscaler 배포를 확인합니다.
kubectl get pods -n kube-system | grep autoscaler
cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m
클러스터 자동 크기 조정 테스트
클러스터 자동 크기 조정을 테스트하려면 애플리케이션을 배포하고, 복제본 수를 늘리고, 로드를 처리하기 위해 추가 작업자 노드가 확장되었는지 확인합니다.
클러스터 Autoscaler 테스트의 내용을 참조하십시오.
자동 크기 조정된 클러스터 업그레이드
자동 크기 조정된 클러스터를 업그레이드하려면 Autoscaler 패키지를 일시 중지합니다.
Kubectl을 사용하여 자동 크기 조정된 클러스터 업그레이드의 내용을 참조하십시오.