Archiv der Kategorie: DCI – Toms Admin Blog

Druckspooler in Containern bereitstellen

Druckdienste lassen sich über Container bereitstellen, allerdings funktionieren natürlich nicht alle Bereiche eines Druckers. Es ist nicht möglich Druckertreiber zu installieren. Microsoft arbeitet aber daran die Funktionen zu erweitern. 

Um Container mit Druckfunktionen bereitzustellen, muss auf dem Host Windows Server 2019 oder Windows 10 Pro/Enterprise installiert sein. Als Image muss folgende Version verwendet werden:

mcr.microsoft.com/windows image

Container müssen als Hyper-V-Container bereitgestellt werden:

docker run -it –isolation hyperv mcr.microsoft.com/windows:1809 powershell.exe

Nur dadurch kann in Containern ein vom Host getrennter Prozess bereitgestellt werden. Im Container kann der Spooler mit folgendem Befehl bereitgestellt werden:

Get-Service spooler

Get-Printer zeigt die vorhandenen Drucker an.

 

Fehlerbehebung von Netzwerk-Problemen mit Kubernetes

Wer Windows Server 2019 in einen Kubernetes-Cluster integriert und Probleme bei der Anbindung an das Netzwerk hat, sollte zunächst das PowerShell-Skript „Debug-WindowsNode.ps1“ nutzen.

Das Skript überprüft, ob der Server ordnungsgemäß in den Kubernetes-Cluster integriert wurde.  Das Skript überprüft, ob auf dem Server Windows Server 2019 installiert ist,  das Container-Feature vorhanden ist, und ob die Netzwerkkommunikation generell funktioniert. 

Um die laufenden Prozesse anzuzeigen, kann in der PowerShell mit  ps |findstr „kube“ oder „kube flanneld“ gesucht werden.

Ein weiteres PowerShellSkript ist „ValidateKubernetes.Pester.tests.ps1

Ausführlichere Anleitungen finden sich auf der Seite  Troubleshooting Kubernetes Networking on Windows

Docker Swarm mit Windows Server 2016/2019 in der Praxis

Sobald ein Docker-Schwarm erstellt mit „docker swarm init“ erstellt wurde, lassen sich weitere Knoten zum Cluster hinzufügen. Das funktioniert natürlich auch mit Windows Server 2016 und Windows Server 2019. 

Sobald der Cluster erstellt wurde, lassen sich Worker Nodes hinzufügen. Der Befehl dazu ist:

 docker swarm join –token <WORKERJOINTOKEN> <MANAGERIPADDRESS>

Die entsprechenden Daten und Tokens werden beim Erstellen des Clusters angezeigt. Der Befehl sieht zum Beispiel  folgendermaßen aus:

docker swarm join –token SWMTKN-1-35yiqpp8hm5bypthomo0u6ip7h5mlxprneuvzeqy5c6mm5rke5-8dsgejlbdnte9iiqd4kiehkx8 192.168.178.244:2377

Wichtig ist, dass die entsprechenden Ports freigeschaltet werden, vor allem der Port TCP 2377. Alle Knoten werden mit dem folgenden Befehl angezeigt:

docker node ls

Die Netzwerke im Cluster werden mit dem folgenden Befehl angezeigt:

docker network ls

Die Dienste im Cluster werden  mit diesem Befehl angezeigt:

docker service ls

 

 

 

Docker Swarm mit Windows Server 2019

Der Docker Swarm-Modus fasst mehrere Container-Hosts zu einem Cluster zusammen und ermöglicht eine Container-Orchestrierung mit Bordmitteln, auch ohne den Einsatz von Kubernetes.

Ein Docker-Swarm besteht aus zwei Arten von Container-Hosts: Manage-Knoten (Manager Nodes) und Arbeiter-Knoten (Worker Nodes). Der Aufbau entspricht also im Grunde genommen dem Aufbau eines Clusters mit Kubernetes.  Die Erstellung des Schwarms erfolgt über einen Manager Node im Cluster. Worker Nodes werden durch die Manage Nodes im Docker Swarm orchestriert.  

Für die Verbindung zwischen den Knoten müssen verschiedene Ports in der Firewall geöffnet werden, damit die Knoten miteinander kommunizieren können:

  • TCP 2377 (Cluster Management)
  • TCP und UDP 7946 (Kommunikation zwischen Knoten)
  • UDP 4789 (Netzwerkverkehr, ebenfalls zwischen Knoten)

Um Docker Swarm zu nutzen, muss mindestens Docker 1.13.x eingesetzt werden. Generell lassen sich auch Server mit Windows Server 2016 zu einem Schwarm hinzufügen, besser ist der Einsatz von Windows Server 2019, da hier die Technologien für die Zusammenarbeit von Containern deutlich verbessert wurden.  

Um einen Manager-Knoten mit Windows Server 2019 für den Docker Swarm-Modus zu aktivieren, wird der folgende Befehl verwendet:

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

