2
votes

Nœud de travail Kubernetes uniquement pour un type spécifique de pod

J'ai une exigence où je souhaite planifier un type spécifique de pod sur un nœud particulier et aucun autre type de pod ne doit être planifié sur ce nœud. Par exemple,

En supposant que j'ai 3 nœuds de travail - w1, w2 et w3 Je veux que les pods de type (disons POD-w2) soient toujours programmés sur w2 et qu'aucun autre type de pods ne devrait être programmé sur w2.


0 commentaires

3 Réponses :


1
votes

Ajoutez un libellé type = w2 au collaborateur 2.

Utilisez le sélecteur de nœud ou l'affinité de nœud pour planifier les pods requis sur ce nœud.

Pour les autres pods, utilisez l'anti-affinité des nœuds pour éviter que d'autres pods ne soient programmés pour le worker 2


2 commentaires

Je suis d'accord que cela fonctionnera, mais le problème est que pour chacun des autres déploiements, j'ai besoin d'ajouter l'anti affinité à la spécification de déploiement, ce qui n'est pas souhaitable.


regardez la souillure et les tolérances. Ça aiderait. suivez le lien -> kubernetes.io/docs/concepts/configuration/taint- et tolérati‌ on



1
votes

Pour utiliser exclusivement un nœud pour un type spécifique de pod, vous devez souiller votre nœud comme décrit ici . Ensuite, créez une tolérance dans votre définition de déploiement / de pod pour le nœud corrompu afin de vous assurer que seul ce type de pod peut être planifié sur le nœud corrompu.


2 commentaires

Si je n'utilise que la corruption et la tolérance, il y a de fortes chances que le pod soit également programmé vers d'autres nœuds de travail.


Cela dépend de la façon dont vous spécifiez vos teintes. La règle générale consiste à utiliser des teintes pour spécifier un groupe de nœuds que les pods peuvent / ne peuvent pas planifier; et d'utiliser nodeSelector pour les nœuds pour planifier spécifiquement les nœuds.



0
votes

Pour y parvenir, nous devons altérer le nœud ainsi que l'affinité en étiquetant le nœud. La gousse requise doit tolérer la souillure et satisfaire également l'affinité. De cette façon, le pod sera planifié UNIQUEMENT sur le nœud dédié.

exemple:

      tolerations:
      - effect: NoSchedule
        key: dedicated
        operator: Equal
        value: myservice

    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: dedicated
                operator: In
                values:
                - myservice

puis utiliser la tolérance et l'affinité dans la spécification de déploiement

kubectl label node <dedicated_node_name> dedicated=myservice

et

kubectl taint nodes <dedicated_node_name> dedicated=myservice:NoSchedule


0 commentaires