Rolling Update
Par defaut, Kubernetes met a jour les Pods progressivement sans downtime.
kubectl set image deployment/nginx nginx=nginx:1.22
kubectl rollout status deployment/nginx
Strategie RollingUpdate
spec:
replicas: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2 # Max 2 Pods en plus
maxUnavailable: 1 # Max 1 Pod indisponible
Processus de rolling update
- Kubernetes cree de nouveaux Pods avec la nouvelle version
- Attend que les nouveaux Pods soient ready
- Supprime progressivement les anciens Pods
- Repete jusqu'a ce que tous les Pods soient a jour
Historique des revisions
kubectl rollout history deployment/nginx
kubectl rollout history deployment/nginx --revision=2
Rollback
# Revenir a la version precedente
kubectl rollout undo deployment/nginx
# Revenir a une revision specifique
kubectl rollout undo deployment/nginx --to-revision=3
Pause et Resume
# Pause le rollout
kubectl rollout pause deployment/nginx
# Faire plusieurs changements
kubectl set image deployment/nginx nginx=nginx:1.22
kubectl set resources deployment/nginx -c=nginx --limits=cpu=200m
# Resume le rollout
kubectl rollout resume deployment/nginx
Best practice : Testez toujours vos deployments en staging avant production. Utilisez --record pour garder l'historique des commandes.