Anti-affinité¶
Les règles d'anti-affinité vous permettent de déployer les pods de vos applications sur des noeuds différents, afin d'augmenter la résilience de votre application.
Dans le cas où vous utilisez une règle d'anti-affinité telle que preferedDuringSchedulingIgnoredDuringExecution
avec des labels, nous vous recommandons d'utiliser des labels uniques à chaque déploiement, afin d'éviter que les pods ne se déploient sur l'ensemble des noeuds.
Exemple : Dans un environnement de développement, vous utilisez un namespace par branche de développement pour déployer votre application en cours de développement. Si le label défini dans la règle d'anti-affinité n'est pas unique (ex: <app_name>
), Kubernetes essaiera de déployer les pods sur des noeuds ne contenant pas de pods avec le même label. Dans ce cas, au lieu d'utiliser un nom de label fixe, il est conseillé d'utiliser un nom de label variable (ex: <app_name>-<branch>
)
Pour vérifier la configuration de vos règles d'affinité/anti-affinité :
kubectl get deployment -A -o jsonpath='{range .items[*]}{.metadata.namespace}{":"}{"\n"}{"\t"}{.metadata.name}{":"}{"\n"}{"\t"}{"\t"}{.spec.template.spec.affinity}{"\n"}{"\n"}{end}'