Fare riferimento a queste istruzioni per installare e configurare il pacchetto di Cluster Autoscaler utilizzando kubectl.
Requisiti
- La versione di vSphere minima è vSphere 8 U3
- La versione di TKr minima è TKr 1.27.x per vSphere 8
- La versione secondaria di TKr e la versione secondaria del pacchetto di Cluster Autoscaler devono corrispondere
Configurazione di Spazio dei nomi vSphere
Per eseguire il provisioning di un cluster TKG, completare le attività preliminari seguenti.
- Installare o aggiornare l'ambiente a vSphere 8 U3 e TKr 1.27.x per vSphere 8.
- Creare o aggiornare una libreria di contenuti con più Release di Tanzu Kubernetes. Vedere Amministrazione delle versioni di Kubernetes per i cluster Servizio TKG.
- Creare e configurare uno Spazio dei nomi vSphere che ospiti il cluster TKG. Vedere Configurazione di Spazi dei nomi vSphere per l'hosting di cluster Servizio TKG.
- Installare Strumenti CLI Kubernetes di vSphere.
L'esempio seguente può essere utilizzato per installare gli strumenti dalla riga di comando. Per ulteriori istruzioni, vedere Installazione di Strumenti CLI Kubernetes di vSphere..
curl -LOk https://${SUPERVISOR_IP-or-FQDN}/wcp/plugin/linux-amd64/vsphere-plugin.zip unzip vsphere-plugin.zip mv -v bin/* /usr/local/bin/
- Eseguire
kubectl
ekubectl vsphere
per verificare l'installazione.
Creazione di un cluster TKG con annotazioni di Autoscaler
Seguire le istruzioni per creare un cluster TKG. Per ulteriori istruzioni, vedere Workflow per il provisioning dei cluster TKG utilizzando Kubectl.
Per utilizzare Autoscaler, è necessario configurare il cluster con annotazioni delle etichette di Autoscaler, come illustrato nell'esempio di specifica del cluster fornito qui. A differenza del normale provisioning del cluster, non si esegue l'hardcoding del numero di repliche dei nodi worker. Kubernetes dispone di una logica predefinita integrata per le repliche in base alle annotazioni delle dimensioni minime e massime di Autoscaler. Poiché si tratta di un nuovo cluster, per creare il cluster vengono utilizzate le dimensioni minime. Per ulteriori informazioni, vedere https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling.
- Eseguire l'autenticazione con Supervisore utilizzando kubectl.
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- Passare al contesto dello Spazio dei nomi vSphere di destinazione che ospiterà il cluster.
kubectl config use-context tkgs-cluster-namespace
- Recuperare l'elenco delle classi di macchine virtuali disponibili in Spazio dei nomi vSphere.
È possibile utilizzare solo classi di macchine virtuali associate allo Spazio dei nomi vSphere di destinazione. Vedere Utilizzo di classi di macchine virtuali con i cluster Servizio TKG.
- Recuperare l'elenco delle classi di storage dei volumi persistenti disponibili.
kubectl describe namespace VSPHERE-NAMESPACE-NAME
Il comando restituisce i dettagli relativi allo Spazio dei nomi vSphere, inclusa la classe di storage. Il comando
kubectl describe storageclasses
restituisce anche classi di storage disponibili, ma richiede autorizzazioni di amministratore vSphere. - Elencare le Release di Tanzu Kubernetes disponibili.
kubectl get tkr
Questo comando restituisce le TKr disponibili in questo Spazio dei nomi vSphere e la loro compatibilità. Vedere Amministrazione delle versioni di Kubernetes per i cluster Servizio TKG.
- Utilizzare le informazioni raccolte per creare un file YAML delle specifiche del cluster TKG con la configurazione di Cluster Autoscaler richiesta.
- Utilizzare le annotazioni
*-min-size
e*-max-size
per i nodePool worker. In questo esempio, 3 è il numero minimo e 5 è il numero massimo di nodi worker che è possibile scalare. Per impostazione predefinita, il cluster verrà creato con 3 nodi worker. - Utilizzare la versione secondaria corrispondente per il pacchetto di TKr e Autoscaler.
- I valori
metadata.name
emetadata.namespace
del cluster utilizzati sono coerenti con i valori predefiniti del pacchetto di Autoscaler. Se si modificano questi valori nella specifica del cluster, sarà necessario modificarli inautoscaler-data-values
(vedere di seguito).
#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
- Utilizzare le annotazioni
- Applicare la specifica del cluster.
kubectl apply -f cc-autoscaler.yaml
- Verificare la creazione del cluster.
kubectl get cluster,vm
- Verificare la versione del nodo del cluster.
kubectl get node
Installazione del gestore pacchetti nel cluster TKG
- Accedere al cluster TKG di cui è stato eseguito il provisioning.
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
- Installare lo strumento imgpkg Carvel.
wget -O- https://carvel.dev/install.sh > install.sh sudo bash install.sh
- Eseguire
imgpkg version
per verificare l'installazione. - Controllare la versione del repository dei pacchetti.
imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
- Installare il repository dei pacchetti. Aggiornare la versione del repository di conseguenza.
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
- Verificare il repository dei pacchetti.
kubectl get packagerepository -A NAMESPACE NAME AGE DESCRIPTION tkg-system tanzu-standard 2m22s Reconcile succeeded
- Verificare l'esistenza del pacchetto di Cluster 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 ...
Installazione del pacchetto di Autoscaler
kube-system
.
- Creare il file di configurazione
autoscaler.yaml
.- È possibile personalizzare Autoscaler modificando la sezione
autoscaler-data-values
della specifica con i valori appropriati per il proprio ambiente.
#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
- È possibile personalizzare Autoscaler modificando la sezione
- Installare il pacchetto di Cluster Autoscaler.
kubectl apply -f autoscaler.yaml
- Verificare l'installazione del pacchetto di Autoscaler.
kubectl get pkgi -A | grep autoscaler
Risultato previsto:tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
- Verificare la distribuzione di Autoscaler.
kubectl get pods -n kube-system | grep autoscaler
cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m
Test di Cluster Autoscaler
Per testare Cluster Autoscaler, distribuire un'applicazione, aumentare il numero di repliche e verificare che vengano utilizzati nodi worker aggiuntivi per gestire il carico aggiuntivo.
Aggiornamento di un cluster ridimensionato automaticamente
Per aggiornare un cluster con scalabilità automatica, sospendere il pacchetto di Autoscaler.
Vedere Aggiornamento del cluster sottoposto ad Autoscaler utilizzando Kubectl.