Viel Handarbeit: Windows Server 2019 und Kubernetes Container-Orchestrierung mit Windows und Linux
Unternehmen, die sich mit Containern beschäftigen, können mit „Windows Server 2019“ auch eine Anbindung von Container-Hosts an „Kubernetes“ durchführen. Der Autor Thomas Joos zeigt die entsprechende Vorgehensweise.

Um Windows Server 2019 in Kubernetes anzubinden, muss zunächst ein Kubernetes-Cluster bereitgestellt werden. Der Aufbau eines solchen Clusters ist beispielsweise in einem Youtube-Video (s.u.) zu sehen.
Auch Microsoft zeigt in seiner Dokumentation den Aufbau eines Kubernetes-Clusters, der kompatibel zu Windows Server 2019 ist. Auf der Seite „Creating a Kubernetes Master“ ) wird der Aufbau beschrieben.
Die Überprüfung von Kubernetes und das Einholen von Cluster-Informationen
Bevor ein Kubernetes-Cluster erweitert wird, sollte überprüft werden, ob alle notwendigen Voraussetzungen für die Aufnahme eines Windows-Servers getroffen wurden. Diese Überprüfungen können zum Beispiel mit „kubectl“ durchgeführt werden. Das Tool wird auch dann genutzt, wenn andere Knoten hinzugefügt werden sollen.
Um sich generell Informationen über den Cluster anzuzeigen, wird zum Beispiel „kubectl cluster-info“ verwendet. Der Befehl prüft, ob der Cluster erreichbar ist, auf welche IP-Adresse und welcher Port der Kubernetes-Master auf Anfragen wartet, und ob „KubeDNS“ funktioniert. Auch hier werden die Daten angezeigt (siehe: Abbildung 1).
Mit „kubectl get nodes“ werden wiederum die Knoten im Cluster und die eingesetzte Kubernetes-Version angezeigt. Mit „kubectl get namespaces“ werden die Namespaces angezeigt und auch deren Status. Hierüber ist auch zu sehen, ob die einzelnen Namespaces aktiv sind und funktionieren. Nur dann macht es Sinn, zusätzliche Knoten zum Cluster hinzuzufügen.
Der nächste wichtige Schritt ist die Überprüfung der Pods in allen Namespaces. Dazu wird „kubectl get pods --all-namespaces“ verwendet. Wichtig ist dass er Status der einzelnen Pods im Kubernetes-Cluster auf „Running“ steht (siehe: Abbildung 2).
Kubernetes für Windows Server 2019 vorbereiten
Die einzelnen Befehle, die notwendig sind, um Windows-Knoten mit Windows Server 2019 in einen Kubernetes-Cluster zu integrieren, zeigt Microsoft auf der Seite „Joining Windows Server Nodes to a Cluster“.
Im Wesentlichen werden hier Vorbereitungen für die Netzwerkkonfiguration vorgenommen, und die Trennung von Ressourcen zwischen Windows und Linux. Hier kann sichergestellt werden, dass einzelne Pods nur auf Linux gestartet werden, wenn die Ressourcen nicht kompatibel zu Windows sind.
Vorbereitung von Windows Server 2019 für Kubernetes
Um Windows Server 2019 in einen Kubernetes-Cluster aufzunehmen, müssen auch hier Vorbereitungen getroffen werden. Wichtig ist hier zunächst, dass auf dem Server „Docker“ zur Verfügung steht. Die Installation kann in der Powershell vorgenommen werden:
Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
Install-Package -Name docker -ProviderName DockerMsftProvider
Überprüfen lässt sich die Installation mit:
Get-Package -Name Docker -ProviderName DockerMsftProvider
Mit „docker version“ wird die Version von Docker angezeigt. Damit ein Windows-Server zu einem Kubernetes-Cluster hinzugefügt werden kann, muss der Docker-Dienst gestartet sein. Das kann in der Powershell mit „get-service docker“ überprüft werden. Der Befehl „start-service docker“ startet Docker, falls der Dienst nicht gestartet ist.
Für die Aufnahme von Windows Server 2019 in einen Cluster mit Kubernetes, ist das aktuelle Nano-Container-Image und das Core-Server-Image notwendig. Der Download erfolgt mit.
Docker pull mcr.microsoft.com/windows/nanoserver:1809
Die verwendete Version, in diesem Beispiel 1809 muss in Docker als „latest“ definiert sein. Das erfolgt mit dem Befehl:
Docker tag mcr.microsoft.com/windows/nanoserver:1809 microsoft/nanoserver:latest
Das ist notwendig, damit die Aufnahme zum Kubernetes-Cluster erfolgen kann. Für die Integration eines Windows-Server zu einem Kubernetes-Cluster wird bei den Kubernetes-Entwickler noch das dazu notwendige Paket heruntergeladen und extrahiert:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Start-BitsTransfer https://github.com/kubernetes-sigs/sig-windows-tools/archive/master.zip
tar -xvf .\master.zip --strip-components 3 sig-windows-tools-master/kubeadm/v1.15.0/*
Remove-Item .\master.zip
Das Installieren von Kubernetes in Windows Server 2019 und Testen der Verbindung mit dem Cluster
Die jeweilige, aktuelle Version von Kubernetes ist ebenfalls bei Kubernetes verfügbar. Hierüber werden die entsprechenden Daten in Windows installiert. Durch das Kopieren der Konfigurationsdatei des Kubernetes-Clusters von Linux zu Windows, können die Kubernetes-Tools in Windows, zum Beispiel „kubectl“ auf den Cluster zugreifen.
Die Verbindung zum Cluster wird durch die Konfigurationsdatei gesteuert. Die ausführliche Vorgehensweise wird auf der Seite „Joining Windows Server Nodes to a Cluster“ beschrieben.
Die Konfig-Datei kann bei den Kubernetes-Befehlen gleich mitgegeben werden:
Kubectl get-pods --all-namespaces --kubeconfig=admin.conf
Dazu muss sich die Datei im gleichen Verzeichnis befinden, wie die Kubernetes-Tools. Wer die Konfigurationsdatei des Kubernetes-Clusters in die Systemvariablen des Windows-Servers integriert, muss die Konfigurationsdatei nicht angeben. Das erfolgt zum Beispiel in der Powershell mit:
[Environment]::SetEnvironmentVariable("KUBECONFIG", "C:kubernetes\admin.conf", [EnvironmentVariableTarget]::User)
Alle Befehle zur Überprüfung von Kubernetes, die zu Beginn des Textes stehen, lassen sich dann auch auf dem Windows-Server ausführen. Hier ist es wichtig, dass hier keine Fehlermeldung erscheint.
Die Konfigurationsdatei kann in Linux und Windows mit „kubectl“ ausgelesen werden:
Kubectl config view --kubeconfig=admin.conf
Hier ist es natürlich wichtig, dass die Konfigurationsdatei entweder im gleichen Verzeichnis gespeichert ist, wie kubectl, oder dass die entsprechende Umgebungsvariable gespeichert wurde.
Um Windows-Server an Kubernetes anzubinden, bietet Microsoft ein Skript an, mit dem die Verbindung durchgeführt werden kann. Das Skript kann über die Powershell heruntergeladen werden:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
wget https://raw.githubusercontent.com/Microsoft/SDN/master/Kubernetes/flannel/start.ps1 -o c:\k\start.ps1
Danach wird das Skript gestartet, mit den Daten zur Verbindung mit Kubernetes.
* Der Autor Thomas Joos schreibt Artikel und Fachbücher. Auf DataCenter-Insider füllt er seinen eigene Blog: „Toms Admin-Blog“
(ID:46543634)