Affinité et Anti-Affinité de Nœuds
Configurer l'affinité et l'anti-affinité de nœuds pour diriger le placement des Pods sur des nœuds spécifiques.
-
Affinité de Nœud (Node Affinity)
L'affinité de nœud permet de préférer que certains Pods s'exécutent sur des nœuds possédant des labels spécifiques. Par exemple, on peut configurer une affinité pour que les Pods s'exécutent uniquement sur des nœuds ayant un disque SSD.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: disktype operator: In values: - ssd
-
Anti-Affinité de Nœud (Node Anti-Affinity)
Avec l'anti-affinité de nœud, il est possible d'empêcher certains Pods d'être placés sur des nœuds ayant des labels spécifiques. Cela est utile pour éviter des conflits ou répartir des Pods sur différents nœuds.
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: zone operator: NotIn values: - us-central1
Affinité et Anti-Affinité de Pods
Utilisation de l'affinité et de l'anti-affinité pour positionner ou éloigner les Pods les uns des autres.
-
Affinité de Pod (Pod Affinity)
L'affinité de Pod permet de placer des Pods proches d'autres Pods spécifiques en utilisant des labels. Cela est souvent utile pour des raisons de performance.
affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app: frontend topologyKey: "kubernetes.io/hostname"
-
Anti-Affinité de Pod (Pod Anti-Affinity)
L'anti-affinité de Pod permet d'éviter que des Pods spécifiques soient placés sur le même nœud que d'autres Pods définis par des labels, améliorant ainsi la résilience de l'application.
affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchLabels: app: backend topologyKey: "kubernetes.io/hostname"
Taints et Tolerations
Application de taches et de tolérances pour réserver des nœuds à certaines charges de travail.
-
Taint (Tache)
Les taints appliquent des restrictions sur des nœuds, empêchant par défaut les Pods de s'y exécuter sauf s'ils ont une tolérance compatible. Cela est utile pour isoler des ressources pour des tâches spécifiques.
kubectl taint nodes node1 key=value:NoSchedule
-
Toleration (Tolérance)
Les tolérances permettent aux Pods de tolérer les taints appliqués aux nœuds, permettant ainsi de placer des Pods sur des nœuds qui leur sont habituellement restreints.
tolerations: - key: "key" operator: "Equal" value: "value" effect: "NoSchedule"
Requêtes et Limites de Ressources
Définition des limites et des requêtes de ressources pour un contrôle optimisé de l'allocation des ressources.
-
Requêtes de Ressources
Les requêtes définissent les ressources minimales requises par un Pod, garantissant qu'il sera programmé uniquement sur des nœuds ayant ces ressources disponibles.
resources: requests: memory: "64Mi" cpu: "250m"
-
Limites de Ressources
Les limites fixent le maximum de ressources qu'un Pod peut consommer, évitant qu'il monopolise les ressources d'un nœud.
resources: limits: memory: "128Mi" cpu: "500m"
Contraintes de Répartition Topologique
Définir les contraintes de répartition topologique pour assurer une haute disponibilité.
-
Exemple de Répartition
Les contraintes de répartition topologique permettent de contrôler la répartition des Pods à travers différents domaines, comme les zones de disponibilité, pour éviter les points de défaillance uniques.
topologySpreadConstraints: - maxSkew: 1 topologyKey: "topology.kubernetes.io/zone" whenUnsatisfiable: DoNotSchedule labelSelector: matchLabels: app: my-app
Priorité et Préemption
Définition des niveaux de priorité pour s'assurer que les Pods critiques obtiennent les ressources nécessaires.
-
Configuration de la Priorité
La priorité permet d'attribuer des niveaux d'importance aux Pods, garantissant que les Pods à haute priorité soient programmés en premier.
priorityClassName: high-priority
-
Préemption
La préemption permet à un Pod prioritaire d'évincer un Pod de moindre priorité lorsque les ressources sont limitées, assurant que les charges critiques soient exécutées en priorité.
Date de publication: 2023-06-03T09:40:00+08:00
Date de modification: 2024-10-27T15:06:30
Auteur: