Einblicke und Neuigkeiten. Frisch serviert.

2021

Februar
25

Kubernetes-Cluster managen mit OKD

Container sind in aller Munde dank ihrer zahlreichen Vorteile. Sie eignen sich genauso zum kurzfristigen Nutzen einer Anwendung wie als Baustein in CI/CD-Abläufen oder zum Betrieb hochverfügbarer, produktiver Services in Clustern. So vielfältig wie die Einsatzgebiete sind auch die Ansätze, wie Container-Setups aufgebaut und verwaltet werden – cloudscale.ch hält Ihnen diesbezüglich alle Möglichkeiten offen. Im Folgenden zeigen wir Ihnen nach einer kurzen Einführung in die Container-Welt, wie Sie bei cloudscale.ch einen "OKD"-Cluster in Betrieb nehmen können. OKD ist eine umfassende Kubernetes-Distribution, die als Open-Source-Projekt entwickelt wird und auf welcher auch Red Hat OpenShift basiert.

Container-Orchestrierung: Worum geht es eigentlich?

Viele unserer Kunden nutzen bereits Container in der einen oder anderen Form. Ein aktuell weit verbreiteter Ansatz zur gegenseitigen Isolierung von Containern ist die Verwendung von Linux-Namespaces in Kombination mit cgroups. Definitiv zum Mainstream gehört dieser Ansatz seit ca. 2013 mit dem Durchbruch von Docker und der darauf folgenden Standardisierung in der Open Container Initiative (OCI). In Containern können Anwendungen besonders ressourcen-effizient voneinander separiert werden, denn dieser Ansatz kommt ohne Hardware-Virtualisierung aus, und anders als bei "Full Virtualization" läuft auch das Betriebssystem nicht in mehreren, parallelen Instanzen.

Einige Container verteilt auf wenige Nodes lassen sich zwar noch problemlos von Hand verwalten. Spätestens bei Fragen zum Hochskalieren sowie zum Lifecycle-Management von Containern kommen jedoch Container-Orchestrators wie Kubernetes bzw. "K8s" ins Spiel: Kubernetes sorgt unter anderem dafür, dass von jedem Container die gewünschte Anzahl Instanzen läuft, und bestimmt hierzu selbständig die passenden Nodes. Beim Deployment von neuen Container-Versionen ersetzt es alte Instanzen nach definierten Deployment-Strategies, z.B. um einen Service als Ganzes durchgehend verfügbar zu halten. Und wenn für bestimmte Container persistenter Storage benötigt wird, kann Kubernetes diesen via CSI automatisch für den passenden Node provisionieren.

Kubernetes existiert in verschiedenen "Flavors"

Bei cloudscale.ch haben Kunden die Wahl, wie sie Kubernetes installieren und betreiben möchten. Wer direkt mit dem "Upstream" Kubernetes arbeiten möchte, kann seinen K8s-Cluster z.B. mit Kubespray aufsetzen: dieses Tool basiert auf Ansible und kann Hand in Hand mit unserer Ansible Collection eingesetzt werden – so erstellen Sie die für den Cluster benötigte Cloud-Infrastruktur bequem via unsere API.

Einen Schritt weiter geht Rancher, das sich als Verwaltungs-Tool noch eine Ebene höher positioniert. Rancher läuft selbst auf Container-Basis und stellt ein grafisches Web-Frontend sowie APIs bereit, mit denen sich komplette Kubernetes-Cluster in wenigen Schritten erstellen und verwalten lassen. Rancher stellt die für einen Cluster benötigten Cloud-Ressourcen automatisch bereit; der "cloudscale.ch Node Driver" ist bei aktuellen Rancher-Versionen bereits vorinstalliert.

