25 Das Rolling Update in Kubernetes Deployments

Das Rolling Update ist eine Methode zum Aktualisieren von Anwendungen in Kubernetes, die es ermöglicht, Anwendungsaktualisierungen mit minimaler Ausfallzeit durchzuführen. Diese Strategie ersetzt schrittweise alte Pods durch neue Pods mit der neuen Version der Anwendung oder Konfiguration.

In diesem Diagramm:

25.1 Funktionsweise

Das Rolling Update erfolgt in mehreren Schritten:

  1. Start eines neuen Pods: Kubernetes startet einen Pod mit der neuen Version der Anwendung.
  2. Health check: Der neue Pod wird verschiedenen Health checks unterzogen, um sicherzustellen, dass er ordnungsgemäß funktioniert.
  3. Traffic-Übernahme: Sobald der neue Pod als gesund eingestuft wird, beginnt er, Traffic zu übernehmen.
  4. Herunterfahren alter Pods: Gleichzeitig wird ein alter Pod heruntergefahren.
  5. Wiederholung: Dieser Vorgang wird wiederholt, bis alle alten Pods ersetzt sind.

25.1.1 Beispiel

Hier ein Beispiel eines Kubernetes-Deployment-Manifests, das ein Rolling Update verwendet:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  selector:
    matchLabels:
      app: example-app
  template:
    metadata:
      labels:
        app: example-app
    spec:
      containers:
      - name: example-container
        image: example-app:v2
        ports:
        - containerPort: 80

In diesem Beispiel gibt maxUnavailable an, wie viele Pods während des Updates maximal nicht verfügbar sein dürfen. maxSurge definiert, wie viele Pods mehr als die gewünschte Anzahl erstellt werden dürfen, um die Verfügbarkeit während des Updates zu gewährleisten.

25.2 Kommandos

# Aktualisierung eines Deployments mit einer Konfigurationsdatei
kubectl apply -f rolling-update-deployment.yml

# Anzeigen des Status des Deployments nach dem Update
kubectl get deploy my-deployment -o wide

# Überwachung des Rollout-Status eines Deployments
kubectl rollout status deployment my-deployment

# Anzeigen der Rollout-Historie eines Deployments
kubectl rollout history deployment my-deployment

25.3 Undo

Bei einem Rolling Update in Kubernetes besteht die Möglichkeit, Änderungen rückgängig zu machen, wenn Probleme erkannt werden. Ein Rollback wird oft als “Undo” einer Aktion bezeichnet. Mit Kubernetes kann der Zustand eines Deployments auf einen früheren, stabilen Zustand zurückgesetzt werden.

# Rollback auf die vorherige Version des Deployments
kubectl rollout undo deployment my-deployment

# Rollback zu einer spezifischen Revision des Deployments
kubectl rollout undo deployment my-deployment --to-revision=n

# Anzeigen der Rollout-Historie zur Bestimmung der Revision
kubectl rollout history deployment my-deployment

Diese Befehle ermöglichen es dem Benutzer:

25.4 Bewertung

Rolling Updates sind die Standardmethode für Deployments in Kubernetes und werden für die meisten Anwendungsfälle empfohlen. Sie erlauben es, neue Versionen ohne Ausfallzeiten auszurollen und bieten gleichzeitig die Möglichkeit, das Update zu pausieren oder zurückzusetzen, falls Probleme auftreten.

Diese Strategie eignet sich besonders gut für Anwendungen, die ständige Verfügbarkeit erfordern. Sie muss jedoch sorgfältig konfiguriert werden, um sicherzustellen, dass genügend Ressourcen vorhanden sind und die Anwendung während des Updates stabil bleibt.