Stratégie de redémarrage
Dans le développement d'applications cloud natives, Kubernetes est devenu la norme en matière d'orchestration de conteneurs. Lorsque nous utilisons Kubernetes pour gérer nos applications, nous divisons généralement l'application en plusieurs conteneurs, appelés « Pods » dans Kubernetes. Pendant que chaque pod est en cours d'exécution, il peut rencontrer divers problèmes, tels qu'une panne de conteneur, des ressources insuffisantes ou des erreurs humaines. Dans ces cas, la stratégie de redémarrage de Kubernetes est particulièrement importante.
Dans cet article, nous examinerons en profondeur la stratégie de redémarrage des pods de Kubernetes, notamment son fonctionnement, sa configuration et les meilleures pratiques.
Fonctionnement de la politique de redémarrage des pods Kubernetes
La stratégie de redémarrage de Kubernetes détermine principalement la manière dont Kubernetes gère le redémarrage d'un conteneur lorsqu'il s'arrête anormalement ou planifié. Kubernetes prend en charge deux stratégies de redémarrage principales : Never
OnFailure
et Always
.
- Toujours : lorsque le conteneur se termine et se ferme, redémarrez toujours le conteneur, politique par défaut
- OnFailure : Lorsque le conteneur se ferme anormalement (le code d'état de sortie est différent de 0), redémarrez le conteneur
- Jamais : quittez lorsque le conteneur se termine et ne redémarrez jamais le conteneur.
Remarque : La politique de redémarrage s'applique à tous les conteneurs de l'objet pod. Le conteneur qui doit être redémarré pour la première fois sera redémarré immédiatement en cas de besoin. Les opérations ultérieures qui doivent être redémarrées seront retardées par kubelet pendant un certain temps, et le temps de retard des opérations de redémarrage répétées est de 10 s, 20 s, 40 s, 80 s, 160 s, 300 s, 300 s est le temps de retard maximum
Configurer la politique de redémarrage du pod Kubernetes
Dans Kubernetes, la stratégie de redémarrage peut être configurée via la définition du Pod. Par exemple, voici une Always
définition de pod qui utilise une stratégie de redémarrage :
apiVersion: v1
kind: Pod
metadata:
name: restart-example
spec:
restartPolicy: Always
containers:
- name: mycontainer
image: myimage
Dans cette définition, restartPolicy
le champ est défini sur Always
, indiquant que Kubernetes tentera de redémarrer le conteneur quel que soit son état.
suggestion
Lorsque vous utilisez une stratégie de redémarrage, voici quelques recommandations pratiques :
- Choisissez une stratégie de redémarrage appropriée en fonction de l'importance de l'application. Pour les applications qui peuvent tolérer de courtes pauses mais pas de redémarrages fréquents, la stratégie
Never
ouOnFailure
doit être sélectionnée.Always
Les stratégies doivent être sélectionnées pour les applications dont il faut garantir qu'elles s'exécutent en continu et tolèrent les redémarrages . - Si possible, le besoin de redémarrages doit être minimisé. Cela peut nécessiter l'amélioration du code, l'optimisation de la configuration ou l'ajout de ressources.
- Pour les applications nécessitant des redémarrages fréquents, vous devez envisager d'utiliser une infrastructure plus stable ou d'optimiser l'application pour réduire les pannes.
- Pour les applications dont le démarrage prend beaucoup de temps, vous pouvez envisager d'utiliser une stratégie de restauration ou une stratégie de déploiement plus complexe telle que des mises à jour propagées.
- Si vous utilisez la fonction de restauration automatique, vous devrez peut-être configurer une limite appropriée sur le nombre d'étapes de restauration pour éviter que l'application ne reste bloquée dans une boucle de restauration infinie.