4.5. Placer des pods sur des nœuds spécifiques à l’aide de sélecteurs de nœuds
Le sélecteur de nœuds spécifie une carte des paires de clés/valeurs qui sont définies à l’aide d’étiquettes personnalisées sur les nœuds et les sélecteurs spécifiés dans les pods.
Afin que la gousse puisse fonctionner sur un nœud, la gousse doit avoir le même sélecteur de nœud clé/valeur que l’étiquette sur le nœud.
4.5.1. À propos des sélecteurs de nœuds Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser des sélecteurs de nœuds sur les gousses et les étiquettes sur les nœuds pour contrôler l’endroit où la gousse est programmée. Avec les sélecteurs de nœuds, Red Hat OpenShift Service sur AWS programme les pods sur les nœuds qui contiennent des étiquettes correspondantes.
Il est possible d’utiliser un sélecteur de nœuds pour placer des pods spécifiques sur des nœuds spécifiques, des sélecteurs de nœuds à l’échelle du cluster pour placer de nouveaux pods sur des nœuds spécifiques n’importe où dans le cluster, et des sélecteurs de nœuds de projet pour placer de nouveaux pods dans un projet sur des nœuds spécifiques.
En tant qu’administrateur de cluster, par exemple, vous pouvez créer une infrastructure où les développeurs d’applications peuvent déployer des pods uniquement sur les nœuds les plus proches de leur emplacement géographique en incluant un sélecteur de nœuds dans chaque pod qu’ils créent. Dans cet exemple, le cluster se compose de cinq centres de données répartis dans deux régions. Aux États-Unis, étiquetez les nœuds comme nous-est, nous-central, ou nous-ouest. Dans la région Asie-Pacifique (APAC), étiqueter les nœuds comme apac-est ou apac-west. Les développeurs peuvent ajouter un sélecteur de nœuds aux gousses qu’ils créent pour s’assurer que les gousses sont programmées sur ces nœuds.
La pod n’est pas programmée si l’objet Pod contient un sélecteur de nœuds, mais le nœud a une étiquette correspondante.
Lorsque vous utilisez les sélecteurs de nœuds et l’affinité des nœuds dans la même configuration, les règles suivantes contrôlent le placement des pod sur les nœuds:
- Lorsque vous configurez à la fois nodeSelector et nodeAffinity, les deux conditions doivent être remplies pour que la gousse soit programmée sur un nœud candidat.
- Lorsque vous spécifiez plusieurs nodeSelectorTerms associés aux types nodeAffinity, le pod peut être programmé sur un nœud si l’un des nodeSelectorTerms est satisfait.
- Lorsque vous spécifiez plusieurs correspondancesExpressions associées à nodeSelectorTerms, le pod ne peut être programmé sur un nœud que si toutes les correspondancesExpressions sont satisfaites.
- Les sélecteurs de nœuds sur des gousses et nœuds spécifiques
Il est possible de contrôler quel nœud est programmé en utilisant des sélecteurs de nœuds et des étiquettes.
Afin d’utiliser des sélecteurs de nœuds et des étiquettes, d’abord étiqueter le nœud pour éviter que les gousses ne soient décalées, puis ajouter le sélecteur de nœud à la gousse.
NoteIl n’est pas possible d’ajouter un sélecteur de nœuds directement à un pod existant. Il faut étiqueter l’objet qui contrôle la pod, comme la configuration de déploiement.
À titre d’exemple, l’objet Node suivant a la région:
Échantillon d’objet Node avec une étiquette
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Étiquettes pour correspondre au sélecteur de nœud de pod.
A pod a le type: user-node,région: sélecteur de nœud est:
Échantillon d’objet Pod avec sélecteurs de nœuds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Les sélecteurs de nœuds correspondent à l’étiquette du nœud. Le nœud doit avoir une étiquette pour chaque sélecteur de nœud.
Lorsque vous créez le pod à l’aide de l’exemple pod spec, il peut être programmé sur le nœud d’exemple.
- Les sélecteurs par défaut de nœuds à l’échelle du cluster
Avec les sélecteurs de nœuds larges par défaut, lorsque vous créez un pod dans ce cluster, Red Hat OpenShift Service sur AWS ajoute les sélecteurs de nœuds par défaut au pod et programme le pod sur les nœuds avec des étiquettes correspondantes.
À titre d’exemple, l’objet Scheduler suivant a la région par défaut de cluster=Est et type=node-utilisateur sélecteur:
Exemple d’opérateur de programmeur de ressources personnalisées
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans ce cluster, un nœud a le type= user-node,region=East Labels:
Exemple d’objet Node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple Pod objet avec un sélecteur de nœud
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous créez le pod à l’aide de l’exemple pod spec dans le cluster d’exemples, le pod est créé avec le sélecteur de nœud de cluster-large et est programmé sur le nœud étiqueté:
Exemple de pod list avec la gousse sur le nœud étiqueté
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteLorsque le projet où vous créez le pod a un sélecteur de nœud de projet, ce sélecteur prend la préférence sur un sélecteur de nœuds à l’échelle du cluster. Le pod n’est pas créé ou programmé si le pod n’a pas le sélecteur de nœud de projet.
- Les sélecteurs de nœuds de projet
Avec les sélecteurs de nœuds de projet, lorsque vous créez un pod dans ce projet, Red Hat OpenShift Service sur AWS ajoute les sélecteurs de nœuds au pod et programme les pods sur un nœud avec des étiquettes correspondantes. Lorsqu’il existe un sélecteur de nœuds par défaut à l’échelle du cluster, un sélecteur de nœud de projet prend la préférence.
À titre d’exemple, le projet suivant a le sélecteur de nœud région=Est:
Exemple d’objet Namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le nœud suivant a le type=nœud utilisateur,région=est étiquettes:
Exemple d’objet Node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous créez le pod à l’aide de l’exemple pod spec dans ce projet d’exemple, le pod est créé avec les sélecteurs de nœud de projet et est programmé sur le nœud étiqueté:
Exemple d’objet Pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de pod list avec la gousse sur le nœud étiqueté
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES pod-s1 1/1 Running 0 20s 10.131.2.6 ci-ln-qg1il3k-f76d1-hlmhl-worker-b-df2s4 <none> <none>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le projet, un pod n’est pas créé ou programmé si le pod contient différents sélecteurs de nœuds. À titre d’exemple, si vous déployez la pod suivante dans le projet d’exemple, il n’est pas créé:
Exemple d’objet Pod avec un sélecteur de nœud invalide
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.2. En utilisant des sélecteurs de nœuds pour contrôler le placement des pod Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser des sélecteurs de nœuds sur les gousses et les étiquettes sur les nœuds pour contrôler l’endroit où la gousse est programmée. Avec les sélecteurs de nœuds, Red Hat OpenShift Service sur AWS programme les pods sur les nœuds qui contiennent des étiquettes correspondantes.
Ajoutez des étiquettes à un nœud, à un ensemble de machines de calcul ou à une configuration de machine. L’ajout de l’étiquette à l’ensemble de la machine de calcul garantit que si le nœud ou la machine descend, les nouveaux nœuds ont l’étiquette. Les étiquettes ajoutées à un nœud ou à une configuration de machine ne persistent pas si le nœud ou la machine descend.
Ajouter des sélecteurs de nœuds à un pod existant, ajouter un sélecteur de nœud à l’objet de contrôle pour ce pod, tel qu’un objet ReplicaSet, DaemonSet objet, StatefulSet objet, Deployment object, ou DeploymentConfig objet. Les gousses existantes sous cet objet de contrôle sont recréées sur un nœud avec une étiquette correspondante. Lorsque vous créez un nouveau pod, vous pouvez ajouter le sélecteur de nœud directement au pod spec. Dans le cas où le pod n’a pas d’objet de contrôle, vous devez supprimer le pod, modifier la spécification du pod et recréer le pod.
Il n’est pas possible d’ajouter un sélecteur de nœuds directement à un pod existant.
Conditions préalables
Afin d’ajouter un sélecteur de nœud à des pods existants, déterminez l’objet de contrôle de ce pod. À titre d’exemple, la gousse routeur-default-66d5cf9464-m2g75 est contrôlée par la réplique routeur-default-66d5cf9464:
oc describe pod router-default-66d5cf9464-7pwkc
$ oc describe pod router-default-66d5cf9464-7pwkc
Exemple de sortie
La console web répertorie l’objet de contrôle sous OwnerReferences dans le pod YAML:
Procédure
Ajouter le sélecteur de nœud correspondant à un pod:
Ajouter un sélecteur de nœuds aux pods existants et futurs, ajouter un sélecteur de nœud à l’objet de contrôle pour les pods:
Exemple ReplicaSet objet avec des étiquettes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ajoutez le sélecteur de nœud.
Ajouter un sélecteur de nœud à un nouveau pod spécifique, ajouter le sélecteur directement à l’objet Pod:
Exemple Pod objet avec un sélecteur de nœud
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NoteIl n’est pas possible d’ajouter un sélecteur de nœuds directement à un pod existant.