Lesen Sie diese Anweisungen, um das Paket für die automatische Clusterskalierung mithilfe von „kubectl“ zu installieren und zu konfigurieren.
Anforderungen
- Die vSphere-Mindestversion ist vSphere 8 U3.
- Die TKr-Mindestversion ist TKr 1.27.x für vSphere 8.
- Die Nebenversion der TKr und die Nebenversion des Pakets für die automatische Clusterskalierung müssen mit übereinstimmen.
Konfigurieren des vSphere-Namespace
Schließen Sie die folgenden erforderlichen Aufgaben aus, um einen TKG-Cluster bereitzustellen.
- Installieren oder aktualisieren Sie Ihre Umgebung auf vSphere 8 U3 und TKr 1.27.x für vSphere 8.
- Erstellen oder aktualisieren Sie eine Inhaltsbibliothek mit den neuesten Tanzu Kubernetes-Versionen. Weitere Informationen hierzu finden Sie unter Verwalten von Kubernetes-Versionen für TKG-Dienst-Cluster.
- Erstellen und konfigurieren Sie einen vSphere-Namespace zum Hosten des TKG-Clusters. Weitere Informationen hierzu finden Sie unter Konfigurieren von vSphere-Namespaces für das Hosting von TKG-Dienst-Clustern.
- Installieren Sie den Kubernetes-CLI-Tools für vSphere.
Das folgende Beispiel kann verwendet werden, um die Tools über die Befehlszeile zu installieren. Weitere Anleitungen finden Sie unter Installieren des Kubernetes-CLI-Tools für 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/
- Führen Sie
kubectl
undkubectl vsphere
aus, um die Installation zu überprüfen.
Erstellen eines TKG-Clusters mit Anmerkungen für die automatische Skalierung
Befolgen Sie die Anweisungen, um einen TKG-Cluster zu erstellen. Weitere Anleitungen finden Sie unter Workflow zum Bereitstellen von TKG-Clustern auf mithilfe von Kubectl.
Zum Verwenden der automatischen Skalierung müssen Sie den Cluster mit Bezeichnungsanmerkungen für die automatische Skalierung konfigurieren, wie im hier bereitgestellten Beispiel für die Clusterspezifikation dargestellt. Im Gegensatz zur regulären Clusterbereitstellung wird die Anzahl der Worker-Knotenreplikate nicht hart codiert. Kubernetes verfügt über eine integrierte Standardlogik für die Replikate, die auf den Anmerkungen zur Mindest- und Maximalgröße der automatischen Skalierung basiert. Da es sich um einen neuen Cluster handelt, wird die Mindestgröße zum Erstellen des Clusters verwendet. Weitere Informationen finden Sie unter https://cluster-api.sigs.k8s.io/tasks/automated-machine-management/autoscaling.
- Authentifizieren Sie sich mithilfe von kubectl bei Supervisor.
kubectl vsphere login --server=SUPERVISOR-CONTROL-PLANE-IP-ADDRESS-or-FQDN --vsphere-username USERNAME
- Wechseln Sie den Kontext zum Ziel-vSphere-Namespace, der den Cluster hostet.
kubectl config use-context tkgs-cluster-namespace
- Listen Sie die VM-Klassen auf, die im vSphere-Namespace verfügbar sind.
Sie können nur VM-Klassen verwenden, die an den Ziel-vSphere-Namespace gebunden sind. Weitere Informationen hierzu finden Sie unter Verwenden von VM-Klassen mit TKG-Dienstclustern.
- Listen Sie die verfügbaren Klassen persistenter Speicher-Volumes auf.
kubectl describe namespace VSPHERE-NAMESPACE-NAME
Der Befehl gibt Details zum vSphere-Namespace zurück, einschließlich der Speicherklasse. Der Befehl
kubectl describe storageclasses
gibt auch verfügbare Speicherklassen zurück, erfordert jedoch vSphere-Administratorberechtigungen. - Listen Sie die verfügbaren Tanzu Kubernetes-Versionen auf.
kubectl get tkr
Dieser Befehl gibt die in diesem vSphere-Namespace verfügbaren TKrs und deren Kompatibilität zurück. Weitere Informationen hierzu finden Sie unter Verwalten von Kubernetes-Versionen für TKG-Dienst-Cluster.
- Verwenden Sie die Informationen, die Sie in Erfahrung haben, um eine YAML-Datei für die TKG-Clusterspezifikation mit der erforderlichen Konfiguration für die automatische Clusterskalierung zu erstellen.
- Verwenden Sie die Anmerkungen
*-min-size
und*-max-size
für die nodePools des Workers. In diesem Beispiel können zwischen 3 und 5 Worker-Knoten skaliert werden. Standardmäßig wird der Cluster mit 3 Worker-Knoten erstellt. - Verwenden Sie die passende Nebenversion für die TKr und für das Paket für die automatische Skalierung.
- Die Werte
metadata.name
undmetadata.namespace
für den Cluster stimmen mit den Standardwerten des Pakets für die automatische Skalierung überein. Wenn Sie diese Werte in der Clusterspezifikation ändern, müssen Sie sie inautoscaler-data-values
ändern (siehe unten).
#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
- Verwenden Sie die Anmerkungen
- Übernehmen Sie die Clusterspezifikation.
kubectl apply -f cc-autoscaler.yaml
- Überprüfen Sie die Clustererstellung.
kubectl get cluster,vm
- Überprüfen Sie die Clusterknotenversion.
kubectl get node
Installieren des Paketmanagers auf dem TKG-Cluster
- Melden Sie sich beim von Ihnen bereitgestellten TKG-Cluster an.
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
- Installieren Sie das Carvel-Tool imgpkg.
wget -O- https://carvel.dev/install.sh > install.sh sudo bash install.sh
- Führen Sie
imgpkg version
aus, um die Installation zu überprüfen. - Überprüfen Sie die Paket-Repository-Version.
imgpkg tag list -i projects.registry.vmware.com/tkg/packages/standard/repo
- Installieren Sie das Paketrepository. Aktualisieren Sie die Repository-Version entsprechend.
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
- Überprüfen Sie das Paketrepository.
kubectl get packagerepository -A NAMESPACE NAME AGE DESCRIPTION tkg-system tanzu-standard 2m22s Reconcile succeeded
- Überprüfen Sie, ob das Paket für die automatische Clusterskalierung vorhanden ist.
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 ...
Installieren des Pakets für die automatische Skalierung
kube-system
installiert.
- Erstellen Sie die Konfigurationsdatei
autoscaler.yaml
.- Sie können die automatische Skalierung anpassen. Ändern Sie dazu den Abschnitt
autoscaler-data-values
der Spezifikation mit den für Ihre Umgebung geeigneten Werten.
#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
- Sie können die automatische Skalierung anpassen. Ändern Sie dazu den Abschnitt
- Installieren Sie das Paket für die automatische Clusterskalierung.
kubectl apply -f autoscaler.yaml
- Überprüfen Sie die Installation des Pakets für die automatische Skalierung.
kubectl get pkgi -A | grep autoscaler
Erwartetes Ergebnis:tkg-system autoscaler cluster-autoscaler.tanzu.vmware.com 1.27.2+vmware.1-tkg.3 Reconcile succeeded 3m52s
- Überprüfen Sie die Bereitstellung für die automatische Skalierung.
kubectl get pods -n kube-system | grep autoscaler
cluster-autoscaler-798b65bd9f-bht8n 1/1 Running 0 2m
Testen der automatischen Skalierung des Clusters
Stellen Sie zum Testen der automatischen Skalierung des Clusters eine Anwendung bereit, erhöhen Sie die Anzahl der Replikate, und überprüfen Sie, ob zusätzliche Worker-Knoten horizontal skaliert werden, um die Last zu bewältigen.
Weitere Informationen hierzu finden Sie unter Testen der automatischen Skalierung des Clusters.
Upgrade eines automatisch skalierten Clusters
Damit Sie ein Upgrade eines automatisch skalierten Clusters durchführen können, halten Sie das Paket für die automatische Skalierung an.
Weitere Informationen hierzu finden Sie unter Upgrade eines automatisch skalierten Clusters mithilfe von Kubectl.