Aller au contenu

Lab 01 : Gérer les Taints et Tolerations dans Kubernetes

  • Gérer des workloads avec des Node Pools spécialisés (par exemple : nodes GPU vs CPU, ou workloads de test vs production).
  • Configurer des règles d’affinité et d’anti-affinité pour les pods.
  • Utiliser des labels et taints pour contrôler l’attribution des pods aux nœuds.
  • Tester les déploiements pour vérifier le comportement des pods selon les règles configurées.
  1. Un cluster Kubernetes opérationnel fourni par OKS.
  2. Accès à la CLI kubectl.
  3. Droits administrateurs sur le cluster.
Terminal window
oks-cli cluster kubeconfig --cluster-name my-cluster --project-name my-project > kubeconfig.yaml
export KUBECONFIG=./kubeconfig.yaml

Assurez-vous d’avoir les permissions nécessaires pour accéder au cluster cible. Vous devez disposer d’un utilisateur ou d’un rôle qui vous permet d’exporter ou de récupérer la configuration du cluster.

Terminal window
kubectl get nodes
kubectl describe node <node-name>

Cette commande fournit des informations détaillées sur le nœud Kubernetes spécifié. Cela inclut les labels, les taints, les capacités, les conditions actuelles, et les pods qui y sont déployés.

Terminal window
kubectl get nodes -o custom-columns=":metadata.name" | xargs -I {} kubectl taint node {} dedicated=workload:NoSchedule

Pour confirmer que les taints sont appliqués sur chaque nœud, utilisez :

Terminal window
kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taints
NAME TAINTS
ip-10-91-35-253 dedicated=workload:NoSchedule
ip-10-91-39-104 dedicated=workload:NoSchedule
Terminal window
kubectl run pod-without-toleration --image=nginx --port=80 --dry-run=client -o yaml | kubectl apply -f -

Utilisez la commande suivante pour vérifier l’état du pod :

Terminal window
kubectl get pods

Le pod est en état Pending car aucun nœud disponible n’accepte les pods sans tolérance en raison des taints appliqués.

Retirez le taint d’un des nœuds pour permettre au pod d’y être déployé.

Commande pour supprimer un taint :

Terminal window
kubectl taint nodes <node-name> dedicated:NoSchedule-

Confirmez que le taint a été supprimé :

Terminal window
kubectl describe node ip-10-91-35-253 | grep Taints

Observez l’état du pod à nouveau pour vérifier qu’il est maintenant en cours d’exécution sur le nœud où le taint a été supprimé.

Commande pour vérifier :

Terminal window
kubectl get pods -o wide

Ce lab a permis de comprendre comment Kubernetes utilise les taints et tolerations pour gérer le placement des pods sur des nœuds spécifiques. Lorsqu’un nœud est “tainté”, seuls les pods avec des tolerations correspondantes peuvent y être déployés.