[[start|zurück]]
====== Kubernetes – Grundlagen (Pods, Nodes, Deployments, Services, Ingress) ======
Kubernetes (oft „K8s“ genannt) ist ein System zur Orchestrierung von Containern.
Es verwaltet automatisch:
* Deployment (Bereitstellung) von Containern
* Skalierung (mehr Container starten)
* Self-Healing (Neustart bei Fehlern)
* Updates ohne Ausfall
* Netzwerk zwischen Containern
* Storage für Container
Kubernetes ist der Standard in modernen Cloud-, DevOps- und CI/CD-Umgebungen.
---
====== 1. Warum Kubernetes? ======
Docker allein startet Container – Kubernetes betreibt ganze Systeme.
Vorteile:
* automatische Skalierung
* Ausfallsicherheit
* Rollout / Rollback von Updates
* Lastverteilung
* Cluster über viele Server hinweg
* Self-Healing: Container werden automatisch ersetzt
Perfekt für:
* große Webplattformen
* Microservices
* APIs
* Clouddienste
* Enterprise-Infrastruktur
---
====== 2. Kubernetes Architektur – Überblick ======
Kubernetes besteht aus zwei Bereichen:
* **Control Plane** – steuert das Cluster
* **Worker Nodes** – führen Container aus
ASCII-Übersicht:
+---------------------+
| Control Plane |
| API Server |
| Scheduler |
| Controller Manager |
+---------------------+
|
|
+-----------+------------+
| |
+-------------+ +--------------+
| Worker Node | | Worker Node |
| Kubelet | | Kubelet |
| Container | | Container |
| Runtime | | Runtime |
+-------------+ +--------------+
---
====== 3. Die wichtigsten Kubernetes-Objekte ======
Kubernetes arbeitet mit sogenannten *Ressourcen* oder *Objekten*.
Die wichtigsten:
* **Pod**
* **Deployment**
* **Service**
* **Ingress**
* **ConfigMap**
* **Secret**
* **PersistentVolume (PV)**
* **PersistentVolumeClaim (PVC)**
---
====== 4. Pod ======
Der **Pod** ist die kleinste Einheit in Kubernetes.
Ein Pod enthält:
* einen oder mehrere Container
* gemeinsame IP-Adresse
* gemeinsames Volume
Die Container in einem Pod sind eng gekoppelt.
Schema:
Pod
├── Container 1 (z. B. Webserver)
└── Container 2 (z. B. Log-Exporter)
Pods sind **flüchtig** – sie werden ständig ersetzt.
Deshalb nutzt man **Deployments**, nicht einzelne Pods.
---
====== 5. Deployment ======
Ein Deployment steuert, wie viele Pods laufen und wie sie aktualisiert werden.
Funktionen:
* Skalieren (mehr/weniger Pods)
* automatische Neustarts
* Rolling Updates (ohne Downtime)
* Rollbacks bei Fehlern
Beispiel YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp
spec:
replicas: 3
template:
spec:
containers:
- name: app
image: nginx
Dieses Deployment startet **3 Pods** mit Nginx.
---
====== 6. Service ======
Pods haben dynamische IPs – ein Service sorgt für **stabile Erreichbarkeit**.
Arten:
* **ClusterIP** → nur intern erreichbar
* **NodePort** → von außen über hohen Port erreichbar
* **LoadBalancer** → Cloud-Loadbalancer automatisch
* **ExternalName** → Alias zu externem DNS-Namen
Schema:
Clients → Service → verteilt Traffic → mehrere Pods
Service = Kubernetes Loadbalancer.
---
====== 7. Ingress ======
Ingress ist ein **Reverse Proxy / Loadbalancer auf Layer 7** für HTTP/HTTPS.
Beispiel:
* https://api.example.com → Backend 1
* https://app.example.com → Backend 2
Ingress-Controller (du kennst das 😉):
* Traefik
* Nginx Ingress
* HAProxy
* Istio Gateway
Schema:
Client → Ingress → Service → Pods
Ingress ermöglicht:
* Routing nach Hostname/URL
* TLS-Zertifikate
* Load Balancing
* Middlewares
---
====== 8. ConfigMaps & Secrets ======
===== ConfigMap =====
Konfigurationen (Text).
env: APP_MODE=production
===== Secret =====
Passwörter / Zertifikate (Base64-kodiert, nicht verschlüsselt!)
env: DB_PASSWORD=****
---
====== 9. Persistenter Speicher (Storage) ======
Pods sind flüchtig → Daten würden verloren gehen.
Daher nutzt man PV und PVC.
===== PersistentVolume (PV) =====
das eigentliche Storage-Backend
z. B. NFS, iSCSI, Ceph, lokal
===== PersistentVolumeClaim (PVC) =====
Anfrage eines Pods nach Speicher
Schema:
PVC (Pod) → PV → Storage (NFS/SSD/Ceph)
---
====== 10. Kubernetes Netzwerk ======
Jeder Pod bekommt:
* eigene IP (intern)
* kann mit allen Pods kommunizieren (by default)
CNI-Plugins regeln das Netzwerk:
* Calico
* Flannel
* Cilium (besser, modern)
* Weave
---
====== 11. Skalierung ======
Kubernetes kann automatisch skalieren:
===== Horizontal Pod Autoscaler (HPA) =====
z. B. starte 10 zusätzliche Pods wenn CPU > 70%
===== Vertical Autoscaler =====
passt CPU/RAM an
===== Cluster Autoscaler =====
startet neue Nodes in der Cloud
---
====== 12. Self-Healing ======
Kubernetes überwacht seine Pods:
Wenn:
* Pod crasht
* Node ausfällt
* Container hängt
Dann:
* Pod wird automatisch ersetzt
* Deployment sorgt für korrekte Anzahl
* Load Balancer leitet Traffic auf gesunde Pods
---
====== 13. Kubernetes vs Docker Compose ======
^ Funktion ^ Docker Compose ^ Kubernetes ^
| Deployment | einfach | komplex, mächtig |
| Skalierung | manuell | automatisch |
| Self-Healing | nein | ja |
| Updates | manuell | rolling updates |
| Netzwerk | einfach | Cluster-weite Kommunikation |
| Betrieb | Einzelserver | mehrere Nodes |
Kurz:
**Compose = kleine Projekte
Kubernetes = Großprojekte / Enterprise**
---
====== 14. Beispiele aus der Praxis ======
===== Microservices =====
Viele kleine Dienste:
* Auth-Service
* Payment-Service
* User-Service
===== Cloud-Apps =====
Kubernetes ist Grundlage von:
* Google Cloud
* Azure AKS
* AWS EKS
===== Home-Lab =====
Mini-Kubernetes mit:
* k3s
* MicroK8s
* kind
---
====== Zusammenfassung ======
* Kubernetes orchestriert Container automatisiert
* Pod = kleinste Einheit
* Deployment = steuert Pods, Updates, Skalierung
* Service = Load Balancer für Pods
* Ingress = HTTP/HTTPS Reverse Proxy
* PV/PVC = persistenter Speicher
* Kubernetes = Standard für moderne Cloud-Anwendungen