La meilleure source de politiques de redémarrage dans Kubernetes que j'ai trouvée est la suivante:
http://kubernetes.io/docs/user-guide/pods/multi-container/#restartpolicy
Mais il répertorie uniquement les valeurs restartPolicy
possibles et ne les explique pas.
Quelle est la différence entre Always
et OnFailure
? La chose ne doit-elle pas échouer avant de pouvoir être redémarrée?
Toujours signifie que le conteneur sera redémarré même s'il est sorti avec un code de sortie zéro (c'est-à-dire avec succès). Ceci est utile lorsque vous ne vous souciez pas de la raison de la fermeture du conteneur, vous voulez simplement vous assurer qu'il est toujours en cours d'exécution (par exemple, un serveur Web). C'est la valeur par défaut.
OnFailure signifie que le conteneur ne sera redémarré que s'il est sorti avec un code de sortie différent de zéro (c'est-à-dire que quelque chose s'est mal passé). Cela est utile lorsque vous souhaitez accomplir une certaine tâche avec le pod et vous assurer qu'elle se termine avec succès - sinon, elle sera redémarrée jusqu'à ce qu'elle le fasse.
Jamais signifie que le conteneur ne sera pas redémarré quelle que soit la raison de sa fermeture.
Ces différentes stratégies de redémarrage correspondent essentiellement aux différents types de contrôleurs, comme vous pouvez le voir sur kubectl run --help
:
--restart = "Always": la politique de redémarrage de ce pod. Valeurs légales [Always, OnFailure, Never]. S'il est défini sur "Toujours", un déploiement est créé pour ce module, s'il est défini sur "OnFailure", un travail est créé pour ce module, s'il est défini sur "Jamais", un module standard est créé. Pour les deux derniers - les répliques doivent être 1. Par défaut 'Toujours'
Et le pod user-guide :
ReplicationController ne convient qu'aux pods avec RestartPolicy = Always. Le travail ne convient qu'aux pods avec RestartPolicy égal à OnFailure ou Never.