Kubernetes - Rollout Update
Alasta 20 Août 2024 kubernetes kubernetes pod update deploymeny
Description : Kubernetes, Stratégie de mise à jour d'application
Stratégie de mise à jour applicative
Voir le status d’un deployment / daemonset / statefulset
kubectl rollout status <daemonset | deployment | statefulset> [component_name]
exemple:
kubectl rollout status deployment hello deployment "hello" successfully rolled out
Afficher l’historique de rollout
k rollout history deployment
deployment.apps/hello
REVISION CHANGE-CAUSE
1 <none>
Stratégies de déploiement
Il y a 2 types de stratégies:
- Recreate: suppression des pods puis recréation de ces derniers avec la nouvelle version, ce qui entraine un downtime
- Rolling update (défaut): 1 pod à la fois
Modification d’un deployment et application:
k apply -f deployment-definition.yml
ou
Modification d’un attribut:
k set image deployment/myapp-deployment nginx-container=nginx:1.9.1
Afficher la stratégie de rollout
Décrire le deployment et chercher la clés StrategyType
k describe deployments.apps hello
Name: hello
Namespace: default
CreationTimestamp: Tue, 20 Aug 2024 17:46:13 +0200
Labels: <none>
Annotations: deployment.kubernetes.io/revision: 1
Selector: app=hello
Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 100% max unavailable, 25% max surge
Pod Template:
...
Sous le capot
Lors d’une stratégie Recreate, le replicaSet va passer à 0 puis revenir à la valeur précédente. Pour un rollout, le replicaSet baisse de 1 puis augmente de 1, cela au travers d’un nouveau replicaSet.
C’est changement sont visibles dans les logs.