Sobes.tech
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 pods ou manifests. 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