ESXi on Arm als mini Kubernetes Cluster

ESXi auf Intel x86 Architektur ist im Laufe der letzten Dekade zur Selbstverständlichkeit geworden. In den letzten 1-2 Jahren konnten wir auf der VMworld eine ESXi Version sehen, die auf Arm Architektur läuft. Damit ist sie beispielsweise lauffähig auf Smart NICs oder Raspberry Pi. In der Zwischenzeit haben VMware Entwickler ein Fling Projekt mit dem Namen ESXi on Arm veröffentlicht. Dies ist natürlich nur ein Testprojekt fürs Labor und es gibt dafür keinen offizielen Support für den produktiven Betrieb. Dennoch ist es eine gute Gelegenheit mit minimaler Hardware einen ESXi Host zu betreiben. Ich werde in diesem Blogpost nicht das Setup des ESXi erklären – dafür gibt es eine gute Dokumentation auf der Fling-Projektseite. (PDF). Hier geht es um die Möglichkeiten dieser Plattform und was man damit machen kann.

An dieser Stelle möchte ich besonders die Arbeit von William Lam hervorheben, der auf seinem Blog viel Hintergrundinfo, Tipp & Tricks und Hacks rund um das Thema PhotonOS und Raspberry Pi bereitstellt.

Wir haben jetzt einen ESXi auf einem Raspi. Was können wir damit nun anfangen?

Bevor wir einsteigen, noch ein paar kurze Anmerkungen:

Mit ESXi on Arm kann man nicht beliebige VMs betreiben. Wie der Projektname es schon andeutet, handelt es sich hier um eine Arm Architektur. Folglich kann man darauf auch nur Betriebsysteme virtualisieren, die für Arm gemacht sind. Damit sind Windows Gastsysteme schon einmal ausgeschlossen (mit Ausnahme von Windows 10 on Arm). Ebenso die meisten Linux Distributionen. Zum Glück gibt es aber einige Linux-Varianten für Arm-Architektur, wie zum Beispiel Ubuntu Server on Arm, oder Photon OS. Das Anwendungsbeispiel in diesem Blogpost basiert auf dem aktuellsten Photon OS (Version 4 beta). Als Host Hardware verwende ich den “großen” Raspi4 mit 8 GB RAM. Man braucht nicht viel Phantasie, um zu erkennen, dass 8 GB RAM für Host und Gastsysteme recht knapp sind. Wir müssen also diese Ressource sparsam einsetzen.

Das Ziel ist, drei Kubernetes-Knoten als VM auf dem ESXi on Arm auf einem Raspberry Pi mit 8 GB RAM und 4 CPU Kernen auszurollen. Klingt ambitioniert, ist aber möglich dank eines schlanken K3s Kubernetes auf Arm.

Eingesetzte Hardware

  • Raspberry Pi 4, Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
  • Kühlblech für Raspberry Pi4 (ohne dieses wird der Raspi sehr heiss)
  • SD-Karte (nur für UEFI BIOS)
  • USB Stick als ESXi Bootmedium
  • USB 3 Hub mit externer Stomversorgung (Der USB Port des Raspi liefert nicht zuverlässig und ausreichend viel Strom für den Betrieb einer NVMe Karte)
  • USB 3 NVMe M.2 Gehäuse
  • Samsung NVMe EvoPlus 250 GB M.2

Verwendung des ESXi on Arm im Standalone-Modus

Obwohl mein ESXi on Arm in ein vCenter 7 integriert ist, werde ich keine der vCenter Eigenschaften für diese Demo verwenden (mit allen Einschränkungen und Umständlichkeiten).

Wir benötigen drei VMs für die drei Kubernetes Knoten. Es ist also eine gute Idee, eine VM mit allem was wir benötigen (außer K3s) zu bauen und diese dann zu klonen. Wenn Ihr jetzt denkt, dass das Klonen nur ein Mausklick in der UI sei, dann muss ich Euch leider enttäuschen. 😉 Ich werde auf diesen Punkt später zurückkommen. Bauen wir zunächst unsere erste Photon OS VM.

„ESXi on Arm als mini Kubernetes Cluster“ weiterlesen

