iX 12/2019
S. 50
Titel
Containerorchestrierung

Hilfe bei Microservices: Kubernetes mit Support

Gut sortiert

Christian Rost, Thorsten Schifferdecker, Christian Schneemann

Kubernetes bereitzustellen, ist nicht trivial. Dabei helfen die vorgefertigten Kubernetes-Distributionen SUSE CaaS Platform 4 und Red Hat OpenShift Container Platform 4 sowie die Werkzeugsammlung von Rancher.

Wer einen Kubernetes-Cluster einrichten will, stemmt eine Mammutaufgabe, für die er die geeigneten Werkzeuge braucht. Deshalb haben die Open-Source-Häuser SUSE und Red Hat vorgefertigte Distributionen zusammengestellt, die alles Notwendige zum Einrichten und Betreiben eines Kubernetes-­Clusters enthalten und für die die Anbieter kommerziellen Support leisten. Auch für die Werkzeugsammlung von Rancher zum Aufsetzen und Verwalten von Kubernetes-Clustern ist kommerzieller Support erhältlich.

Mit allen drei lässt sich relativ schnell eine kleine Kubernetes-Umgebung bereitstellen. Auch wenn es in diesem Artikel nur um das Deployment von Kubernetes geht, liefern SUSE und Red Hat jedoch nicht „nur“ reines Kubernetes und eine Workload-­Verwaltung, sondern auch Tools für das Development und Lifecycle-Management von Applikationen. Zum Vergleich der Pro­dukte dient eine Standardinstallation.

SUSE CaaS Platform

SUSE bietet mit seiner CaaS Platform eine Cluster-Management-Suite für das Life­cycle-Management auf Basis von Kubernetes (Abbildung 1). Seit September 2019 ist SUSE CaaS Platform in der Version 4 verfügbar. Die Plattform hilft beim Deployment eines Kubernetes-Clusters und versucht, den Aufbau so einfach wie möglich zu gestalten. CaaS Platform 4 hat im Vergleich zur Version 3 einige Veränderungen gebracht. Wurde bei CaaS Platform 3 noch SUSEs MicroOS installiert, lässt sich Version 4 als Produkt auf SUSE Linux Enterprise Server 15 SP 1 einrichten. Die Installation kann manuell erfolgen, mit der Installer-DVD von SUSE Linux Enter­prise 15 Service Pack 1, per AutoYaST oder über Images in virtuellen oder Cloud-Umgebungen.

Die SUSE Caas Platform automatisiert das Management von Containern. Sie vereinfacht den Aufbau von Kubernetes-­Clustern (Abb. 1).
SUSE

SUSE stellt auch leicht anzupassende Terraform-Beispiele zur Verfügung, mit denen sich schnell und einfach kleine Testumgebungen starten lassen. Neben einer aktuellen Kubernetes-Version, Release ­Kubernetes 1.15.2, wird auch die CRI-O-­Containerlaufzeitumgebung installiert.

Die Stiefel schnüren

Nachdem die Clusterknoten installiert sind, erfolgen die Clusterkonfiguration und das Zuweisen der Rollen. Ersteres geschieht mit skuba, dem von SUSE entwickelten Kommandozeilentool zur einfachen Installation und Wartung von Kubernetes-Clustern. Es basiert auf kubeadm und ist in Go geschrieben. Zu den zu konfigurierenden Clustersystemen benötigt es lediglich eine SSH-Verbindung. Die Konfiguration ist im Dateisystem in einer Ordnerstruktur abgelegt. Dadurch lassen sich von einem Adminsystem aus mehrere Cluster verwalten (Listing 1, siehe ix.de/z1cj).

Das Tool skuba arbeitet dateisystembasiert und erstellt für jeden zu administrierenden Cluster ein Verzeichnis mit Konfigurations­dateien. Nach der Konfiguration des ersten Masters lassen sich dem Cluster unter Angabe der jeweiligen Rolle, Master oder Worker, weitere Knoten hin­zufügen. Auch die Softwareupdates der Nodes steuert skuba, und zwar mit dem Werkzeug skuba-update, das den Paketmanager zypper und den Kubernetes Reboot Daemon kured nutzt. Der Daemon hilft, Clusterknoten automatisch neu zu starten, wenn das Paketmanagement des Betriebssystems das veranlasst. kured stellt dann sicher, dass immer nur ein Knoten neu startet und der Cluster normal weiterarbeiten kann. Am Ende steht ein funktionsfähiger Kubernetes-Cluster mit Cilium, CNI-Add-on, dex für die rollenbasierte Authentifizierung und – auf Wunsch – Helm zur Verfügung.

