Einstieg in die Orchestrierung mit Kubernetes

Container zu Pods zusammenfassen

| Autor / Redakteur: Thomas Joos / Ulrike Ostler

Thomas Joos gibt einige Hinweise, wie sich mit "Kubernetes" starten lässt.
Thomas Joos gibt einige Hinweise, wie sich mit "Kubernetes" starten lässt. (Bild: gemeinfrei; Joe66 / Pixabay / Kubernetes / CC0)

Wie beginnt man/frau eigentlich mit „Kubernetes“? In Kubernetes werden Container zu Pods zusammengefasst. Container in einem Pod teilen sich die Ressourcen eines Container-Hosts. Ein Container-Host kann auch virtuell betrieben werden. Bei den Container-Hosts handelt es sich um die Cluster-Knoten (Nodes) im Kubernetes-Cluster.

Die übergeordnete Einheit von Kubernetes ist ein Kubernetes-Cluster. Dieser besteht aus mehreren Container-Hosts, also Cluster-Knoten (Nodes). Auf den Nodes werden die einzelnen Pods positioniert. In diesen sind die Container enthalten, die wiederum die Dienste zur Verfügung stellen, die im Netzwerk durch die Anwender verwendet werden.

Die kleinste Einheit, die Entwickler oder Administratoren in einem Kuberntes-Cluster erstellen sind also zunächst Pods. Innerhalb der Pods können verschiedene Container gestartet werden. Kubernetes kann entweder im lokalen Netzwerk betrieben werden, oder in der Cloud. Nachdem die Umgebung installiert und eingerichtet ist (getting started), kann die Umgebung dazu genutzt werden Pods und Container zu erstellen.

Kubernetes in einer VM testen

Um Kuberntes zu testen, kann auch ein virtueller Server verwendet werden. In diesem virtuellen Server wird dann wiederum mit „Minikube“ der Kubernetes-Cluster erstelle. Als Grundlage dafür können entweder „Virtualbox“ oder „VMware Fusion“ verwendet werden, wenn „macos X“ im Einsatz ist. Für Linux steht neben Virtualbox noch „KVM“ zur Verfügung. Auf Windows-Rechnern lässt sich entweder Virtualbox oder Hyper-V verwenden. Die Installation von Minikube wird in der Dokumentation von Kubernetes beschrieben.

Cluster mit Minikube erstellen

Cluster lassen sich wiederum mit Minikube erstellen. Dazu wird nach der Installation von Minicube () zunächst die Version von Minicube angezeigt und dann das Tool gestartet:

minikube version

minikube start

Nach der Erstellung können Informationen um Cluster wiederum mit „kubectl“ angezeigt werden:

kubectl cluster-info

Die Knoten im Cluster werden wiederum mit „kubectl get nodes“ angezeigt. Um einen Cluster anzuhalten wird „minikube stop“ verwendet. Löschen lässt sich ein Cluster mit „minikube delete“. Generell lässt sich Minikube auch mit einer Web-Oberfläche verwalten. Diese wird mit „minikube dashboard“ gestartet.

Erste Schritte mit Kubernetes

Zunächst sollte mit dem Tool „kubectl“ getestet werden, ob die Umgebung überhaupt funktioniert und welche Kubernetes-Version eingesetzt wird. Das erfolgt zum Beispiel mit dem Befehl „kubectl version“.

Kubernetes wird zum Beispiel mit "kubectl "verwaltet.
Kubernetes wird zum Beispiel mit "kubectl "verwaltet. (Bild: Thomas Joos)

Die Knoten im Cluster werden wiederum mit „kubectl get nodes“ angezeigt. Bei Kubernetes werden Workloads zunächst über eine Kombination von Pods, Deployments und Services (Micro-Services) bereitgestellt. Ein Pod ist eine Gruppe von Containern, auf denen die entsprechende Anwendung oder der Workload bereitgestellt wird. Ein Deployment kann aus Replikaten auf verschiedenen Cluster-Knoten bestehen.

Deployments ermöglichen in Kubernetes, dass Pods auf Knoten verteilt werden. Dadurch erreichen Unternehmen eine Hochverfügbarkeit der Container-Umgebung. Load-Balanced Services erkennen nicht funktionierende Pods und entfernen sie. Mehrere Master-Knoten und Worker-Knoten können für Anfragen von kubectl und Clients lastenausgeglichen werden.

Um ein Deployment zu erstellen, wird zum Beispiel folgender Befehl verwendet. Bei diesem Befehl wird auch gleich ein passender Port freigeschaltet:

kubectl run kubernetes-bootcamp --image=docker.io/jocatalin/kubernetes-bootcamp:v1 --port=8080

Die vorhandenen Deployments lassen sich wiederum mit „kubectl get deployments“ abfragen.

Pods mit Containern erstellen

Ein Beispielskript von Kubernetes ist auf der Hilfeseite von Kubernetes zu sehen. Das Beispiel zeigt die Erstellung eines Pods mit zwei Containern an. Ein Container wird auf Basis von „NGINX“ betrieben, stellt also einen Web-Server bereit, auf dem anderen wird „Debian“ im Container gestartet.

Der Datenaustausch zwischen den beiden Containern im Pod erfolgt über ein Volume, das auf beiden zur Verfügung steht. Die Konfiguration dieser Umgebung wird in einer YAML-Datei gespeichert. Mit dem Tool „kubectl“ wird die Umgebung so erstellt, wie in der YAML-Datei festgelegt. Der Befehl dazu lautet zum Beispiel:

kubectl create -f https://k8s.io/docs/tasks/access-application-cluster/two-container-pod.yaml

In einem Pod können einzelne Container jederzeit beendet werden, während andere Container weiterlaufen. Auch der Datenaustausch zwischen solchen Containern ist möglich. Wie die Vorgehenswese getestet wird, lässt sich auf der Kubernetes-Hilfe-Seite sehen.

Pods und Container im Netzwerk

Deployments, Pods und Container kommunizieren untereinander innerhalb eines privaten, aber isolierten Netzwerks. Innerhalb eines Clusters funktioniert dadurch relativ leicht eine Kommunikation zwischen verschiedenen Pods und Containern. Allerdings ist standardmäßig keine Kommunikation in das Netzwerk außerhalb des Kubernetes-Clusters möglich. Mit „kubectl“ ist es möglich, die Kommunikation innerhalb des Clusters zu steuern. Dazu werden Proxys benutzt. Erstellt werden diese mit:

kubectl proxy

Durch die Erstellung eines Proxys kann der aktuelle Host mit seinen Pods auch mit dem Rest des Clusters kommunizieren.

Pods im Cluster verwalten

Um alle Pods in allen Namensräumen auf einem Cluster anzuzeigen wird ebenfalls kubectl verwendet:

kubectl get pods --all-namespaces

Mit „kubectl get pods“ werden die Pods ohne Berücksichtigung der Namensräume angezeigt. Der Befehl „kubectl get pods - wide“ zeigt Details zu Pods an, zum Beispiel wie diese mit dem Netzwerk verbunden sind.

Um auch die laufenden Container anzuzeigen, können die Pods gelesen werden. Die Vorgehensweise ist auf der Seite „List All Container Images Running in a Cluster“ zu sehen.

*Thomas Joos ist freier Autor und schreibt IT-Bücher sowie -Artikel. Auf DataCenter-Insider füllt er seinen eigenen Blog mit Tipps und Tricks für Administratoren:Toms Admin-Blog

Kommentare werden geladen....

Kommentar zu diesem Artikel

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 44985907 / Container & Virtualisierung)