iX 2/2017
S. 38
Titel
Clusterverwaltung
Aufmacherbild

Services mit Kubernetes bereitstellen

Ressourcen fischen

Das Standardwerkzeug zur Verwaltung von Docker-Containern in Clustern ist derzeit Kubernetes. Dabei verwaltet es eigentlich gar keine Container, sondern sogenannte Pods. Und auch mit diesen sollte man nicht direkt in Berührung kommen. Kubernetes bietet für Nutzer noch stärker abstrahierte Ressourcen.

Mit welchem System verwaltet man am besten containerisierte Microservices? Die populären Systeme heißen Kubernetes, Mesos, Rancher, und mit dem Swarm Mode hat Docker etwas Ähnliches bereits integriert [1]. Kubernetes ist eine gute Wahl, sollen Container über Hunderte oder gar Tausende Knoten skalieren. So bildet Kubernetes auch den Unterbau von Red Hats OpenShift. Es verwendet eine etwas andere Logik als Docker und bündelt mehrere Anwendungscontainer in sogenannten Pods.

Kubernetes hat eine einfache Architektur. Es gibt mindestens einen Master, auf dem der API-Server, der Scheduler und die Controller laufen. Zustände und Konfigurationen speichert ein etcd-Cluster. Die Container selbst laufen auf den Nodes. Im Gegensatz zu Docker hat Kubernetes ein flaches Netzwerk. Alle Container im Cluster erreichen sich direkt via IP. Bei Docker läuft die Kommunikation gewöhnlich über Network Address Translation (NAT), und einzelne Container sind nur via Port Forwarding erreichbar. In Kubernetes erreicht man sie dank DNS zusätzlich per Hostname. Ursprünglich verwaltete Kubernetes lediglich Stateless Services. Hierauf liegt der Schwerpunkt dieses Artikels. Schnell ausprobieren lassen sich alle Codebeispiele übrigens mit dem Testsystem Minikube (siehe Kasten „Minikube“).