# Kubernetes (K8s): Die Architektur der Container-Orchestrierung
TL;DR / Management Summary Während Docker einen einzelnen Host verwaltet, verwaltet Kubernetes ein ganzes Rechenzentrum voller Hosts. Es ist das “Betriebssystem des RZs”. Die Architektur basiert auf der Trennung von Control Plane (das Gehirn) und Worker Nodes (die Muskeln). Ein Senior Admin betreibt Kubernetes-Cluster meist virtualisiert auf Proxmox (Artikel 678), um von der Hardware-Abstraktion und den einfachen Snapshots der Master-Knoten zu profitieren.
# 1. Die Control Plane (Das Gehirn)
Die Intelligenz des Clusters.
Besteht aus mehreren kritischen Komponenten:
- API Server (kube-apiserver): Die zentrale Drehscheibe. Alles kommuniziert mit ihm (Admin, Nodes, Controller).
- etcd: Die Datenbank. Speichert den gesamten Zustand des Clusters (Soll vs. Ist). Kritisch: Muss hochverfügbar sein!
- Scheduler (kube-scheduler): Entscheidet, welche VM (Node) genug Platz für einen neuen Pod hat.
- Controller Manager: Sorgt dafür, dass der Soll-Zustand eingehalten wird (z.B. “Immer 3 Kopien von Webserver A”).
# 2. Worker Nodes (Die Muskeln)
Wo die Workloads laufen.
Jeder Knoten im Cluster führt die eigentlichen Container aus:
- Kubelet: Der Agent auf dem Host. Er empfängt Befehle von der Control Plane und startet die Container.
- Kube-Proxy: Verwaltet das Netzwerk (Routing) zu den Services.
- Container Runtime: Meist containerd oder CRI-O. (Führt die Images aus).
# 3. Deep Dive: etcd – Die Quelle der Wahrheit
Das wichtigste Element.
etcd ist ein verteilter Key-Value Store.
- Inhalt: “VM 100 hat IP 10.0.1.5, User X hat Admin-Rechte”.
- Wichtigkeit: Wenn etcd korrupt ist, ist der gesamte Cluster verloren.
- Senior Tipp: Sichern Sie die etcd-Datenbank stündlich via Proxmox Backup (Artikel 693).
# 4. Day-2 Operations: Hochverfügbarkeit (HA)
Kein Single Point of Failure.
Ein Produktions-Cluster benötigt:
- 3 Master Knoten: Für Quorum in der etcd-Datenbank.
- Loadbalancer (OPNsense/HAProxy): Vor den API-Servern, damit die Worker Nodes immer einen Ansprechpartner finden.
# 5. Troubleshooting & “War Stories”
Wenn das Gehirn die Muskeln nicht erreicht.
# Top 3 Fehlerbilder
-
Symptom:
kubectlBefehle schlagen fehl (“Connection Refused”).- Ursache: Der API-Server Prozess ist abgestürzt oder das Zertifikat ist abgelaufen.
- Lösung:
journalctl -u kube-apiserverprüfen.
-
Symptom: Worker Node steht auf Status
NotReady.- Ursache: Das Kubelet kann den Master nicht erreichen oder der RAM des Hosts ist voll.
- Fix:
systemctl restart kubelet.
-
Symptom: Änderungen in der GUI werden nicht übernommen.
- Ursache: Der etcd-Cluster hat kein Quorum mehr (z.B. 2 von 3 Mastern offline).
# “War Story”: Der “Zombie” Cluster
Ein Admin löschte einen der drei Master-Knoten in Proxmox, um RAM zu sparen. Das Ereignis: Der Cluster lief erst weiter. Die Katastrophe: Nach einem geplanten Update der anderen zwei Master kam der Cluster nicht mehr hoch. Die Ursache: etcd benötigt eine Mehrheit. Bei 3 Knoten sind das 2. Da einer gelöscht war und ein zweiter während des Updates neustartete, war nur noch 1 Knoten online (keine Mehrheit). etcd schaltete sich in den Read-Only Modus, der API-Server startete nicht mehr. Lehre: Halten Sie sich bei K8s-Mastern strikt an die ungeraden Zahlen (3, 5, 7) und löschen Sie niemals “einfach mal so” einen Knoten.
# 6. Monitoring & Reporting
Cluster-Health.
# Kubernetes Dashboard
Nutzen Sie das offizielle Dashboard oder Lens, um den Cluster zu visualisieren.
- KPI:
Node CPU/RAM Pressure. - KPI:
API Server Request Latency.
# 7. Fazit & Empfehlung
Kubernetes ist komplex, bietet aber unerreichte Stabilität für Apps.
- Empfehlung: Nutzen Sie K3s oder Talos Linux als Unterbau in Proxmox. Diese Distributionen sind schlank und perfekt für die Virtualisierung optimiert.
- Wichtig: Sichern Sie Ihre Kubeconfig-Dateien und Zertifikate an einem Ort außerhalb des Clusters.
# Anhang: Cheatsheet (Core Components)
| Komponente | Port | Zweck |
|---|---|---|
| API Server | 6443 | Die Schnittstelle |
| etcd | 2379/2380 | Die Datenbank |
| Kubelet | 10250 | Agent am Host |
| NodePort | 30000-32767 | Externer Zugriff |