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.