Ein weiteres, mächtiges Werkzeug ist OKD, das hier etwas genauer betrachtet werden soll. Dieses Open-Source-Projekt bildet zudem die Grundlage für OpenShift, das von Red Hat als Gesamtpaket aus Software, Services und Support vertrieben wird. Analog zum Linux-Kernel und darauf aufbauenden Linux-Distributionen kann man OKD als "Kubernetes-Distribution" bezeichnen: Über das reine Managen von Containern hinaus integriert OKD eine Reihe von Tools, die sich z.B. auch um die Überwachung des Clusters, das Logging oder das Routing von Netzwerk-Traffic zu den richtigen Containern kümmern. Die Installation von OKD profitiert bei cloudscale.ch von verschiedenen Features, über die wir bereits berichten konnten, wie z.B. private Netze mit Managed DHCP. Für die sogenannten Master- und Worker-Nodes setzt OKD auf Fedora CoreOS, welches aus dem früheren Core OS hervorgegangen ist und das auch bei cloudscale.ch zur Installation auf neuen Servern zur Auswahl steht (genauso wie übrigens Flatcar Container Linux, ein beliebter Core-OS-Fork).

Schritt für Schritt zum eigenen OKD-Cluster

Falls Sie neugierig auf OKD sind, starten Sie Ihren eigenen OKD-Cluster mit Hilfe des detaillierten How-Tos, welches wir auf GitHub publiziert haben. Dieses Tutorial nutzt mit Ansible ein verbreitetes DevOps-Tool zur Automatisierung der einzelnen Schritte; zusätzlich hilft das im OpenShift-Umfeld entwickelte "ocp4-helpernode" in unserem How-To zur weiteren Vereinfachung des Vorgehens, insbesondere beim Provisioning von HAProxy und DNS. Der Ablauf besteht im Wesentlichen aus den folgenden vier Schritten:

Schritt 1: Auf dem persönlichen Arbeitsgerät, z.B. dem eigenen Laptop oder einem alternativ benutzten Cloud-Server, werden die benötigten Tools installiert sowie einige grundlegende Werte bzw. Variablen definiert.

Schritt 2: Der sogenannte Helper-Node wird installiert und die Services darauf konfiguriert, die im Cluster eine Reihe von zentralen Funktionen übernehmen. So laufen z.B. API-Verbindungen über den HAProxy, welcher später zudem ermöglicht, dass Ihre Applikationen auf den Worker-Nodes aus dem Internet erreichbar sind. Der DNS-Server wiederum erlaubt es, im Cluster interne Domains bzw. IP-Adressen aufzulösen, und ein Apache HTTP Server liefert statische Files aus. Auf dem Apache hinterlegen Sie insbesondere die Ignition-Configs: Ähnlich zu "cloud-init" bietet Ignition einen Weg, um auf neu erstellten Servern gleich beim ersten Starten individuelle Einstellungen zu setzen.

Netzwerk-Diagramm OKD Demo-Cluster

Schritt 3: Nun werden die Master- und Worker-Nodes erstellt. Wie bereits beim Helper-Node erfolgt das Starten der virtuellen Server bei cloudscale.ch automatisiert mit Hilfe unserer Ansible Collection. Die neuen Nodes holen ihre vorbereiteten Ignition-Configs und somit ihre spezifischen Konfigurations-Einstellungen vom Apache-Server aus dem vorherigen Schritt und richten sich auf diese Weise selbständig fertig ein.

Schritt 4: Um die neuen Nodes im Cluster zu akzeptieren, müssen in einem letzten Schritt noch die jeweiligen CSRs signiert werden. Damit ist die Installation des OKD-Clusters abgeschlossen.

 

Die Beliebtheit von Container-Setups ist ungebrochen, nicht zuletzt durch die Vielzahl von Vorteilen wie z.B. der sauberen Trennung von einzelnen Services bei gleichzeitig effizienter Ressourcen-Nutzung. Beim Management von Containern gibt es dabei viele richtige Lösungen – je nach den konkreten Anforderungen und Vorlieben. Ob OKD, Rancher oder ein besonders schlanker Ansatz: bei cloudscale.ch finden Sie die Bausteine dafür, dass alles zusammenspielt.

Für Ihre Lieblings-Tools,
Ihr cloudscale.ch-Team

Mehr Neuigkeiten. Weitere Einblicke.

Testen Sie uns und starten Sie noch heute einen Linux-Server in der Schweiz: