Dmitry Nikolaev - stock.adobe.co
Windows-Server mit Kubernetes an Linux-Cluster anbinden
Container-Hosts mit Windows Server 2019 können an ein mit Kubernetes verwaltetes Linux-Cluster angebunden und zentral verwaltet werden. In diesem Artikel zeigen wir, wie das geht.
Wenn ein Kubernetes-Cluster mit Linux-Container-Hosts im Einsatz ist, lassen sich jederzeit weitere Knoten, auch Windows-Knoten hinzufügen. Der Vorteil dabei liegt auf der Hand: Wer im Netzwerk zwar auf Kubernetes und Linux setzt, aber für bestimmte Funktionen auch Windows Server 2019 zum Einsatz bringen will, kann die Windows-Server mit Docker Enterprise Edition an Kubernetes anbinden. Die Verwaltung erfolgt auch hier mit der Weboberfläche von Kubernetes oder mit Tools wie kubectl.
Für die Integration eines Windows-Servers an Kubernetes ist einiges an Wissen im Bereich Kubernetes und Linux notwendig, sowie zur Verwaltung von Windows.
Kubernetes-Cluster für Windows Server 2019 vorbereiten
Damit ein Server mit Windows Server 2019 in einen Kubernetes-Cluster aufgenommen werden kann, müssen Sie den Cluster für Windows vorbereiten. Die Netzwerkanbindung in einem Kubernetes-Cluster muss dafür kompatibel mit Windows sein. Hier wird häufig auf Flannel gesetzt. Die Integration in Linux starten Sie in diesem Fall mit:
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Microsoft beschreibt die Vorgehensweise auf der Seite Network Solutions.
Natürlich muss auch der Windows-Server für den Betrieb im Kubernetes-Cluster vorbereitet werden. Wichtig ist hier zunächst, dass Docker installiert und einsatzbereit ist. Das setzt den Betrieb eines Container-Hosts mit Windows Server 2019 voraus. Vor der Integration des Servers in das Kubernetes-Cluster benötigen Sie ein Image auf dem Container-Host, das mit Kubernetes die notwendigen Infrastruktur-Pods erstellt. Das Image markieren Sie am besten als latest. Die Vorgehensweise dazu ist:
docker pull mcr.microsoft.com/windows/nanoserver:1809
docker tag mcr.microsoft.com/windows/nanoserver:1809 microsoft/nanoserver:latest
Vor der Integration können Sie den Container starten, um zu überprüfen, ob er für Kubernetes einsatzbereit ist:
docker run microsoft/nanoserver:latest
Kubernetes in Windows integrieren
Vor der Integration eines Windows-Servers in Kubernetes wird auf dem Server zunächst Kubernetes installiert und eingerichtet. So können Sie zum Beispiel vor der Integration überprüfen, ob die Kubernetes-Tools auf dem Server mit dem Kubernetes-Cluster kommunizieren können.
Auf dem Server legen Sie ein Verzeichnis an, in das alle Tools kopiert werden. Microsoft empfiehlt das Verzeichnis k auf dem Laufwerk C. Verwenden Sie dieses Verzeichnis, können Sie vorgefertigte Skripte von Microsoft nutzen, um den Windows-Server an das Cluster anzubinden.
In das Verzeichnis laden Sie die aktuellsten Systemdateien von Kubernetes. Die Dateien werden direkt in das Verzeichnis C:\k extrahiert.
Sie sollten dann die Konfigurationsdatei des Kubernetes-Clusters auf den Windows-Server kopieren. Die Systemdateien von Kubernetes, zum Beispiel kubectl nutzen die fertige Konfigurationsdatei des Clusters, um eine Verbindung aufzubauen. In diesem Fall kann es notwendig sein, dass Sie die Option --kubeconfig=admin.conf anhängen, damit die Befehle auch eine Verbindung zum Cluster aufbauen können.
Windows in Kubernetes einbinden
Kann der Windows-Knoten sich über Kubernetes verbinden, können Sie den Server als neuen Cluster-Knoten an Kubernetes anbinden. Microsoft stellt dazu das Skript start.ps1 zur Verfügung, das Sie ebenfalls in das Kubernetes-Verzeichnis auf dem Windows-Server extrahieren. Das Skript wird anschließend mit der folgenden Syntax gestartet:
\start.ps1 -ManagementIP <Windows Node IP> -NetworkMode <network mode> -ClusterCIDR <Cluster CIDR> -ServiceCIDR <Service CIDR> -KubeDnsServiceIP <Kube-dns Service IP> -LogDir <Log directory>
Die Daten sollten aus dem Kubernetes-Cluster bereits bekannt sein. Wenn das Skript nicht erfolgreich läuft, können Sie es erneut starten.
In den meisten Fällen scheitert die Integration an einer fehlerhaften Netzwerkanbindung. Die Kubernetes-Entwickler stellen eine Dokumentation zur Verfügung, die dabei hilft, Windows-Server an Kubernetes-Cluster anzubinden. Die Informationen sind auf der Seite Intro to Windows support in Kubernetes zusammengestellt
Docker Swarm nutzen
Alternativ oder parallel zu Kubernetes können Sie Container-Hosts auf Basis von Windows Server 2019 mit Docker Swarm zu einem Cluster zusammenfassen. In einer solchen Konfiguration können Sie Container zwischen Container-Hosts mit Windows Server 2019 verschieben.
Zum Erstellen von Docker Swarms verwenden Sie das Tool docker in Windows Server 2019. Um die Kommunikation zu gewährleisten, müssen Sie einige Firewall-Regeln anlegen. Die Ports 2377, 7946, 4789 müssen für UDP und TCP zwischen den Container-Hosts freigeschaltet werden. Um auf einem Windows-Server einen Docker Swarm zu erstellen, verwenden Sie folgende Befehle:
docker swarm join --token <WORKERJOINTOKEN> <MANAGERIPADDRESS>
Beispiel:
docker swarm join --token SWMTKN-1-35yiqpp8hm5bypthomo0u6ip7h5mlxprneuvzeqy5c6mm5rke5-8dsgejlbdnte9iiqd4kiehkx8 192.168.178.244:2377
docker swarm init --advertise-addr=<IP-Adresse des Hosts> --listen-addr <IP-Adresse des Hosts>:2377
Beispiel:
docker swarm init --advertise-addr=192.168.178.244 --listen-addr 192.168.178.244:2377
Fazit
Generell stellt die Integration von Windows Server 2019 oder Windows Server 1809 und höher in Kubernetes kein Problem dar. Allerdings stellen weder Microsoft noch die Kubernetes-Entwickler Assistenten oder grafische Oberflächen zur Verfügung.
Die Anbindung erfolgt mit gängigen Kubernetes-Tools und setzt einiges an Vorwissen über Kubernetes voraus. Auch die Netzwerkkonfiguration im Kubernetes-Cluster ist wichtig, da hier besonders häufig Probleme bei der Anbindung auftreten.