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:
Wenn ein Deployment mit der Recreate-Strategie aktualisiert wird, führt Kubernetes folgende Schritte durch:
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.
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: 80In 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.
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.