Will man eine Weboberfläche zum Management der Workload nutzen, lässt sich das Kubernetes-Dashboard per Helm-Chart installieren. Die Art und Weise der Nutzung der Kubernetes-Installation ist nicht von SUSE vorgegeben. Man hat freie Hand, welche Add-ons den Cluster erweitern sollen und wie dieser im Unternehmensnetzwerk einzubinden ist.

Rancher

Das Managementwerkzeug verwaltet Kubernetes-Cluster und Container-Work­loads mithilfe verschiedener, unter der Apache License 2.0 veröffentlichter Tools. Basis ist das von Rancher ­herausgegebene ­Ranch­erOS, eine leichtgewichtige Linux-­Distribution, in der jeder Prozess in einem Container läuft. Statt eines init-Systems startet RancherOS als ersten Prozess eine Docker-Instanz, System Docker genannt, und diese anschließend sogenannte System-Docker-Container wie ntpd, rsyslog, acpid oder cron. Außerdem laufen Dienste wie udev oder die für die eigentliche Workload verwendete Docker-Instanz als Container in System Docker.

Die Trennung der Docker-Instanzen User Docker und System Docker isoliert die Container des Anwenders (hier Kubernetes inklusive Workload) vom Betriebssystem. Dies bringt nicht nur Sicherheitsvorteile, es verhindert auch das ungewollte Löschen von Systemcontainern und damit, dass RancherOS unbrauchbar wird (Abbildung 2).

Die Container User Docker und System Docker sind getrennt. Das verhindert unbeabsichtigtes Löschen von Systemcontainern (Abb. 2).
Rancher Labs

RancherOS kann man Bare Metal oder als VM installieren. Für OpenStack, VM­ware, Amazon EC2, Google Compute Engine, DigitalOcean und Microsoft Azure gibt es vorgefertigte Images. RancherOS kann man auf zwei Arten konfigurieren: über ein Cloud-config-File, mit dem sich Rancher automatisiert installieren und konfigurieren lässt, und mit dem Kommando ros config, das man jedoch erst nach erfolgreicher Installation verwenden kann.

Rancher Kubernetes Engine, kurz RKE, ist ein Tool zum Erstellen, Verwalten und Aktualisieren von Kuber­netes-Clustern. Es vereinfacht die Installation der Kubernetes-relevanten Komponenten. RKE benötigt ein Linux mit installiertem Docker-Daemon, die Möglichkeit, alle in den Cluster aufzunehmenden Hosts per SSH zu erreichen, und einen unprivilegierten SSH-Benutzer, der jedoch die Berechtigung hat, Docker-Container zu starten. Außerdem müssen noch diverse Kernel-Module geladen und ein sysctl-Wert gesetzt sein. Die Installa­tion von RKE ist einfach: Man lädt das aktuelle Binary von github.com/rancher he­runter, macht es ausführbar und kopiert es an eine Stelle, die sich in der $PATH-­Variablen wiederfindet.

Installieren und konfigurieren

Anschließend erzeugt man mit rke config eine Clusterkonfiguration cluster.yml. Dieser Wizard ermöglicht es, auf einfache Weise einen Cluster zu beschreiben, den RKE dann automatisch installiert. Die Clusterkonfigurationsdatei lässt sich auch von Hand anlegen und editieren, da nicht alle Optionen über den Wizard konfigurierbar sind. Der Befehl rke up installiert den Cluster (Listing 2). Nach der Installation liegt im gleichen Verzeichnis eine Datei kube_config_cluster.yml, die Konfigurationsdatei für das Kommando kubectl.

RKE kann nicht nur Kubernetes-Cluster installieren, sondern bietet noch weitere Funktionen an, um ein etcd-Back-up anzulegen und im Fehlerfall wiederher­zustellen sowie die Zertifikate für einen Kubernetes-Cluster zu verwalten und, bei selbst signierten, auszutauschen.

Kommentieren