24 Die Recreate-Strategie in Kubernetes Deployments

Die Recreate-Strategie ist ein Ansatz zur Aktualisierung von Anwendungen in Kubernetes, der auf Einfachheit setzt. Bei dieser Strategie werden alle bestehenden Pods eines Deployments gelöscht und durch neue Pods ersetzt, die die aktualisierte Anwendungsversion ausführen.

In diesem Prozess:

24.1 Funktionsweise

Wenn ein Deployment mit der Recreate-Strategie aktualisiert wird, führt Kubernetes folgende Schritte durch:

  1. Stoppt und löscht alle laufenden Pods des Deployments.
  2. Erzeugt neue Pods basierend auf der aktualisierten Konfiguration oder dem neuen Image.

Diese Methode sorgt dafür, dass zu keinem Zeitpunkt alte und neue Versionen der Anwendung gleichzeitig laufen. Dies kann von Vorteil sein, wenn die Anwendung nicht dafür ausgelegt ist, in mehreren Versionen parallel zu laufen, oder wenn konsistente Datenbank-Schemata oder ähnliche Abhängigkeiten erforderlich sind.

24.1.1 Beispiel

Hier ist ein Beispiel für ein Kubernetes-Deployment, das die Recreate-Strategie nutzt:

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

In dieser Konfigurationsdatei (deployment.yaml) gibt der Abschnitt strategy: type: Recreate an, dass das Recreate-Verfahren verwendet werden soll. Wenn dieses Deployment angewendet wird, löscht Kubernetes zunächst alle vorhandenen Pods, die zur alten Version der Anwendung gehören, und erstellt dann neue Pods mit dem angegebenen neuen Image example-app:v2.

24.1.1.1 Bewertung

Die Recreate-Strategie führt unweigerlich zu einer Ausfallzeit, da es einen Moment gibt, in dem keine Instanz der Anwendung läuft. Daher ist dieser Ansatz möglicherweise nicht für Anwendungen geeignet, die eine hohe Verfügbarkeit erfordern oder bei denen auch nur kurze Ausfallzeiten untragbar sind.

Für Anwendungen, bei denen Konsistenz und Einfachheit Vorrang vor Verfügbarkeit haben, kann die Recreate-Strategie jedoch eine geeignete Wahl sein. Sie ist auch dann nützlich, wenn eine Anwendung keine komplexen Update-Szenarien unterstützt oder wenn die Infrastruktur einfach gehalten werden soll.