5.2. Travailler avec des nœuds


En tant qu'administrateur, vous pouvez effectuer un certain nombre de tâches pour rendre vos grappes plus efficaces.

5.2.1. Comprendre comment évacuer les pods sur les nœuds

L'évacuation des pods permet de migrer tous les pods ou certains pods d'un ou de plusieurs nœuds donnés.

Vous ne pouvez évacuer que les modules soutenus par un contrôleur de réplication. Le contrôleur de réplication crée de nouveaux pods sur d'autres nœuds et supprime les pods existants sur le(s) nœud(s) spécifié(s).

Les pods nus, c'est-à-dire ceux qui ne sont pas soutenus par un contrôleur de réplication, ne sont pas affectés par défaut. Vous pouvez évacuer un sous-ensemble de modules en spécifiant un sélecteur de modules. Les sélecteurs de modules sont basés sur des étiquettes, de sorte que tous les modules portant l'étiquette spécifiée seront évacués.

Procédure

  1. Marquer les nœuds inséparables avant d'effectuer l'évacuation des nacelles.

    1. Marquer le nœud comme non ordonnançable :

      Copy to Clipboard Toggle word wrap
      oc adm cordon <node1> $ oc adm cordon <node1>

      Exemple de sortie

      Copy to Clipboard Toggle word wrap
      node/<node1> cordonné

    2. Vérifiez que l'état du nœud est bien Ready,SchedulingDisabled:

      Copy to Clipboard Toggle word wrap
      oc get node <node1> $ oc get node <node1>

      Exemple de sortie

      Copy to Clipboard Toggle word wrap
      NAME        STATUS                     ROLES     AGE       VERSION
      <node1>     Ready,SchedulingDisabled   worker    1d        v1.25.0

  2. Évacuez les nacelles en utilisant l'une des méthodes suivantes :

    • Évacuer tous les pods ou certains pods sur un ou plusieurs nœuds :

      Copy to Clipboard Toggle word wrap
      $ oc adm drain <node1> <node2> [--pod-selector=<pod_selector>]
    • Forcez la suppression des pods nus à l'aide de l'option --force. Lorsque l'option est définie sur true, la suppression se poursuit même si des pods ne sont pas gérés par un contrôleur de réplication, un ensemble de réplicas, un job, un ensemble de démons ou un ensemble avec état :

      Copy to Clipboard Toggle word wrap
      $ oc adm drain <node1> <node2> --force=true
    • Définir une période de temps en secondes pour que chaque pod se termine gracieusement, utiliser --grace-period. Si elle est négative, la valeur par défaut spécifiée dans le pod sera utilisée :

      Copy to Clipboard Toggle word wrap
      $ oc adm drain <node1> <node2> --grace-period=-1
    • Ignorer les pods gérés par des ensembles de démons utilisant l'indicateur --ignore-daemonsets avec la valeur true:

      Copy to Clipboard Toggle word wrap
      $ oc adm drain <node1> <node2> --ignore-daemonsets=true
    • Fixe le temps d'attente avant d'abandonner en utilisant le drapeau --timeout. Une valeur de 0 définit une durée infinie :

      Copy to Clipboard Toggle word wrap
      $ oc adm drain <node1> <node2> --timeout=5s
    • Supprimez les pods même s'il existe des pods utilisant des volumes emptyDir en définissant l'indicateur --delete-emptydir-data sur true. Les données locales sont supprimées lorsque le nœud est vidé :

      Copy to Clipboard Toggle word wrap
      $ oc adm drain <node1> <node2> --delete-emptydir-data=true
    • Lister les objets qui seront migrés sans effectuer l'évacuation, en utilisant l'option --dry-run réglée sur true:

      Copy to Clipboard Toggle word wrap
      $ oc adm drain <node1> <node2>  --dry-run=true

      Au lieu de spécifier des noms de nœuds spécifiques (par exemple, <node1> <node2>), vous pouvez utiliser l'option --selector=<node_selector> pour évacuer les pods sur des nœuds sélectionnés.

  3. Marquer le nœud comme planifiable lorsqu'il est terminé.

    Copy to Clipboard Toggle word wrap
    oc adm uncordon <node1> $ oc adm uncordon <node1>

5.2.2. Comprendre comment mettre à jour les étiquettes sur les nœuds

Vous pouvez mettre à jour n'importe quelle étiquette d'un nœud.

Les étiquettes de nœuds ne sont pas conservées après la suppression d'un nœud, même si le nœud est sauvegardé par une machine.

Note

Toute modification apportée à un objet MachineSet n'est pas appliquée aux machines existantes appartenant à l'ensemble de machines de calcul. Par exemple, les étiquettes modifiées ou ajoutées à un objet MachineSet existant ne sont pas propagées aux machines et nœuds existants associés à l'ensemble de machines de calcul.

  • La commande suivante permet d'ajouter ou de mettre à jour des étiquettes sur un nœud :

    Copy to Clipboard Toggle word wrap
    $ oc label node <node> <key_1>=<value_1> ... <clé_n>=<valeur_n>

    Par exemple :

    Copy to Clipboard Toggle word wrap
    $ oc label nodes webconsole-7f7f6 unhealthy=true
    Astuce

    Vous pouvez également appliquer le YAML suivant pour appliquer l'étiquette :

    Copy to Clipboard Toggle word wrap
    kind: Node
    apiVersion: v1
    metadata:
      name: webconsole-7f7f6
      labels:
        unhealthy: 'true'
  • La commande suivante met à jour tous les pods de l'espace de noms :

    Copy to Clipboard Toggle word wrap
    $ oc label pods --all <key_1>=<value_1>

    Par exemple :

    Copy to Clipboard Toggle word wrap
    $ oc label pods --all status=unhealthy

5.2.3. Comprendre comment marquer les nœuds comme non planifiables ou planifiables

Par défaut, les nœuds sains avec un statut Ready sont marqués comme planifiables, ce qui signifie que vous pouvez placer de nouveaux pods sur le nœud. Le fait de marquer manuellement un nœud comme non planifiable empêche la planification de nouveaux modules sur ce nœud. Les pods existants sur le nœud ne sont pas affectés.

  • La commande suivante marque un ou plusieurs nœuds comme non ordonnançables :

    Exemple de sortie

    Copy to Clipboard Toggle word wrap
    $ oc adm cordon <node>

    Par exemple :

    Copy to Clipboard Toggle word wrap
    $ oc adm cordon node1.example.com

    Exemple de sortie

    Copy to Clipboard Toggle word wrap
    node/node1.example.com cordoned
    
    NAME                 LABELS                                        STATUS
    node1.example.com    kubernetes.io/hostname=node1.example.com      Ready,SchedulingDisabled

  • La commande suivante marque un ou plusieurs nœuds non ordonnançables comme ordonnançables :

    Copy to Clipboard Toggle word wrap
    oc adm uncordon <node1> $ oc adm uncordon <node1>

    Au lieu de spécifier des noms de nœuds spécifiques (par exemple, <node>), vous pouvez utiliser l'option --selector=<node_selector> pour marquer les nœuds sélectionnés comme ordonnançables ou non ordonnançables.

5.2.4. Suppression de nœuds

5.2.4.1. Suppression de nœuds d'une grappe

Lorsque vous supprimez un nœud à l'aide de la CLI, l'objet nœud est supprimé dans Kubernetes, mais les pods qui existent sur le nœud ne sont pas supprimés. Tous les pods nus qui ne sont pas soutenus par un contrôleur de réplication deviennent inaccessibles à OpenShift Container Platform. Les pods soutenus par des contrôleurs de réplication sont replanifiés sur d'autres nœuds disponibles. Vous devez supprimer les pods de manifeste locaux.

Procédure

Pour supprimer un nœud du cluster OpenShift Container Platform, modifiez l'objet MachineSet approprié :

Note

Si vous exécutez un cluster sur du métal nu, vous ne pouvez pas supprimer un nœud en modifiant les objets MachineSet. Les ensembles de machines de calcul ne sont disponibles que lorsqu'un cluster est intégré à un fournisseur de cloud. Au lieu de cela, vous devez déprogrammer et vidanger le nœud avant de le supprimer manuellement.

  1. Affichez les ensembles de machines de calcul qui se trouvent dans la grappe :

    Copy to Clipboard Toggle word wrap
    $ oc get machinesets -n openshift-machine-api

    Les ensembles de machines de calcul sont répertoriés sous la forme <clusterid>-worker-<aws-region-az>.

  2. Mettre à l'échelle l'ensemble des machines de calcul :

    Copy to Clipboard Toggle word wrap
    $ oc scale --replicas=2 machineset <machineset> -n openshift-machine-api

    Ou bien :

    Copy to Clipboard Toggle word wrap
    $ oc edit machineset <machineset> -n openshift-machine-api
    Astuce

    Vous pouvez également appliquer le YAML suivant pour mettre à l'échelle l'ensemble des machines de calcul :

    Copy to Clipboard Toggle word wrap
    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      name: <machineset>
      namespace: openshift-machine-api
    spec:
      replicas: 2

Ressources supplémentaires

5.2.4.2. Suppression de nœuds d'un cluster bare metal

Lorsque vous supprimez un nœud à l'aide de la CLI, l'objet nœud est supprimé dans Kubernetes, mais les pods qui existent sur le nœud ne sont pas supprimés. Tous les pods nus qui ne sont pas soutenus par un contrôleur de réplication deviennent inaccessibles à OpenShift Container Platform. Les pods soutenus par des contrôleurs de réplication sont replanifiés sur d'autres nœuds disponibles. Vous devez supprimer les pods de manifeste locaux.

Procédure

Supprimez un nœud d'un cluster OpenShift Container Platform fonctionnant sur du métal nu en effectuant les étapes suivantes :

  1. Marquer le nœud comme non ordonnançable :

    Copy to Clipboard Toggle word wrap
    $ oc adm cordon <node_name>
  2. Drainer tous les pods sur le nœud :

    Copy to Clipboard Toggle word wrap
    oc adm drain <node_name> --force=true

    Cette étape peut échouer si le nœud est hors ligne ou ne répond pas. Même si le nœud ne répond pas, il est possible qu'il exécute toujours une charge de travail qui écrit dans le stockage partagé. Pour éviter toute corruption de données, mettez le matériel physique hors tension avant de poursuivre.

  3. Supprimer le nœud de la grappe :

    Copy to Clipboard Toggle word wrap
    oc delete node <node_name> $ oc delete node <node_name>

    Bien que l'objet nœud soit désormais supprimé du cluster, il peut toujours rejoindre le cluster après un redémarrage ou si le service kubelet est redémarré. Pour supprimer définitivement le nœud et toutes ses données, vous devez le déclasser.

  4. Si vous avez mis le matériel physique hors tension, remettez-le sous tension pour que le nœud puisse rejoindre le cluster.
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat, Inc.