Kubernetes Grundlagen Einführung
Kubernetes Grundlagen: Container-Orchestrierung verstehen
Kubernetes (K8s) ist der Standard für Container-Orchestrierung. Wenn Docker einzelne Container verwaltet, orchestriert Kubernetes hunderte oder tausende davon. Dieser Guide erklärt die Grundlagen.
Was ist Kubernetes?
Kubernetes ist eine Open-Source-Plattform zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen. Google entwickelte es ursprünglich intern.
Wann braucht man Kubernetes?
- Viele Container über mehrere Server verteilen
- Automatische Skalierung bei Last
- Selbstheilung bei Ausfällen
- Zero-Downtime Deployments
- Service Discovery und Load Balancing
Grundbegriffe
| Begriff | Erklärung |
|---|---|
| Cluster | Gruppe von Nodes, die zusammenarbeiten |
| Node | Einzelner Server im Cluster (Master oder Worker) |
| Pod | Kleinste Einheit – enthält einen oder mehrere Container |
| Deployment | Beschreibt gewünschten Zustand der Pods |
| Service | Stabile Netzwerkadresse für Pods |
| Namespace | Virtuelle Unterteilung des Clusters |
| ConfigMap | Konfigurationsdaten für Pods |
| Secret | Sensible Daten (Passwörter, Tokens) |
Kubernetes Architektur
Control Plane (Master)
- API Server: Zentrale Schnittstelle
- etcd: Key-Value-Speicher für Cluster-Zustand
- Scheduler: Weist Pods den Nodes zu
- Controller Manager: Überwacht Cluster-Zustand
Worker Nodes
- Kubelet: Agent auf jedem Node
- Kube-proxy: Netzwerk-Proxy
- Container Runtime: Docker, containerd, etc.
Lokale Entwicklungsumgebung
Minikube installieren
# macOS brew install minikube # Linux curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube # Cluster starten minikube start # Dashboard öffnen minikube dashboard
kubectl installieren
# macOS brew install kubectl # Linux curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" sudo install kubectl /usr/local/bin/kubectl # Verbindung testen kubectl cluster-info
Erstes Deployment
Pod erstellen (YAML)
# nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
# Pod erstellen kubectl apply -f nginx-pod.yaml # Status prüfen kubectl get pods # Logs anzeigen kubectl logs nginx-pod # Pod löschen kubectl delete pod nginx-pod
Deployment erstellen
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.25
ports:
- containerPort: 80
resources:
limits:
memory: "128Mi"
cpu: "500m"
kubectl apply -f nginx-deployment.yaml kubectl get deployments kubectl get pods
Service erstellen
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- port: 80
targetPort: 80
type: LoadBalancer
kubectl apply -f nginx-service.yaml kubectl get services
Wichtige kubectl Befehle
| Befehl | Beschreibung |
|---|---|
kubectl get pods |
Alle Pods anzeigen |
kubectl get pods -o wide |
Pods mit mehr Details |
kubectl describe pod NAME |
Pod-Details anzeigen |
kubectl logs POD |
Pod-Logs anzeigen |
kubectl exec -it POD -- bash |
In Pod einloggen |
kubectl scale deployment NAME --replicas=5 |
Skalieren |
kubectl rollout status deployment/NAME |
Rollout-Status |
kubectl rollout undo deployment/NAME |
Rollback |
Kubernetes vs. Docker Compose
| Aspekt | Docker Compose | Kubernetes |
|---|---|---|
| Komplexität | Einfach | Komplex |
| Skalierung | Manuell | Automatisch |
| Self-Healing | Nein | Ja |
| Multi-Host | Nein (Swarm) | Ja |
| Einsatz | Entwicklung, kleine Projekte | Produktion, Enterprise |
💡 Tipp:
Für kleinere Projekte ist Docker Compose oft ausreichend. Kubernetes lohnt sich erst bei größeren, verteilten Anwendungen.
Managed Kubernetes Dienste
- Google GKE: Google Kubernetes Engine
- AWS EKS: Elastic Kubernetes Service
- Azure AKS: Azure Kubernetes Service
- DigitalOcean DOKS: Managed Kubernetes