Suchen

Viel Handarbeit: Windows Server 2019 und Kubernetes Container-Orchestrierung mit Windows und Linux

| Autor / Redakteur: Thomas Joos / Ulrike Ostler

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.

Firma zum Thema

Wie integrieren sich „Windows Server 2019“ und Kubernetes? Thomas Joos gibt Tipps.
Wie integrieren sich „Windows Server 2019“ und Kubernetes? Thomas Joos gibt Tipps.
(Bild: und Microsoft / CC BY / CC BY NaN)

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).

Abbildung 1: Das Überprüfen eines Kubernetes-Cluster.
Abbildung 1: Das Überprüfen eines Kubernetes-Cluster.
(Bild: Thomas Joos)

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.

Abbildung 2: Abfragen der Pods in den Namespaces eines Kubernetes-Cluster.
Abbildung 2: Abfragen der Pods in den Namespaces eines Kubernetes-Cluster.
(Bild: Thomas Joos)

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“.

Abbildung 3: Vorbereiten eines Kubernetes-Cluster für „Windows Server 2019“
Abbildung 3: Vorbereiten eines Kubernetes-Cluster für „Windows Server 2019“
(Bild: Thomas Joos)

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 -ForceInstall-Package -Name docker -ProviderName DockerMsftProviderÜberprüfen lässt sich die Installation mit:Get-Package -Name Docker -ProviderName DockerMsftProvider

Abbildung 4: Installieren von Docker in Windows Server 2019
Abbildung 4: Installieren von Docker in Windows Server 2019
(Bild: Thomas Joos)

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]::Tls12Start-BitsTransfer https://github.com/kubernetes-sigs/sig-windows-tools/archive/master.ziptar -xvf .\master.zip --strip-components 3 sig-windows-tools-master/kubeadm/v1.15.0/*Remove-Item .\master.zip

Abbildung 5. Windows Server 2019 für Kubernetes vorbereiten
Abbildung 5. Windows Server 2019 für Kubernetes vorbereiten
(Bild: Thomas Joos)

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 Kubernetes-Tools werden vor der Integration eines Windows-Servers benötigt
Die Kubernetes-Tools werden vor der Integration eines Windows-Servers benötigt
(Bild: Thomas Joos)

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.

Abbildung 7: So lässt sich die Verbindung zwischen Windows Server 2019 und Kubernetes testen.
Abbildung 7: So lässt sich die Verbindung zwischen Windows Server 2019 und Kubernetes testen.
(Bild: Thomas Joos)

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.

Bildergalerie

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]::Tls12wget 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:46534522)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist