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:
Das Rolling Update erfolgt in mehreren Schritten:
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: 80In 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.
# 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-deploymentBei 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-deploymentDiese Befehle ermöglichen es dem Benutzer:
kubectl rollout undo deployment my-deployment: Macht
das letzte Update des Deployments my-deployment rückgängig
und kehrt zur vorherigen Revision zurück.kubectl rollout undo deployment my-deployment --to-revision=n:
Macht Änderungen bis zu einer spezifischen Revision N
rückgängig. Dies ist nützlich, wenn Sie zu einer bestimmten, bekannten
guten Konfiguration zurückkehren möchten.kubectl rollout history deployment my-deployment: Wird
genutzt, um die Historie der Änderungen einzusehen und die Revisionen zu
identifizieren, auf die möglicherweise zurückgegangen werden soll.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.