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.
Installation der Photon OS VM
Zuächst müssen wir das neueste ISO Image des Photon OS von der VMware GitHub Seite beziehen (Full ISO arm64) und auf den ESXi on Arm Datenspeicher hochladen.
Neue VM bereitstellen.
Wir wählen die neueste VM Hardware Version (ESXi 7.0), die Linux Familie und Photon OS.
Datenspeicher für die neue VM auswählen.
Da wir insgesamt nur weniger als 8 GB RAM zur Verfügung haben, müssen wir den empfohlenen VM Arbeitsspeicher auf 1024 MB reduzieren. Am Ende müssen schließlich drei VMs betrieben werden. Wir hängen das Photon OS ISO ins virtuelle CD-ROM ein.
Den Assistenten abschließen und die VM booten.
Öffnet eine Konsole zur VM, bestätigt das Lizenzabkommen und folgt dem Setup-Assistenten. Wählt automatische Partitionierung.
Wir verwenden die minimale Bereitstellung.
Je nach der eigenen Netzwerk-Infrastruktur kann hier eine statische IP Adresse vergeben werden, oder automatische Vergabe über DHCP. In meinem Beispiel wähle ich die statische Vergabe.
Bei Auswahl der manuellen Konfiguration, müssen Netzwerkparameter im folgenden Schritt eingegeben werden.
Vergebt einen Hostnamen und sorgt dafür, dass dieser im DNS aufgelöst werden kann.
Es muss ein neues Passwort für root gesetzt werden.
Das Passwort bestätigen und die Installation starten.
Am Ende des Setups eine beliebige Taste drücken und die VM neu starten.
Der Reboot kann 1-2 Minuten dauern.
Jetzt haben wir ein Photon OS in einer VM. Bevor wir diese Basisinstallation klonen, sollten wir noch ein paar Dinge anpassen. Wir loggen uns als root auf der Konsole ein. Beachtet, dass die Konsole ein en-US Tastaturlayout hat. Eine Verbindung über SSH ist jetzt noch nicht möglich. Aus Sicherheitsgründen wird dem User root der SSH-Login verweigert, aber wir werden das jetzt ändern.