Lesen Sie diese Anweisungen, um einen TKG-Cluster basierend auf einer benutzerdefinierten ClusterClass bereitzustellen. Beachten Sie, dass diese Anweisungen spezifisch für vSphere 8 U2- und höhere Umgebungen gelten.
Voraussetzungen
Das Verfahren für die Bereitstellung eines TKG-Clusters basierend auf einer benutzerdefinierten ClusterClass wurde für die Version vSphere 8 U2 aktualisiert.
- vSphere 8 U2- und höhere Umgebung
- Arbeitslastverwaltung aktiviert
- Supervisor konfiguriert
- Ubuntu-Client mit installierten Kubernetes-CLI-Tools für vSphere
Workflows auf hoher Ebene
Die Workflows auf hoher Ebene sehen wie folgt aus.
Schritt | Aufgabe | Anleitung |
---|---|---|
1 | Erstellen Sie eine benutzerdefinierte ClusterClass, indem Sie die standardmäßige ClusterClass klonen. | 1: Erstellen einer benutzerdefinierten ClusterClass |
2 | Stellen Sie einen neuen TKG-Cluster basierend auf der benutzerdefinierten ClusterClass bereit und vergewissern Sie sich, dass alle Clusterknoten ordnungsgemäß hochgefahren werden. | 2: Erstellen eines TKG-Clusters basierend auf der benutzerdefinierten ClusterClass |
Schritt | Aufgabe | Anleitung |
---|---|---|
3 | Melden Sie sich über SSH bei einem der Worker-Knoten an, um zu bestätigen, dass Pakete aktualisiert werden müssen. | 3: Bestätigen des Vorhandenseins von Paketaktualisierungen |
4 | Aktualisieren Sie die benutzerdefinierte ClusterClass mit einem neuen Befehl, der die Aktualisierungen durchführt. | 4: Aktualisieren der benutzerdefinierten ClusterClass |
5 | Bestätigen Sie das Rollout neuer Knoten mit den bereits ausgeführten Updates. | 5: Überprüfen des parallelen Updates von Clusterknoten |
1: Erstellen einer benutzerdefinierten ClusterClass
ccc
(Abkürzung für
customclusterclass
), indem Sie die standardmäßige ClusterClass mit dem Namen
tanzukubernetescluster
klonen.
- Erstellen und konfigurieren Sie einen vSphere-Namespace mit dem Namen ccc-ns.
Konfigurieren Sie Berechtigungen, Speicher, Inhaltsbibliothek und VM-Klassen. Weitere Informationen finden Sie je nach Bedarf in der Dokumentation.
Hinweis: Der vSphere-Namespace-Name ist benutzerdefiniert. Wenn Sie einen anderen Namen verwenden, passen Sie die Anweisungen entsprechend an. - Melden Sie sich bei Supervisor an.
kubectl vsphere login --server=IP-ADDRESS --vsphere-username [email protected]
- Schreiben Sie die Ausgabe der standardmäßigen ClusterClass in eine Datei mit dem Namen ccc.yaml.
kubectl -n ccc-ns get clusterclass tanzukubernetescluster -o yaml > ccc.yaml
Oder in abgekürzter Version:kubectl -n ccc-ns get cc tanzukubernetescluster -o yaml > ccc.yaml
- Öffnen Sie die geklonte ClusterClass-Datei zum Bearbeiten.
vim ccc.yaml
- Bearbeiten Sie die Datei
ccc.yaml
.- Löschen Sie die Zeile
metadata.creationTimestamp
. - Löschen Sie die Zeile
metadata.generation
. - Löschen Sie die Zeile
metadata.resourceVersion
. - Löschen Sie die Zeile
metadata.uid
. - Ändern Sie den Wert für
metadata.name
vontanzukubernetescluster
inccc
. - Ändern Sie den Wert
metadata.namespace
nicht:ccc-ns
- Behalten Sie den Wert
metadata.annotations
fürrun.tanzu.vmware.com/resolve-tkr: ""
bei. Diese Anmerkung ist für die TKR-Daten/-Auflösung erforderlich.
- Löschen Sie die Zeile
- Speichern und verifizieren Sie die Änderungen.
apiVersion: cluster.x-k8s.io/v1beta1 kind: ClusterClass metadata: annotations: run.tanzu.vmware.com/resolve-tkr: "" name: ccc namespace: ccc-ns spec: ...
- Erstellen Sie das benutzerdefinierte ClusterClass-Objekt.
kubectl apply -f ccc.yaml -n ccc-ns
Erwartetes Ergebnis:clusterclass.cluster.x-k8s.io/ccc created
- Listen Sie die benutzerdefinierte ClusterClass auf.
kubectl get cc -n ccc-ns
Erwartetes Ergebnis:NAME AGE ccc 3m14s tanzukubernetescluster 29m
2: Erstellen eines TKG-Clusters basierend auf der benutzerdefinierten ClusterClass
- Erstellen Sie das
ccc-cluster.yaml
-Manifest, um den Cluster bereitzustellen.#ccc-cluster.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: ccc-cluster spec: clusterNetwork: pods: cidrBlocks: - 192.0.2.0/16 services: cidrBlocks: - 198.51.100.0/12 serviceDomain: cluster.local topology: class: ccc version: v1.26.5---vmware.2-fips.1-tkg.1 controlPlane: replicas: 1 workers: machineDeployments: - class: node-pool name: tkgs-node-pool-1 replicas: 1 variables: - name: vmClass value: guaranteed-small - name: storageClass value: tkg-storage-profile
Dabei gilt:- Der Wert für
metadata.name
ist der Name des Clusters:ccc-cluster
- Der Wert für
spec.topology.class
stimmt mit dem Namen der benutzerdefinierten ClusterClass überein:ccc
- Der Wert für
spec.topology.version
ist die TKR-Version - Der Wert für
spec.topology.variables.storageClass
ist der Name der dauerhaften Speicherklasse
Hinweis: Zu Testzwecken reicht 1 Replikat für die Steuerungsebene und den Worker-Knotenpool aus. Verwenden Sie in der Produktion 3 Replikate für die Steuerungsebene und mindestens 3 Replikate für jeden Worker-Knotenpool. - Der Wert für
- Erstellen Sie den TKG-Cluster basierend auf der benutzerdefinierten ClusterClass.
kubectl apply -f ccc-cluster.yaml -n ccc-ns
Erwartetes Ergebnis:cluster.cluster.x-k8s.io/ccc-cluster created
- Überprüfen Sie die Clusterbereitstellung.
Führen Sie den folgenden Befehl aus. Warten Sie, bis alle Clusterknoten ordnungsgemäß hochgefahren wurden.
kubectl -n ccc-ns get cc,clusters,vsphereclusters,kcp,machinedeployment,machineset,machine,vspheremachine,virtualmachineservice
Hinweis: Es ist hilfreich, diesen Befehl in einer separaten Sitzung auszuführen, damit Sie den Fortschritt des parallelen Updates in Schritt 5 überwachen können.
3: Bestätigen des Vorhandenseins von Paketaktualisierungen
- Führen Sie den folgenden Befehl aus, um den geheimen SSH-Schlüssel abzurufen.
export CC=ccc-cluster && kubectl get secret -n ccc-ns ${CC}-ssh -o jsonpath={.data.ssh-privatekey} | base64 -d > ${CC}-ssh && chomd 4000 ${CC}-ssh
- Führen Sie den folgenden Befehl aus, um die IP-Adresse der Worker-Knoten-VM abzurufen.
kubectl -n ccc-ns get vm -o wide
Hinweis: Wenn Sie mehrere Worker-Knoten bereitgestellt haben, wählen Sie einen davon aus. Verwenden Sie keinen Steuerungsebenenknoten. - Führen Sie den folgenden Befehl aus, um sich per SSH bei der Worker-Knoten-VM anzumelden.
ssh -i ${CC}-ssh vmware-system-user@IP-ADDRESS-OF-WORKER-NODE
Beispiel:ssh -i ${CC}-ssh [email protected]
Hinweis: Geben Sie „Ja“ ein, um mit dem Herstellen der Verbindung fortzufahren.Erwartetes Ergebnis: Nach dem Anmelden per SSH beim Host sollte die folgende Meldung angezeigt werden.tdnf update info not availble yet!
- Führen Sie die folgenden Befehle aus und suchen Sie nach Updates.
sudo -i
tdnf update
- Geben Sie an der Eingabeaufforderung „N“ für „Nein“ ein (nicht aktualisieren).
Erwartetes Ergebnis:
Operation aborted
Hinweis: Der Zweck besteht hier einfach darin, zu überprüfen, ob Aktualisierungen vorhanden sind, und nicht darin, Aktualisierungen zu initiieren. Sie initiieren die Aktualisierungen, indem Sie im nächsten Abschnitt einen Befehl zur benutzerdefinierten ClusterClass hinzufügen. - Geben Sie „exit“ ein, um sich von der SSH-Sitzung abzumelden, und geben Sie dann erneut „exit“ ein.
4: Aktualisieren der benutzerdefinierten ClusterClass
- Öffnen Sie die benutzerdefinierte ClusterClass mit dem Namen
ccc
.kubectl edit cc ccc -n ccc-ns
- Scrollen Sie zum folgenden Abschnitt mit
postKubeadmCommands
.- definitions: - jsonPatches: - op: add path: /spec/template/spec/kubeadmConfigSpec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' selector: apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: KubeadmControlPlaneTemplate matchResources: controlPlane: true - jsonPatches: - op: add path: /spec/template/spec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' selector: apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 kind: KubeadmConfigTemplate matchResources: machineDeploymentClass: names: - node-pool name: controlPlanePostKubeadmCommandsSuccess
Fügen Sie beidenvalueFrom.template
Feldern den folgenden Befehl hinzu.- tdnf update -y
Beispiel:- definitions: - jsonPatches: - op: add path: /spec/template/spec/kubeadmConfigSpec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' - tdnf update -y selector: apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: KubeadmControlPlaneTemplate matchResources: controlPlane: true - jsonPatches: - op: add path: /spec/template/spec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' - tdnf update -y selector: apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 kind: KubeadmConfigTemplate matchResources: machineDeploymentClass: names: - node-pool name: controlPlanePostKubeadmCommandsSuccess
- Speichern Sie die Änderungen an der benutzerdefinierten ClusterClass und schließen Sie den Editor.
wq
Erwartetes Ergebnis:clusterclass.cluster.x-k8s/ccc edited
5: Überprüfen des parallelen Updates von Clusterknoten
- Überprüfen Sie die Clusterbereitstellung, indem Sie folgenden Befehl ausführen:
Warten Sie, bis alle Clusterknoten ordnungsgemäß hochgefahren wurden.
kubectl -n ccc-ns get cc,clusters,vsphereclusters,kcp,machinedeployment,machineset,machine,vspheremachine,virtualmachineservice
- Es sollte zu sehen sein, dass neue Knoten mit neuen UUIDs bereitgestellt werden.
- Führen Sie den folgenden Befehl aus, um sich per SSH bei der Worker-Knoten-VM anzumelden.
ssh -i ${CC}-ssh vmware-system-user@IP-ADDRESS-OF-WORKER-NODE
Erwartetes Ergebnis: Nach dem Anmelden per SSH beim Host sollte die folgende Meldung angezeigt werden.tdnf update info not availble yet!
- Führen Sie die folgenden Befehle aus:
sudo -i
tdnf update
Erwartetes Ergebnis: Es sollten viel weniger zu aktualisierende Pakete angezeigt werden.
- Geben Sie an der Eingabeaufforderung „N“ für „Nein“ ein (nicht aktualisieren).
Erwartetes Ergebnis:
Operation aborted
- Führen Sie den folgenden Befehl aus, um zu bestätigen, dass tdnf ausgeführt wurde.
cat /var/log/cloud-init-output.log | grep -i tdnf
- Geben Sie „exit“ ein, um sich von der SSH-Sitzung abzumelden, und geben Sie dann erneut „exit“ ein.
Warten einer benutzerdefinierten ClusterClass
Nach dem Upgrade des TKG-Diensts auf eine neue Version müssen Sie sicherstellen, dass Ihre benutzerdefinierte ClusterClass, die aus der Standard-ClusterClass der vorherigen TKG-Dienstversion abgeleitet wurde, mit den Änderungen an der Standard-ClusterClass aktualisiert wird, die mit der neuen TKG-Dienstversion ausgeliefert wird.
- Upgrade der TKG-Dienstversion
Führen Sie beispielsweise ein Upgrade von TKG-Dienst v3.0 auf v3.1 durch.
Weitere Informationen hierzu finden Sie unter Installieren und Aktualisieren des TKG-Diensts.
- Erstellen Sie eine neue benutzerdefinierte ClusterClass, indem Sie den hier angegebenen Anweisungen folgen.
Versionieren Sie die neue benutzerdefinierte ClusterClass manuell, indem Sie an ihren Namen die TKG-Dienstversion anhängen, etwa
ccc-3.1
. - Fügen Sie der neuen benutzerdefinierten ClusterClass die benutzerdefinierten Patches und Variablen aus der vorherigen benutzerdefinierten ClusterClass hinzu.
Verwenden Sie dazu
cat ccc.yaml
, und kopieren Sie die benutzerdefinierten Patches und Variablen daraus nachccc-3.1.yaml
. - Wenden Sie die neue benutzerdefinierte ClusterClass an, und warten Sie, bis der Abgleich erfolgreich verläuft.
- Aktualisieren Sie TKG-Cluster mit der vorherigen benutzerdefinierten ClusterClass auf die neue benutzerdefinierte ClusterClass, indem Sie das Feld
spec.topology.class
im Cluster-Objekt bearbeiten.
Nicht verwaltete ClusterClass
Für vSphere 8 U2+ gibt es eine Anmerkung, die Sie zu einer benutzerdefinierten ClusterClass hinzufügen können, wenn der TKG-Controller die benutzerdefinierte ClusterClass nicht verwalten soll. Beachten Sie, dass Sie für die manuelle Erstellung aller zugrunde liegenden Kubernetes-Objekte wie Zertifikate, geheime Schlüssel usw. verantwortlich sind, wenn Sie diese Anmerkung hinzufügen. Weitere Informationen hierzu finden Sie in der Dokumentation zur benutzerdefinierten vSphere 8 U1-ClusterClass.
Anmerkungsschlüssel | Wert |
---|---|
run.tanzu.vmware.com/unmanaged-clusterclass | " " |
ccc
:
apiVersion: cluster.x-k8s.io/v1beta1 kind: ClusterClass metadata: annotations: run.tanzu.vmware.com/resolve-tkr: "" run.tanzu.vmware.com/unmanaged-clusterclass: "" name: ccc namespace: ccc-ns spec: ...