Kubernetes Kubernetes

Was Kubernetes ist und welche Probleme es löst

Warum Container allein nicht mehr skalieren und wie Kubernetes eine Gruppe von Maschinen zu einer Plattform macht.

8 min Anfänger

Kubernetes (oft als K8s abgekürzt) ist eine Open-Source-Plattform zum Betreiben und Verwalten containerisierter Anwendungen über viele Maschinen hinweg. Es wurde bei Google erschaffen und ist heute ein Projekt der Cloud Native Computing Foundation. Diese Anleitung erklärt die Probleme, für die es existiert, und die Handvoll Begriffe, auf denen der Rest dieser Reihe aufbaut.

Container sind der einfache Teil

Ein Container paketiert eine Anwendung zusammen mit den Bibliotheken, die sie braucht, sodass sie auf einem Laptop, einem Testserver und in der Produktion auf dieselbe Weise läuft. Container starten schnell, sind billig zu ersetzen, und du skalierst, indem du mehr Kopien betreibst. Das passt gut zu Microservice-Architekturen, bei denen eine Anwendung in viele kleine Services aufgeteilt ist, jeder in einem eigenen Container.

Was ohne Orchestrierung kaputtgeht

Betreibe diese Container nun selbst auf einer einzelnen virtuellen Maschine und sieh, was passiert:

  • Der Host läuft voll. Hat die Maschine keine freie CPU oder keinen freien Speicher mehr, musst du neue Container anderswo starten und von Hand mit dem Rest verbinden.
  • Container sterben und niemand merkt es. Container sind von Natur aus Wegwerfware. Einen abgestürzten neu zu starten ist etwas, das du skripten oder von Hand tun musst.
  • Der Host selbst fällt aus. Jeder Container darauf geht gemeinsam down, und nichts bringt sie zurück.

Du kannst für jedes davon Skripte schreiben, aber sobald eine Anwendung aus Hunderten von Containern über mehrere Umgebungen besteht, wird dieses hausgemachte Tooling zu einem eigenen Projekt.

Was ein Orchestrator bietet

Kubernetes übernimmt diese Aufgaben:

  • Hochverfügbarkeit. Betreibe mehrere Kopien eines Workloads auf verschiedenen Maschinen, damit Nutzer nicht merken, wenn eine ausfällt.
  • Skalierung. Erhöhe oder verringere die Zahl der Kopien, wenn sich die Last ändert, von Hand oder automatisch.
  • Selbstheilung. Starte fehlgeschlagene Container neu und plane Workloads von ausgefallenen Maschinen auf gesunde um.
  • Wiederherstellbarer Zustand. Die Konfiguration und der Zustand des Clusters liegen in einem Datenspeicher (etcd), den du sichern und wiederherstellen kannst.

Die Bausteine: Pods, Knoten und Cluster

Drei Begriffe decken den Großteil des Vokabulars ab:

  • Ein Pod ist das Kleinste, was Kubernetes ausführt. Er umhüllt einen oder mehrere Container, die Netzwerk und Speicher teilen. Die meisten Pods enthalten einen Hauptcontainer, gelegentlich mit einem Helfer daneben. Kubernetes verwaltet Pods, keine einzelnen Container.
  • Ein Knoten ist eine Maschine, virtuell oder physisch, die Pods ausführt.
  • Ein Cluster ist eine Menge von Knoten, die als ein Pool aus CPU und Speicher verwaltet werden. Einige Knoten bilden die Control Plane, die den Cluster verwaltet, und der Rest sind Worker-Knoten, die deine Anwendungen ausführen. Die nächste Anleitung behandelt, wie sie funktionieren.

Das deklarative Modell

Du sagst Kubernetes nicht, welche Schritte es unternehmen soll. Du beschreibst den gewünschten Zustand, meist in YAML („drei Replikas dieses Images, bereitgestellt auf diesem Port“), und sendest ihn an die API des Clusters. Controller in Kubernetes vergleichen dann fortlaufend, was existiert, mit dem, was du verlangt hast, und handeln auf die Differenz. Deshalb kommt ein Pod, den du löschst, zurück, wenn ein Deployment sagt, dass drei existieren sollen, und es ist die Grundlage für alles andere in dieser Reihe.

Was Kubernetes nicht für dich tut

Kubernetes ist eine Plattform, keine Komplettlösung:

  • Es baut deine Images nicht und testet deinen Code nicht. Das bleibt die Aufgabe von CI.
  • Es sichert die Daten deiner Anwendung nicht. Persistenter Speicher und Backups sind deine Verantwortung.
  • Es verschlüsselt Secrets standardmäßig nicht, und seine Standardeinstellungen sind für die Produktion nicht gehärtet.
  • Es ist ein großes System mit echter Lernkurve, übe also zuerst auf einem lokalen Cluster, was die nächsten Anleitungen tun.

Beliebte Anleitungen