- Authors

- Name
- Phillip Pham
- @ddppham
TL;DR
- AKS Control Plane ist kostenlos -- Sie zahlen nur fuer die Worker-VMs
- Mit
az aks createsteht ein funktionsfaehiger Cluster in ca. 8 Minuten - Azure CNI fuer Produktion (Pod-IPs im VNet), kubenet fuer Dev/Lernen (einfacher, guenstiger)
- Dieses Tutorial fuehrt Sie von Null zur laufenden Web-App mit Load Balancer
- Gesamtkosten fuer den Tutorial-Cluster: ca. 45 EUR/Monat (2 Nodes Standard_B2s)
Voraussetzungen
Bevor wir starten, brauchen Sie drei Dinge:
- Azure-Account mit aktivem Abonnement (ein kostenloses Konto reicht fuer den Anfang)
- Azure CLI installiert
- ca. 30 Minuten Zeit
Azure CLI installieren
# macOS
brew install azure-cli
# Linux (Debian/Ubuntu)
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
# Windows
winget install Microsoft.AzureCLI
# Anmelden
az login
# Pruefen, ob das richtige Abonnement aktiv ist
az account show --query "{name:name, id:id}" -o table
kubectl installieren
# Ueber die Azure CLI (funktioniert auf allen Plattformen)
az aks install-cli
# Version pruefen
kubectl version --client
Schritt 1: Resource Group und Cluster erstellen
# Resource Group in West Europe (Niederlande) -- guenstig fuer Tutorials
# Fuer Produktion: germanywestcentral oder westeurope
az group create \
--name aks-tutorial-rg \
--location westeurope
# AKS-Cluster erstellen
az aks create \
--resource-group aks-tutorial-rg \
--name mein-erster-cluster \
--node-count 2 \
--node-vm-size Standard_B2s \
--generate-ssh-keys \
--network-plugin kubenet
# Dauer: ca. 6-8 Minuten
Was passiert hier?
--node-count 2: Zwei Worker-VMs (reicht zum Ausprobieren)--node-vm-size Standard_B2s: Guenstigste brauchbare VM-Groesse (2 vCPU, 4 GB RAM, ~22 EUR/Monat pro Node)--network-plugin kubenet: Einfacheres Networking, ideal zum Lernen- Die Control Plane (API-Server, etcd, Scheduler) wird von Azure verwaltet und kostet nichts extra
Cluster-Zugriff einrichten
# kubeconfig herunterladen
az aks get-credentials \
--resource-group aks-tutorial-rg \
--name mein-erster-cluster
# Verbindung testen
kubectl get nodes
Erwartete Ausgabe:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-12345678-vmss000000 Ready <none> 3m v1.31.2
aks-nodepool1-12345678-vmss000001 Ready <none> 3m v1.31.2
Zwei Nodes im Status Ready -- der Cluster laeuft.
Schritt 2: Erste Anwendung deployen
Wir deployen eine einfache Nginx-Anwendung mit einem LoadBalancer-Service.
Deployment-Manifest erstellen
Erstellen Sie eine Datei app.yaml:
# app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-aks
spec:
replicas: 2
selector:
matchLabels:
app: hello-aks
template:
metadata:
labels:
app: hello-aks
spec:
containers:
- name: nginx
image: nginx:1.27-alpine
ports:
- containerPort: 80
resources:
requests:
cpu: 50m
memory: 64Mi
limits:
cpu: 200m
memory: 128Mi
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: hello-aks-service
spec:
type: LoadBalancer
selector:
app: hello-aks
ports:
- port: 80
targetPort: 80
Anwenden und pruefen
# Deployment erstellen
kubectl apply -f app.yaml
# Pod-Status beobachten
kubectl get pods -w
# Warten, bis beide Pods "Running" und "Ready" (1/1) sind
# Dann Ctrl+C druecken
# Service pruefen -- EXTERNAL-IP braucht 1-2 Minuten
kubectl get service hello-aks-service -w
Sobald die EXTERNAL-IP sichtbar ist (keine <pending> mehr), oeffnen Sie die IP im Browser. Sie sehen die Nginx-Willkommensseite.
# Externe IP abfragen
kubectl get service hello-aks-service -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
Glueckwunsch -- Ihre erste App laeuft auf Kubernetes.
Schritt 3: Skalierung ausprobieren
# Auf 5 Replicas hochskalieren
kubectl scale deployment hello-aks --replicas=5
# Status pruefen
kubectl get pods -o wide
# Der Load Balancer verteilt automatisch auf alle Pods
Fuer automatische Skalierung koennen Sie einen Horizontal Pod Autoscaler einrichten:
# hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hello-aks-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hello-aks
minReplicas: 2
maxReplicas: 8
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
kubectl apply -f hpa.yaml
kubectl get hpa
Azure CNI vs. kubenet
Die Wahl des Netzwerk-Plugins ist eine der wichtigsten Entscheidungen bei AKS:
| Kriterium | kubenet | Azure CNI |
|---|---|---|
| Pod-Networking | NAT, eigener IP-Bereich | Pods erhalten IPs direkt aus dem VNet |
| Performance | Gut, ein Hop mehr | Besser, direkte Erreichbarkeit |
| IP-Verbrauch | Gering (nur Node-IPs im VNet) | Hoch (jeder Pod braucht eine VNet-IP) |
| Netzwerk-Policies | Calico (manuell) | Azure Network Policies oder Calico |
| Zugriff von VMs/VPN | Nur ueber Node-IP + Port | Pods direkt erreichbar |
| Empfehlung | Dev, Lernen, kleine Workloads | Produktion, Enterprise |
Fuer dieses Tutorial verwenden wir kubenet (einfacher, weniger IP-Planung). Fuer Produktion empfiehlt sich Azure CNI mit Overlay-Networking -- das kombiniert direkte Pod-Erreichbarkeit mit geringerem IP-Verbrauch.
Monitoring mit Azure Monitor
AKS bietet integriertes Monitoring ueber Container Insights:
# Container Insights aktivieren (falls nicht bei der Cluster-Erstellung geschehen)
az aks enable-addons \
--addons monitoring \
--resource-group aks-tutorial-rg \
--name mein-erster-cluster
Nuetzliche kubectl-Befehle fuer Monitoring
# CPU/Memory-Verbrauch der Pods
kubectl top pods
# CPU/Memory-Verbrauch der Nodes
kubectl top nodes
# Events im Cluster (hilfreich bei Problemen)
kubectl get events --sort-by='.lastTimestamp' | tail -20
# Detaillierte Pod-Informationen
kubectl describe pod <pod-name>
# Logs eines Pods anzeigen
kubectl logs <pod-name>
# Logs live verfolgen
kubectl logs -f <pod-name>
Im Azure Portal finden Sie unter dem AKS-Cluster den Bereich Insights mit Metriken zu CPU, Memory, Netzwerk und Container-Logs.
Troubleshooting: Die 5 haeufigsten Probleme
1. Pod bleibt in "Pending"
kubectl describe pod <pod-name>
# Haeufigste Ursache: Nicht genug Ressourcen auf den Nodes
# Loesung: Node-Pool skalieren oder Resource Requests reduzieren
az aks nodepool scale \
--resource-group aks-tutorial-rg \
--cluster-name mein-erster-cluster \
--name nodepool1 \
--node-count 3
2. ImagePullBackOff
kubectl describe pod <pod-name>
# Image-Name pruefen -- Tippfehler sind die haeufigste Ursache
# Bei privaten Registries: imagePullSecret konfigurieren
3. CrashLoopBackOff
# Logs des abgestuerzten Containers pruefen
kubectl logs <pod-name> --previous
# Haeufige Ursachen:
# - Anwendung startet nicht (fehlende Env-Vars, Config)
# - Liveness Probe zu aggressiv (initialDelaySeconds erhoehen)
# - Out of Memory (Memory-Limit erhoehen)
4. Service hat keine External IP
kubectl describe service <service-name>
# Events pruefen -- oft fehlen Berechtigungen fuer den Load Balancer
# Oder: Limit fuer oeffentliche IPs im Abonnement erreicht
5. kubectl kann nicht verbinden
# Credentials neu laden
az aks get-credentials \
--resource-group aks-tutorial-rg \
--name mein-erster-cluster \
--overwrite-existing
# Cluster-Status pruefen
az aks show \
--resource-group aks-tutorial-rg \
--name mein-erster-cluster \
--query "powerState" -o table
Kosten im Griff behalten
Cluster stoppen, wenn er nicht gebraucht wird
# Cluster stoppen (spart die Node-Kosten)
az aks stop \
--resource-group aks-tutorial-rg \
--name mein-erster-cluster
# Cluster wieder starten
az aks start \
--resource-group aks-tutorial-rg \
--name mein-erster-cluster
Dev/Test-Cluster guenstig betreiben
| Massnahme | Ersparnis |
|---|---|
az aks stop nachts und am Wochenende | ~65% |
| Standard_B2s statt Standard_D2s_v5 | ~50% |
| Spot Node Pools fuer nicht-kritische Workloads | ~60-70% |
| Free Tier nutzen (1 Cluster kostenlos) | Control-Plane-Kosten = 0 |
Alles aufraeumen (Tutorial beenden)
# Gesamte Resource Group loeschen (Cluster + alle Ressourcen)
az group delete --name aks-tutorial-rg --yes --no-wait
Naechste Schritte nach dem Tutorial
Wenn der erste Cluster laeuft, sind das die sinnvollen naechsten Themen:
- Ingress Controller einrichten -- Statt pro Service einen Load Balancer zu bezahlen, leitet ein Ingress Controller (z.B. Nginx oder Azure Application Gateway) Traffic anhand von Hostnames weiter
- Azure Container Registry (ACR) -- Eigene Images bauen und sicher speichern, nahtlose Integration mit AKS
- Namespaces fuer Umgebungen -- Dev, Staging und Produktion im selben Cluster trennen
- GitOps mit ArgoCD -- Deployments automatisieren, siehe unseren ArgoCD Enterprise Guide
- Security Basics -- Network Policies, Pod Security Standards, RBAC
Weiterführende Artikel
- ArgoCD GitOps im Unternehmen
- Kubernetes Cluster Setup fuer Produktion
- Kubernetes Monitoring und Observability
- Helm Package Management
- Container vs. Kubernetes: Wann brauche ich was?
- Kubernetes Security Hardening
FAQ
Was kostet AKS? Die Control Plane ist im Free Tier kostenlos. Sie zahlen nur fuer die Worker-VMs. Ein kleiner 2-Node-Cluster mit Standard_B2s kostet ca. 45 EUR/Monat. Mit az aks stop koennen Sie den Cluster pausieren und zahlen nichts.
AKS vs. EKS -- was soll ich nehmen? Wenn Ihr Unternehmen bereits Azure nutzt (Microsoft 365, Azure AD), ist AKS die natuerliche Wahl wegen der nahtlosen Integration. Fuer AWS-Shops gilt dasselbe fuer EKS. Die Kubernetes-API ist identisch -- Ihr Wissen ist uebertragbar.
Brauche ich Docker auf meinem Rechner? Nein. Zum Deployen auf AKS genuegen az cli und kubectl. Docker brauchen Sie nur, wenn Sie lokal Images bauen wollen. Alternativ baut Azure Container Registry Images fuer Sie (az acr build).
Wie sicher ist AKS? AKS bietet automatische Sicherheitsupdates fuer die Control Plane, integriertes RBAC ueber Azure AD, Network Policies und Integration mit Microsoft Defender for Containers. Fuer DSGVO-Compliance nutzen Sie die Region germanywestcentral.
Bereit fuer den naechsten Schritt? Wenn Sie AKS produktionsreif aufsetzen oder Ihre bestehende Kubernetes-Umgebung optimieren moechten, sprechen Sie uns an. Wir helfen Ihnen bei Architektur, Security und Betrieb.
Kubernetes-Beratung gesucht?
Wir helfen deutschen Unternehmen bei der Kubernetes-Implementierung, Migration und Optimierung. DSGVO-konform und praxiserprobt.
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
AKS Kosten reduzieren: Spot, Auto-Scaling und GPU
Azure Kubernetes Service Kosten um 65 Prozent senken mit Spot-Instances, Auto-Scaling, optimierten VM-Größen und GPU-Workload-Optimierung.
EKS vs AKS vs GKE: Managed Kubernetes im Vergleich
AWS EKS, Azure AKS und Google GKE im direkten Vergleich: Preise, Netzwerk, Features und DSGVO-Konformität für deutsche Unternehmen.
ArgoCD installieren und erstes Projekt deployen
ArgoCD auf Kubernetes installieren und das erste Projekt Schritt für Schritt deployen, von der CLI-Einrichtung bis zur automatischen Synchronisation.
Hetzner Kubernetes Cluster erstellen: K3s Setup Guide
Kubernetes auf Hetzner Cloud mit K3s aufsetzen: Server provisionieren, Firewall konfigurieren, Hetzner CCM und CSI einrichten. Schritt-fuer-Schritt-Anleitung.
kube-prometheus-stack: Helm Install und Setup Anleitung
kube-prometheus-stack mit Helm installieren und die wichtigsten Values verstehen: Prometheus, Grafana und Alertmanager in einem Chart einrichten.