Descheduler
Le composant qui expulse les pods tombés au mauvais endroit, parce que le scheduler de Kubernetes décide du placement une seule fois puis n'y revient jamais.
La décision de placer un pod sur tel nœud repose sur l'état du cluster à cet instant précis. Ensuite tout bouge : des nœuds sont ajoutés et retirés, d'autres pods vont et viennent, des labels et des règles d'affinité sont modifiés. Au bout de quelques semaines, la charge est mal répartie et plusieurs pods enfreignent des règles qui étaient respectées à leur démarrage. Le descheduler tourne périodiquement et évince des pods selon les stratégies choisies — doublons d'un même déploiement sur un nœud, pods sur des nœuds très peu utilisés, pods dont l'affinité de nœud n'est plus satisfaite. Il décide seulement de ce qui part ; c'est le scheduler qui décide où cela atterrit, si bien qu'un duo mal réglé peut se mettre à renvoyer les pods d'un côté à l'autre. Les budgets de disruption sont respectés.