NSX-T Update Prozedur

Am 30. Oktober 2020 veröffentlichte VMware NSX-T Version 3.1 (Release Notes).

Upgrade von Version 3.0

Ich zeige hier den Ablauf des Upgrades von Version 3.0.x auf Version 3.1. Im gezeigten Bespiel wird eine Version 3.0.2 aktualisiert, jedoch ist der Ablauf für alle Versionen ab 3.0 gleich.

Voraussetzungen

Wir benötigen ein Upgrade Bundle (MUB) zur neuen Version aus dem Download Bereich von VMware.

Upgrade

Zunächst öffnen wir den NSX-T Manager und gehen über Lifecycle Management zu Upgrade. Dort sieht man wie im Bild unten dargestellt die aktuelle Version und startet den Prozess mit “Upgrade NSX”.

„NSX-T Update Prozedur“ weiterlesen

Clone Template to Library failed

VMware vSphere 7 hat die Bearbeitung und Organisation von Templates stark vereinfacht, indem man diese in Content Libraries ablegen kann. Von dort läßt sich das Template ableiten oder aktualisieren.

Hat man noch herkömmliche Templates in vCenter, so kann man auch diese recht einfach in eine Content Library übertragen.

Das Template soll als neues Teplate in die Library übertragen werden.

Failed to export OVF package

Nach Klick auf OK wird der Fehler ausgegeben: “Failed to export OVF package”. In der Regel kommt eine zweite Meldung die schnell zur Ursache des Problems führt.

File ds:///vmfs/volumes/vsan:527a6824b9bfa7ad-36f48a2cd78b9685/1f40b55e-f88d-e569-9d66-002590bb2ed0/b02cb65d-e81b-49cb-a654-ef26ea21b2f7/ubuntu-20.04-live-server-amd64_5696e54c-c62a-4fa8-b007-0192a28ff53d.iso was not found

Interessant sind nur die letzten vier Worte: “iso was not found“. Die VM hatte ganz offensichtlich noch ein iso eingebunden, bevor sie zum Template konvertiert wurde. Das lässt sich schnell lösen, indem man das Template in eine VM verwandelt und in den Einstellungen das CD-ROM von Datastore ISO auf z.B. Client-Device umstellt. Danach die VM wieder zum Template konvertieren und den Vorgang erneut versuchen. Ohne eingebundenes ISO funktionier der Transfer fehlerfrei.

VCSA update auf der Shell

Aktualisierungen der vCenter Server Appliance (VCSA) gelingen in der Regel problemlos aus der VAMI Oberfläche. In seltenen Fällen kann es hier jedoch zu Problemen beim Update kommen. Kürzlich versuchte ich im Lab, die VCSA von Version 7.0.0 (16386335) auf 7.0.0 U1 (16858589) zu aktualisieren. Das Update wurde über ein lokal eingehängtes ISO gestartet. Es wurde zwar erkannt, dass ein Update verfügbar ist, jedoch scheiterte das Update gleich nach dem Start. Das im Link oben referenzierte Problem traf in diesem Fall jedoch nicht zu.

In solchen Fällen lohnt sich der Versuch über die VCSA Shell. Dazu muss diese zunächst in VAMI erlaubt werden, anschließend kann die Verbindung über SSH Client aufgebaut werden.

Wichtig ist hierbei, daß wir uns NICHT auf der BASH shell befinden. Falls dies so ist, können wir mit folgendem Befehl zurückkehren.

appliancesh

Im ersten Schritt werden die Update Pakete bereitgestellt. Das ISO sollte zu diesem Zeitpunkt eingebunden sein.

software-packages stage --iso --acceptEulas

Der Prozess prüft einige Parameter, wie Quell- und Zielversion und ob das ISO eingebunden ist.

software-packages list --staged

Mit dem oben dargestellten Befehl sehen wir Informationen zum bereitgestellten Paket.

Wenn alles stimmt, kann der Updateprozess gestartet werden.

software-packages install --staged

Der Vorgang lief ohne Probleme bis zum Ende durch und aktualisierte die Appliance auf Version 7.0 U1.