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