Virtuelle Maschinen waren lange das Rückgrat der Server-Infrastruktur – aber moderne Anwendungen brauchen mehr: Portabilität, Skalierbarkeit, Geschwindigkeit und Automatisierung. Genau hier kommen Container und Kubernetes ins Spiel.
In diesem Teil deiner Cloud-Serie lernst du:
- Was Container sind und wie sie sich von VMs unterscheiden
- Warum Kubernetes der De-facto-Standard für Container-Orchestrierung ist
- Wie AWS, Azure und GCP mit Containern arbeiten
- Und wann Container (nicht) die richtige Wahl sind
Was sind Container?
Ein Container ist eine isolierte, leichtgewichtige Laufzeitumgebung für Software. Er enthält:
- deinen Anwendungscode
- alle Abhängigkeiten
- die Laufzeitumgebung (z. B. Python, Node.js, Java)
- aber kein eigenes Betriebssystem wie bei einer VM
Das macht Container:
- kleiner (z. B. 50–200 MB statt GBs wie bei VMs)
- schneller startbereit (Sekunden statt Minuten)
- portabler (läuft überall, wo ein Container-Engine installiert ist, z. B. Docker)
Container ≠ VM
VMs virtualisieren Hardware, Container virtualisieren die Anwendung.
Warum Container?
Container sind ideal für:
- Microservices-Architekturen
- CI/CD-Pipelines
- Skalierbare Webanwendungen
- Plattformunabhängigkeit
Beispiel:
Ein Entwickler erstellt ein Container-Image mit seiner App, testet es lokal, pushed es in die Cloud – und die Anwendung läuft dort exakt gleich.
Kurz erklärt: Docker
Docker ist die populärste Plattform zur Erstellung, Verwaltung und Verteilung von Containern.
Ein typisches Workflow:
- Erstelle ein
Dockerfile
- Baue ein Image:
docker build .
- Starte den Container lokal:
docker run
- Lade ihn in ein Registry hoch (z. B. Docker Hub, GitHub Container Registry oder Amazon ECR)
Und was ist Kubernetes?
Kubernetes (K8s) ist ein Open Source Orchestrierungs-Framework für Container. Es wurde ursprünglich von Google entwickelt und ist heute Standard für die Verwaltung von containerisierten Anwendungen – egal ob auf AWS, Azure, GCP oder On-Premises.
Was Kubernetes kann:
- Container starten, stoppen, skalieren
- Lastverteilung (Load Balancing)
- Selbstheilung (z. B. Neustart bei Absturz)
- Rolling Updates & Rollbacks
- Geheimnisse & Konfigurationen verwalten
Architektur von Kubernetes (vereinfacht)
+-----------------------+
| Kubernetes Cluster |
+-----------------------+
| Master Node (Control) |
| - Scheduler |
| - API Server |
| - Controller Manager |
+-----------------------+
| Worker Nodes |
| - kubelet |
| - Container Runtime |
| - Pods (mit Containern) |
+-----------------------+
Ein Pod ist die kleinste Einheit in Kubernetes – er enthält einen oder mehrere Container, die gemeinsam laufen und Ressourcen teilen.
Container & Kubernetes in der Cloud
AWS – Elastic Kubernetes Service (EKS)
- Voll verwalteter Kubernetes-Dienst
- Integriert mit IAM, VPC, ALB, Fargate
- Auch native ECS (Elastic Container Service) verfügbar – ohne K8s
Azure – Azure Kubernetes Service (AKS)
- Tief integriert mit Azure DevOps, ACR, Monitor & Active Directory
- Gute CI/CD-Anbindung über GitHub Actions & Azure Pipelines
- AKS kann per GUI, CLI oder Terraform verwaltet werden
Google Cloud – Google Kubernetes Engine (GKE)
- Von Google selbst entwickelt → Best-in-Class
- Automatisches Node-Scaling, Upgrades, Rollouts
- Ideal für Data/ML-Projekte & APIs
Alternativen zu Kubernetes
Nicht jedes Containerprojekt braucht gleich K8s. Hier ein paar Alternativen:
Use Case | Tool/Service |
---|---|
Einzelner Container in der Cloud | Cloud Run (GCP), AppRunner (AWS), Azure Container Apps |
Entwicklung & Test lokal | Docker Desktop, Podman |
Einfaches App-Hosting | Heroku, Railway, Render |
Vorteile von Containern & Kubernetes
- Portabilität: „Build once, run anywhere“
- Skalierbarkeit: Einfaches Hoch- und Runterskalieren
- Isolation: Jede App läuft unabhängig – weniger Konflikte
- Ressourceneffizienz: Leichtgewichtiger als VMs
- Automatisierung: Ideal für DevOps & GitOps
Nachteile & Herausforderungen
- Komplexität: Kubernetes hat eine steile Lernkurve
- Overhead für kleine Projekte: Für einfache Web-Apps oft Overkill
- Monitoring & Logging: Muss separat eingerichtet werden
- Security: Container sind kein Ersatz für sicheres App-Design
Beispiel: Kubernetes-Deployment einer Web-App
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: web
image: myapp:v1
ports:
- containerPort: 80
Dieses Manifest beschreibt ein Deployment mit 3 Replikaten eines Web-Containers.
Tools & Services rund um Kubernetes
Tool | Funktion |
---|---|
Helm | Paketmanager für Kubernetes |
kubectl | Kommandozeile für Kubernetes |
Kustomize | Konfigurationsmanagement |
Istio / Linkerd | Service Mesh für Traffic-Kontrolle |
ArgoCD | GitOps Deployment-Tool |
Lens | Kubernetes GUI (Desktop App) |
Fazit
Container und Kubernetes sind aus der modernen Cloud-Welt nicht mehr wegzudenken. Sie bieten enorme Vorteile für skalierbare, portable und wartbare Anwendungen – besonders, wenn du mit Microservices, APIs oder Cloud-native Development arbeitest.
Aber: Nicht jedes Projekt braucht Kubernetes. Für einfache Web-Apps reicht oft ein Serverless-Service oder eine einfache VM. Wenn du allerdings komplexe Systeme betreibst oder auf Wachstum setzt, ist der Einstieg in Container & Orchestrierung fast unumgänglich.
Schreibe einen Kommentar