Danach wird der Schwarm erstellt. Um Worker Nodes oder Manage Nodes hinzuzufügen, werden die Befehle genutzt, die beim Erstellen des Docker Swarm-Modus angezeigt werden. Genutzt wird dazu der Befehl 

docker swarm join

Kubeflow 1.x: Machine Learning mit Kubernetes

Kubeflow ist ein Open Source-Projekt zur schnellen und effektiven Bereitstellung von Containern über Kubernetes. Im Fokus stehen dabei Container in denen Workflows laufen, die für ML oder KI genutzt werden. An dem Projekt arbeiten unter anderem auch Google und Microsoft mit.  Aktuell steht die Version 1.0 zur Verfügung, bei der nahezu alle Komponenten als stabil gelten. 

Kubeflow ist das ML- und KI-Werkzeug für Kubernetes. Die Unterstützer erhoffen sich, dass in Zukunft immer mehr Entwickler, die ML- und KI-Anwendungen programmieren auf Kubeflow setzen. Hier steht auch ein Dashboard zur Verfügung, das dabei hilft einen Überblick zu den Bereitstellungen zu behalten. 

Bestandteil von Kubeflow sind Komponenten wie Jupyter Notebooks, TFJob und PyTorch. Diese Komponenten können unter anderem das Trainieren über verschiedene Container hinweg ermöglichen. Die Bereitstellungen können auch mit „kfctl“ dem CLI von Kubeflow erfolgen. 

Kubernetes-Cluster mit Kubectl steuern

Um sich einen Überblick zum Kubernetes-Cluster zu verschaffen, hilft der Befehl:

kubectl cluster-info

Dadurch werden auch Informationen zu verwendeten IP-Adresse angezeigt und ob der Master funktioniert. Auch wichtige Dienste wie KubeDNS werden durch diesen Befehl angezeigt. 

Um sich die Knoten im Cluster anzuzeigen, wird der folgende Befehl verwendet:

kubectl get nodes

Der Befehl zeigt auch an, ob die Knoten aktiv sind, und wie die Namen der Knoten sind. Auch die eingesetzte Kubernetes-Version wird durch den Befehl angezeigt.

Die Namespaces im Cluster werden mit dem folgenden Befehl angezeigt:

kubectl get namespaces

Um sich alle Pods und den Zustand der Pods im Cluster anzuzeigen, wird der folgende Befehl eingesetzt:

kubectl get pods –all-namespaces

Hier ist zu sehen, ob die Pods auch gestartet sind und fehlerfrei funktionieren. Um sich Protokolle anzeigen zu lassen,  zum Beispiel zu einem Pod wird der folgende Befehl verwendet:

kubectl logs –namespace kube-system kube-flannel-ds-amd64-6cz8v

Für die Anzeige der Protokolle müssen die entsprechenden Bezeichnungen für Namespace und Pod angegeben werden.

 

Container mit Windows Server 2019

Microsoft öffnet sein Windows-Server-System immer mehr für den Betrieb als Container-Host. Dazu gehört neben der Unterstützung von Linux-Containern, auch die Zusammenarbeit mit Kubernetes.

In diesem Zusammenhang wird auch das Windows-Subsystem for Linux (WSL) ständig verbessert. Damit sich lassen sich Linux-Distributionen in Windows-Servern einbinden und damit auch Linux-Container effektiv verwalten.

Windows Server 2019 unterstützt vollständig Docker Enterprise und ermöglicht den Betrieb von Swarm oder Kubernetes im Cluster. Dazu kommt die Unterstützung von OpenShift in Windows Server 2019. Um Kubernetes zu nutzen, ist es nicht notwendig eigene Installationen durchzuführen. Über Azure Kubernetes Service kann Kubernetes auch direkt in Microsoft Azure gebucht werden. 

In diesem Zusammenhang kann zum Beispiel ein Server mit Windows Server 2019 als Worker-Node in einen Kubernetes-Cluster eingebunden werden.  Kubernetes unterstützt seit Version 1.14 auch  Windows-Containern auf Windows-Knoten in einem Kubernetes-Cluster.

Um die Orchestrierung von Windows-Containern in Kubernetes zu ermöglichen, fügen Sie einfach Windows-Knoten in Ihren bestehenden Linux-Cluster ein. Die Planung von Windows-Containern in Pods auf Kubernetes ist so einfach und leicht wie die Planung von Linux-basierten Containern.

Windows Server 2019 und neuer ermöglichen den Betrieb von Kubernetes-Knoten unter Windows (einschließlich Kubelet, Container-Laufzeit und Kube-Proxy) . 

Microsoft schafft MCSE, MCSA und MCSD ab

September 2018 hat Microsoft seinen Schwerpunkt auf rollenbasierte Schulungen und Zertifizierungen angekündigt.  Aktuell gibt es bereits über 30 Zertifizierungen in den Bereichen Azure, Modern Workplace und Business Applications. Das bedeutet aber auch, dass die Zertifizierungen zum Certified Solutions Associate (MCSA), Microsoft Certified Solutions Developer (MCSD) und Microsoft Certified Solutions Expert (MCSE) am 30. Juni 2020 eingestellt werden.

