Middle+
Quelles sont les règles interdisant le lancement d'un point de nœud spécifique dans le système?
sobes.tech IA
Réponse de l'IA
Il existe les mécanismes principaux suivants :
-
Taints et Tolerations (T/T) :
- Taints (Étiquettes de contamination) : S'appliquent aux nœuds. Permettent à un nœud de "repousser" les pods qui n'ont pas la tolérance correspondante.
- Tolerations (Tolérances) : S'appliquent aux pods. Permettent à un pod d'être placé sur un nœud qui possède une étiquette de contamination correspondante.
Types d'effets de Taint :
NoSchedule- Le pod ne sera pas programmé sur le nœud s'il ne possède pas la tolérance correspondante.PreferNoSchedule- Le planificateur essaiera de ne pas placer le pod sur ce nœud, mais pourra le faire si aucune autre option n'est disponible.NoExecute- Le pod ne sera pas placé sur le nœud, et les pods déjà en fonctionnement sur le nœud sans la tolérance correspondante seront évincés.
-
Affinité de nœud (Node Affinity) :
requiredDuringSchedulingIgnoredDuringExecution: Le planificateur doit placer le pod sur un nœud qui répond aux critères d'affinité. Si aucun nœud approprié n'est disponible, le pod restera en attente.preferredDuringSchedulingIgnoredDuringExecution: Le planificateur essaiera de placer le pod sur un nœud qui répond aux critères d'affinité. Si aucun nœud approprié n'est disponible, le pod peut être placé sur d'autres nœuds.
-
Configuration de Kubelet :
Il est possible d'utiliser des configurations kubelet pour limiter les types de pods pouvant s'exécuter sur un nœud spécifique, par exemple via
static podsoumanifests. Bien que cette approche soit moins flexible pour la gestion dynamique.
# Exemple de Taint
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Exemple de Toleration
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
tolerations:
- key: special
operator: Equal
value: true
effect: NoSchedule
containers:
- name: my-container
image: nginx
# Exemple d'Affinité de nœud
apiVersion: v1
kind: Pod
metadata:
name: my-pod-with-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1
- node2
containers:
- name: my-container
image: nginx