Veröffentlicht am

AKS Tutorial für Einsteiger: Erste App deployen

Teilen:
Authors

TL;DR

  • AKS Control Plane ist kostenlos -- Sie zahlen nur fuer die Worker-VMs
  • Mit az aks create steht 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:

  1. Azure-Account mit aktivem Abonnement (ein kostenloses Konto reicht fuer den Anfang)
  2. Azure CLI installiert
  3. 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:

KriteriumkubenetAzure CNI
Pod-NetworkingNAT, eigener IP-BereichPods erhalten IPs direkt aus dem VNet
PerformanceGut, ein Hop mehrBesser, direkte Erreichbarkeit
IP-VerbrauchGering (nur Node-IPs im VNet)Hoch (jeder Pod braucht eine VNet-IP)
Netzwerk-PoliciesCalico (manuell)Azure Network Policies oder Calico
Zugriff von VMs/VPNNur ueber Node-IP + PortPods direkt erreichbar
EmpfehlungDev, Lernen, kleine WorkloadsProduktion, 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

MassnahmeErsparnis
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:

  1. 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
  2. Azure Container Registry (ACR) -- Eigene Images bauen und sicher speichern, nahtlose Integration mit AKS
  3. Namespaces fuer Umgebungen -- Dev, Staging und Produktion im selben Cluster trennen
  4. GitOps mit ArgoCD -- Deployments automatisieren, siehe unseren ArgoCD Enterprise Guide
  5. Security Basics -- Network Policies, Pod Security Standards, RBAC

Weiterführende Artikel

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