Taints et tolérances
Empêchez la planification de Pods sur certains nœuds grâce aux taints et autorisez certains Pods à les tolérer.
Taints et tolérances est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Que sont les taints ?
Imaginez que vous ayez des nœuds spéciaux dans votre cluster Kubernetes, peut-être équipés d'un matériel particulier comme des GPU, ou réservés à certaines charges de travail. Vous ne voudriez pas que n'importe quel Pod y soit placé, n'est-ce pas ?
C'est là qu'interviennent les taints ! Un taint est une propriété appliquée à un nœud qui empêche les Pods d'y être planifiés, sauf si ces Pods « tolèrent » explicitement ce taint.
Pourquoi utiliser des taints ?
Les taints sont très utiles pour gérer l'emplacement d'exécution des Pods :
- Nœuds dédiés : réserver des nœuds à certaines équipes ou applications.
- Matériel spécial : isoler les nœuds équipés de GPU ou de SSD très performants pour les Pods qui en ont besoin.
- Maintenance : marquer un nœud pour maintenance afin d'empêcher temporairement d'y planifier de nouveaux Pods.
Fonctionnement des taints
Considérez un taint comme un panneau « interdiction d'entrer » placé sur un nœud. Un Pod ne peut ignorer ce panneau que s'il possède une « autorisation » correspondante appelée tolérance.
Un taint se compose d'une clé, d'une valeur et d'un effet. Par exemple : key=value:effect.
Comprendre les effets des taints
La partie « effet » d'un taint indique à Kubernetes quoi faire avec les Pods qui ne le tolèrent pas. Il existe trois effets principaux :
NoSchedulePreferNoScheduleNoExecute
Examinons-les un par un.
Effet du taint : NoSchedule
L'effet NoSchedule est le plus strict. Si un nœud possède un taint avec NoSchedule, aucun Pod ne sera planifié sur ce nœud, sauf s'il possède une tolérance correspondante.
Les Pods déjà en cours d'exécution sur le nœud ne sont PAS affectés par l'ajout d'un taint NoSchedule.
Effet du taint : PreferNoSchedule
PreferNoSchedule est une version « souple » de NoSchedule. Kubernetes fera son possible pour éviter de planifier des Pods sur un nœud marqué par un taint, mais il ne s'agit pas d'une exigence stricte.
S'il n'existe aucun autre nœud approprié, un Pod pourra tout de même être planifié sur un nœud marqué par PreferNoSchedule, même sans tolérance.
Effet du taint : NoExecute
L'effet NoExecute est particulier, car il affecte les Pods *déjà en cours d'exécution*. Si un nœud possède un taint NoExecute :
- Les Pods sans tolérance correspondante sont *immédiatement expulsés*.
- Les nouveaux Pods sans tolérance correspondante ne peuvent pas être planifiés.
Cet effet est souvent utilisé pour vider les nœuds ou gérer les défaillances de nœuds.
Présentation des tolérances
Alors que les taints sont appliqués aux nœuds, les tolérances sont appliquées aux Pods. La tolérance d'un Pod lui permet d'être planifié sur un nœud possédant un taint correspondant.
Sans tolérance correspondante, un Pod ne peut pas être planifié sur un nœud marqué par un taint, ou préfère ne pas l'être.
Tolérances dans les manifestes de Pods
Vous définissez les tolérances dans le manifeste YAML d'un Pod, sous la section spec. Voici comment un Pod tolère un taint avec key=value:NoSchedule :
apiVersion: v1
kind: Pod
metadata:
name: my-tolerated-pod
spec:
containers:
- name: nginx
image: nginx
tolerations:
- key: "special-purpose"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"Correspondance entre taints et tolérances
Pour qu'un Pod soit planifié sur un nœud marqué par un taint, sa tolérance doit correspondre au taint du nœud. La correspondance porte sur les éléments suivants :
- Clé : elle doit être identique.
- Valeur : elle doit être identique si
operator: Equal. - Effet : il doit être identique.
- Opérateur : il peut être
EqualouExists(ce qui signifie que toute valeur est acceptée pour la clé).
Une tolérance spéciale key: "" operator: Exists tolère *n'importe quel* taint.
Vérification rapide : taints
Un nœud possède le taint env=production:NoSchedule. Quelle configuration de Pod permettrait de le planifier sur ce nœud ?
Récapitulatif : taints et tolérances
Vous avez découvert les taints et les tolérances !
- Les taints sont appliqués aux nœuds pour repousser les Pods.
- Les tolérances sont appliquées aux Pods pour leur permettre d'être planifiés sur des nœuds marqués par des taints.
- Les principaux effets des taints sont
NoSchedule,PreferNoScheduleetNoExecute. - Les tolérances doivent correspondre à la clé, à la valeur et à l'effet du taint pour qu'un Pod soit planifié.
Ces outils vous donnent un contrôle précis sur le placement des Pods !
Questions Fréquemment Posées
La leçon « Taints et tolérances » est-elle gratuite ?
Oui — le texte complet de « Taints et tolérances » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Taints et tolérances » ?
Empêchez la planification de Pods sur certains nœuds grâce aux taints et autorisez certains Pods à les tolérer. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Taints et tolérances » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Demandes et limites de ressources
- Sélecteurs de nœuds et affinité
- Taints et tolérances
- Priorité et préemption des Pods