Lab 01 : Gérer les Taints et Tolerations dans Kubernetes
Objectifs
Section intitulée « Objectifs »- 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.
Pré-requis
Section intitulée « Pré-requis »- Un cluster Kubernetes opérationnel fourni par OKS.
- Accès à la CLI
kubectl. - Droits administrateurs sur le cluster.
Récupérer le fichier kubeconfig
Section intitulée « Récupérer le fichier kubeconfig »oks-cli cluster kubeconfig --cluster-name my-cluster --project-name my-project > kubeconfig.yamlexport KUBECONFIG=./kubeconfig.yamlVérifier l’accès au cluster
Section intitulée « Vérifier l’accès au cluster »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.
kubectl get nodeskubectl 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.
Appliquer un taint sur tous les nœuds
Section intitulée « Appliquer un taint sur tous les nœuds »kubectl get nodes -o custom-columns=":metadata.name" | xargs -I {} kubectl taint node {} dedicated=workload:NoSchedulePour confirmer que les taints sont appliqués sur chaque nœud, utilisez :
kubectl get nodes -o custom-columns=NAME:.metadata.name,TAINTS:.spec.taintsExemple de sortie attendue :
Section intitulée « Exemple de sortie attendue : »NAME TAINTSip-10-91-35-253 dedicated=workload:NoScheduleip-10-91-39-104 dedicated=workload:NoScheduleCréer un Pod sans tolérance
Section intitulée « Créer un Pod sans tolérance »kubectl run pod-without-toleration --image=nginx --port=80 --dry-run=client -o yaml | kubectl apply -f -Vérifiez l’état du Pod
Section intitulée « Vérifiez l’état du Pod »Utilisez la commande suivante pour vérifier l’état du pod :
kubectl get podsLe pod est en état Pending car aucun nœud disponible n’accepte les pods sans tolérance en raison des taints appliqués.
Supprimer le taint d’un nœud
Section intitulée « Supprimer le taint d’un nœud »Retirez le taint d’un des nœuds pour permettre au pod d’y être déployé.
Commande pour supprimer un taint :
kubectl taint nodes <node-name> dedicated:NoSchedule-Vérification de la suppression du taint
Section intitulée « Vérification de la suppression du taint »Confirmez que le taint a été supprimé :
kubectl describe node ip-10-91-35-253 | grep TaintsVérifiez que le Pod est maintenant déployé
Section intitulée « Vérifiez que le Pod est maintenant déployé »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 :
kubectl get pods -o wideConclusion
Section intitulée « Conclusion »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.