Wer sich aktuell bereits zu diesen Zertifizierungen entschließt, sollte Alternativen ins Auge fassen.  Wer aktuell eine MCSA-, MCSD- oder MCSE-Zertifizierung besitzt, kann zu einer neuen  rollenbasierten Zertifizierung aktualisieren.

Auf der Microsoft Learning Seite sind alle Informationen über die rollenbasierte Zertifizierungen zu sehen.  Hier sind auch Informationen über kostenlose Online-Schulungen zum Selbststudium zu finden, aber auch Links zu Schulungen in diesem Bereich. 

 

Windows- und Linux-Container auf Windows Server 2019 betreiben

Die Verwaltung von Containern auf Windows Server 2019 erfolgt zunächst über die PowerShell. In produktiven Umgebungen wird zum Betrieb und der Verwaltung natürlich auf Container-Verwaltungs-Lösungen wie Kubernetes gesetzt.

Um zu überprüfen, ob Docker auf dem Server installiert und gestartet ist,  kann mit

Get-Service Docker

der Docker-Dienst überprüft werden. Starten lässt sich der Dienst mit

Start-Service Docker

Microsoft stellt auf dem Docker-Hub Images zur Verfügung. Diese sind auf der Seite https://hub.docker.com/u/microsoft/ zu finden. In der PowerShell und Eingabeaufforderung können die Container-Images, die Microsoft auf dem Docker-Hub zur Verfügung stellt, ebenfalls angezeigt werden:

docker search Microsoft

Um einen Container herunterzuladen, wird zum Beispiel der folgende Befehl verwendet:

docker pull mcr.microsoft.com/windows/nanoserver:1903

Um den Container auf Basis eines Images zu starten, wird der folgende Befehl verwendet:

docker run -it mcr.microsoft.com/windows/nanoserver:1903 cmd.exe

Wenn eine Fehlermeldung angezeigt wird, die „no matching manifest for unknown in the manifest list entries“ lautet, stellen Sie sicher, dass docker nicht für das Ausführen von Linux-Containern konfiguriert ist.

Linux-Container in Windows Server 2019 betreiben

Windows-Container stellen auf Windows Server 2019 kein Problem dar. Wer Linux-Container betreiben will, benötigt das „LinuxKit“. Das ist erst ab Windows Server 2016 Build 16278 auf in Windows Server 2019 verfügbar. In Windows Server 2019 kann die Unterstützung von Linux-Containern mit dem folgenden Befehl aktiviert werden:

[Environment]::SetEnvironmentVariable(„LCOW_SUPPORTED“, „1“, „Machine“)

Anschliessend muss der Dienst neu gestartet werden:

Restart-Service docker

Deaktivieren lässt sich die Container-Unterstützung mit:

[Environment]::SetEnvironmentVariable(„LCOW_SUPPORTED“, $null, „Machine“)

Linux-Container auf Windows Server 2019 benötigen Hyper-V. Auf dem Server muss also auch Hyper-V installiert sein. 

Docker Enterprise in Windows Server 2019 nutzen

Der einfachste Weg, um in Windows Server 2019 die Container-Funktion zu installieren besteht darin, dass der Server über eine Internetverbindung verfügt, und über diesen Weg der Download der notwendigen Komponenten bei Docker erfolgt.

Auch Container-Images oder andere Funktionen lassen sich über das Internet, zum Beispiel mit der PowerShell recht einfach auf Windows Server 2019 installieren. Zunächst sollte der Docker-Microsoft PackageManagement Provider aus der PowerShell-Gallery auf dem Server installiert werden:

Install-Module -Name DockerMsftProvider -Repository PSGallery -Force

Danach wird die aktuelle Docker-Engine installiert:

Install-Package -Name docker -ProviderName DockerMsftProvider

Die Installation muss noch bestätigt werden, danach wird Docker Enterprise auf dem Server integriert. Mit der PowerShell kann Docker in Windows Server 2019 auch aktualisiert werden:

Install-Package -Name Docker -ProviderName DockerMsftProvider -Update -Force

Start-Service Docker

Nach der Installation sollte der Server neu gestartet werden:

Restart-Computer -Force

Die erfolgreiche Installation kann ebenfalls in der PowerShell überprüft werden:

Get-Package -Name Docker -ProviderName DockerMsftProvider

Wenn die Installation erfolgreich durchgeführt wurde, steht in der PowerShell und der Eingabeaufforderung auch der Befehl „docker“ zur Verfügung. Mit diesem kann die installierte Version von Docker überprüft werden:

docker –version

In einem weiteren Beitrag beschäftigen wir uns damit, wie Linux- und Windows-Container mit Docker auf Windows Server 2019 betrieben werden können.