The Doppler Quarterly (DEUTSCHE) Frühjahr 2018 | Page 65
Ein Service wird mittels einer in YAML (YAML Ain't Markup Language) geschriebe-
nen Konfigurationsdatei definiert und implementiert. Die Implementierung wird in
einem deklarativen Stil definiert, wobei der Endzustand festgelegt wird und K8s
nach besten Kräften versucht, diesen Zustand beizubehalten. Beispielsweise kön-
nen Sie einen Service definieren, bei dem in der Implementierung zu jeder Zeit acht
Pods im Cluster ausgeführt werden müssen. Beim Ausfall eines Pod versucht K8s,
einen anderen Pod einzuplanen, um den definierten Endzustand der Implementie-
rung (d. h. acht aktive Pods) aufrechtzuerhalten. Der K8s-Master-Node versucht
ebenfalls, Pods auf den Worker-Nodes so effizient wie möglich im Cluster zu planen
und so für eine gleichmäßige Lastverteilung und Ausfallsicherheit zu sorgen.
Kubernetes Master
API Server
Controller Manager
User
Scheduler
Entwickler
/ Bediener
etcd
Kubelet
cAdvisor
Pod
Pod
Kube-Proxy
...
Pod
Kubelet
...
Pod
cAdvisor
Pod
Kube-Proxy
...
Pod
Plugin Network (z. B. Flannel, Weavenet etc.)
Kubernetes Node
Kubernetes Node
Abbildung 3: Kubernetes-Architektur
Helm
Wir haben also ein System identifiziert, mit dem sich das Problem der automatischen
Planung und Sicherstellung der Ausfallsicherheit in diesem verteilten Cluster lösen
lässt. Aber wie würden Sie die Anwendung beschreiben, die Sie implementieren wol-
len? Sie können sich bestimmt vorstellen, dass die YAML-Konfiguration ziemlich
komplex werden kann, selbst bei einer relativ einfachen Website wie dem Sockenshop,
bei dem Sie ConfigMaps, Services, Pods, persistente Volumes etc. festlegen müssen.
Hier kommt Helm ins Spiel. Stellen Sie sich Helm als Package-Manager für K8s vor,
vergleichbar mit yum und apt für Linux. Helm Charts sind K8s-Packages, die mit debs
und rpms vergleichbar sind. Mit Helm können Entwickler ihre gesamte Anwendung
in Charts bündeln, die mit einem einzigen Befehl in einem K8s-Cluster installiert
werden können. Helm stellt nicht nur einen effektiven Package-Manager für K8s
bereit, sondern bietet auch eine Möglichkeit, mit der Sie Ihre Anwendungen in öffent-
lichen Repositorys bündeln und veröffentlichen können, damit andere sie nutzen
können. Entwickler finden Hunderte von kuratierten und stabilen Charts, die eine
Vielzahl nützlicher Anwendungen bündeln. Diese reichen von Datenbanken (MySQL,
MongoDB) bis zu Web-Publishing-Anwendungen wie WordPress.
FRÜHJAHR 2018 | THE DOPPLER | 63