Dies ist eine kurze Anleitung zur Aktualisierung des Tanzu Workload Managements im vSphere Cluster.
Kubernetes Release und Patch Zyklen
Kubernetes-Versionen werden in Anlehnung an die Semantic Versioning-Terminologie als x.y.z angegeben, wobei x die Hauptversion, y die Minor-Version und z die Patch-Version ist. So bezeichnet beispielsweise v1.22.6 eine Minor-Version 22 mit Patchlevel 6. Minor Versions werden ungefähr alle 3-4 Monate veröffentlicht. Dazwischen gibt es mehrere Patches innerhalb der Minor-Version.
Das Kubernetes-Projekt pflegt Release-Branches für die letzten drei kleineren Versionen (1.24, 1.23, 1.22). Seit Kubernetes 1.19 erhalten neuere Versionen etwa ein Jahr lang Patch-Support. Es ist also durchaus empfehlenswert, die Kubernetes Versionen in Tanzu auf aktuellem Stand zu halten.
Schritt 1 – vCenter aktualisieren
Dieser Schritt ist nicht zwingend erforderlich, aber empfohlen. Denn meist kommen Tanzu Updates einher mit einer neuen vCenter Version. Dies ist leicht erkennbar im vSphere-Client.
K3s ist eine schlanke, hochverfügbare Open-Source-Kubernetes-Cluster-Plattform, die für eine einfache und ressourcenschonende Installation entwickelt wurde. K3s wird in einem Paket von weniger als 60 MB geliefert. Das Paket ist für ARM-Plattformen optimiert und kann daher auch auf Hardware wie einem Raspberry Pi, oder als Gast-VM auf ESXi-on-ARM betrieben werden.
Informationen sammeln
K3s ist eine Cluster-Lösung. Daher ist die Reihenfolge, in der die Knoten aktualisiert werden, wichtig. Das Update beginnt auf dem Masterknoten. Also müssen wir zunächst herausfinden, welcher Knoten diese Rolle hat. Am einfachsten geht dies mit einem kubectl Kommando:
kubectl get node
NAME STATUS ROLES AGE VERSION
k3node1.lab.local Ready master 2y43d v1.19.3+k3s3
k3node2.lab.local Ready none 2y42d v1.19.3+k3s3
k3node3.lab.local Ready none 2y42d v1.19.3+k3s3
Wir sehen in der Ausgabe oben meine drei K3s-Knoten mit FQDN, Status, Rolle, Alter und Version. Demzufolge hat hier k3node1 die Masterrolle.
Alternativ kann man den Befehl auch im ausführlichen Modus ausführen:
VMware hat einen Patch Update 3e für vCenter bereitgestellt. Dies ist ein Wartungsupdate und bringt in erster Linie Updates für vSphere mit Tanzu. Es gibt dazu eigene Release Notes für vSphere with Tanzu.
Neue Funktionen
Unterstützung von Network Security Policies für VMs, die über den VM-Operator-Service bereitgestellt werden – Sicherheitsrichtlinien auf NSX-T können über Security Gruppen auf der Grundlage von Tags erstellt werden. Es ist jetzt möglich, NSX-T-basierte Sicherheitsrichtlinien zu erstellen und sie auf VMs anzuwenden, die über VM-Operator auf der Grundlage von NSX-T-Tags bereitgestellt werden.
Unterstützung für Kubernetes 1.22 im Supervisor Cluster – In dieser Version wird die Unterstützung für Kubernetes 1.22 hinzugefügt und die Unterstützung für Kubernetes 1.19 eingestellt. Die unterstützten Versionen von Kubernetes in dieser Version sind 1.22, 1.21 und 1.20. Supervisor-Cluster, die auf Kubernetes Version 1.19 laufen, werden automatisch auf Version 1.20 aktualisiert, um sicherzustellen, dass alle Ihre Supervisor-Cluster auf den unterstützten Kubernetes-Versionen laufen.
Zur Beachtung beim Update
Wenn das vCenter von einer Version vor v7.0 U3c aktualisiert wird und im Supervisor Cluster eine Kubernetes Version 1.19 läuft, gehen die tkg-controller-manager-Pods in einen CrashLoopBackOff-Zustand über, wodurch die Guest-Cluster nicht mehr verwaltbar sind. Ein Workaround hierfür ist in KB 88443 beschrieben.
Test K8s Version
Zur Sicherheit sollte vor dem Update die Kubernetes Version in der Supervisor Control Plane überprüft werden.
Menu > Workload Management > Subervisor Clusters
Im Bild oben ist die Version der Supervisor Control Plane bereits auf Version v1.21.
Update
Vor dem Update sollte unbedingt eine Sicherung der vCenter Konfiguration erstellt werden! Optional ist auch ein Snapshot hilfreich, da hiermit im Falle eines Scheiterns schnell der Ausgangzustand wiederhergestellt werden kann.
Das Update kann entweder im VAMI oder auf der Shell ausgeführt werden. Die Abbildung unten gibt einen Überblick der neuen Pakete.
Nach dem Update steht eine neue Kubernetes Version für die Supervisor Control Plane zur Verfügung.
Um einen Einblick in VMware Tanzu und Kunernetes zu erhalten benötigt man keinen Enterprise-Cluster. Dank der Tanzu Community Edition (TCE) kann das jetzt jeder selbst ausprobieren – kostenlos. Der Funktionsumpfang ist nicht beschränkt im Vergleich zu kommerziellen Tanzu Versionen. Lediglich auf professionellen Support durch VMware muss man bei der TCE verzichten. Dieser wird über Foren, Slack-Gruppen oder Github durch die Community geleistet. Für einen PoC Cluster oder zum Training auf die CKA Prüfung reicht das vollkommen aus.
Die Bereitstellung geht recht schnell und man hat nach einigen Minuten einen funktionsfähigen Tanzu-Cluster.
TCE Architektur-Varianten
Die TCE kann in zwei Varianten entweder als Standalone-Cluster oder als Managed-Cluster bereitgestellt werden.
Standalone Cluster
Eine schnelle und Ressourcen schonende Art der Bereitstellung ohne Management-Cluster. Ideal für kleine Tests und Demos. Der Standalone-Cluster bietet kein Lifecycle Management. Dafür hat er einen kleinen Fussabdruck und kann auch in kleinen Umgebungen genutzt werden.
Quelle: VMware
Managed Cluster
Wie bei kommerziellen Tanzu-Versionen gibt es einen Management-Cluster und 1 bis n Workload-Cluster. Er verfügt über Lifecycle Management und Cluster-API. Somit kann über deklarative Konfigurationsdateien der Kubernetes Cluster definiert werden. Beispielsweise die Anzahl der Knoten im Management Cluster, die Anzahl der Worker-Nodes, die Version des Ubuntu-Images oder der Kubernetes Version. Cluster-API stellt die Einhaltung der Deklaration sicher. Fällt beispielsweise ein Worker Node aus, so wir dieser automatisch ersetzt.
Durch die Verwendung mehrerer Knoten benötigt der Managed-Cluster natürlich auch deutlich mehr Ressorcen.
Quelle: VMware
Ziele für die Bereitstellung
TCE kann entweder lokal auf der Workstation mit Docker, im eigenen Lab/Datacenter auf vSphere, oder in der Cloud auf Azure oder aws bereitgestellt werden.
Ich habe im Lab ein lizensiertes Tanzu mit vSAN und NSX-T integration eingerichtet. Daher würde TCE auf vSphere hier keinen tieferen Sinn ergeben. Cloud Ressourcen auf aws oder Azure kosten Geld. Daher möchte ich die kleinstmögliche und sparsamste Bereitstellung eines Standalone-Clusters mit Docker beschreiben. Dazu verwende ich eine VM auf VMware-Workstation. Alternativ kann auch ein VMware-Player oder eine andere Art Hypervisor genutzt werden.