Lektion W1.1 hat entschieden: Die Kladde bleibt auf Container Apps. Dieser Kurs baut sie trotzdem auf Kubernetes auf, damit Sie wissen, was darunter passiert, und damit die Entscheidung auf Kenntnis beruht. In dieser Lektion entstehen die Manifeste der Kladde, Dateien unter k8s/, auf denen alle folgenden Lektionen aufbauen: ein Namespace kladde, zwei Deployments (kladde-web und kladde-worker), ein Service, eine ConfigMap, Probes und Grenzen.

Sie brauchen dafür keinen Azure-Cluster und keinen Cent. Ein lokaler Cluster genügt: Kubernetes in Docker Desktop oder ein anderer lokaler Cluster, den kubectl erreicht. Prüfen Sie zuerst, ob Sie einen haben:

PowerShell
kubectl config get-contexts
kubectl get nodes

Zeigt get nodes einen Knoten mit dem Status Ready, sind Sie bereit. Meldet kubectl stattdessen, dass die Verbindung verweigert wird, läuft kein Cluster: Schalten Sie in Docker Desktop unter den Einstellungen Kubernetes ein. Wer keinen lokalen Cluster hat, liest die Lektion und führt die Übungen in W1.3 auf AKS aus; die Befehle sind dieselben.

Container und Images kennen Sie aus K1 und 3.1; wie die Kladde dazu läuft (Benutzer 1654, Port 8080, /health/live und /health/ready), steht in 3.0.1 und 3.5.5. Ein Wort zur Datenbank: W1 prüft den Weg zum Cluster, nicht die Daten. Die Web-App läuft in den Übungen wie in K2 mit ihrem Speicher im Arbeitsspeicher.

Cluster, Knoten, Namespace

Ein Cluster ist die Steuerungsebene mit ihren Knoten (W1.1). kubectl ist das Werkzeug, das mit der API des Clusters spricht, und es weiß aus der Datei kubeconfig, mit welchem Cluster es spricht. Ein Kontext ist ein Eintrag darin: Cluster, Benutzer und Namespace. kubectl config get-contexts listet sie, und ein Stern markiert den aktuellen. Merken Sie sich diese Zeile: Die meisten Unfälle mit kubectl geschehen im falschen Kontext.

Ein Namespace teilt den Cluster logisch auf. Namen sind innerhalb eines Namespace eindeutig, nicht im Cluster. Folgende Namespaces gibt es nach der Dokumentation in jedem AKS-Cluster:

Namespace Wofür
default zum sofortigen Loslegen ohne eigenen Namespace
kube-system Kubernetes selbst, etwa coredns; keine eigenen Anwendungen hineinlegen
kube-public selten genutzt; sichtbar für jeden Benutzer im Cluster
kube-node-lease Knoten melden darüber der Steuerungsebene, dass sie leben

Die Kladde bekommt einen eigenen Namespace: Rechte, Grenzen und Aufräumen gelten dann für alles, was darin liegt, und kubectl delete namespace kladde entfernt die Anwendung vollständig.