Réinitialisation des noeuds de processus actif

Découvrez comment redémarrer un noeud de processus actif dans un cluster Kubernetes que vous avez créé à l'aide de Kubernetes Engine (OKE).

Remarque

Vous pouvez uniquement cycler les noeuds pour redémarrer les noeuds de processus actif lors de l'utilisation de clusters améliorés. Reportez-vous à Utilisation des clusters améliorés et des clusters de base.

Vous pouvez cycler les noeuds pour les réinitialiser avec des formes de machine virtuelle et Bare Metal.

Vous pouvez cycler les noeuds pour réinitialiser les noeuds gérés et les noeuds autogérés.

Parfois, le redémarrage d'un noeud de processus actif est le meilleur moyen de résoudre un problème lié à l'instance de calcul hébergeant le noeud de processus actif. Le redémarrage d'un noeud de processus actif cycle l'instance de calcul, ce qui, par exemple, efface toutes les règles de l'instance de calcul iptables. Dans le cas d'instances de calcul de GPU Bare Metal, le redémarrage d'un noeud de processus actif peut résoudre des problèmes tels que :

  • Réduction des performances de travail ou ralentissement thermique, due à des températures de mémoire GPU élevées.
  • Rapports dont le nombre de GPU est inférieur au nombre attendu.
  • Erreurs NVLink, indiquées par l'échec du démarrage de NVIDIA Fabric Manager, ou par l'échec de l'exécution des travaux NCCL.

A l'aide de Kubernetes Engine, vous pouvez :

  • Réinitialisez des noeuds gérés spécifiques.
  • Réinitialisez des noeuds autogérés spécifiques.

Lorsque vous cyclez et réinitialisez un noeud de processus actif, Kubernetes Engine cordonne et draine automatiquement le noeud de processus actif avant de l'arrêter. L'instance de calcul hébergeant le noeud de processus actif est ensuite redémarrée. La commande d'arrêt envoyée à l'instance de calcul hébergeant le noeud de processus actif dépend du nombre de minutes que vous indiquez comme délai de grâce d'expulsion (durée pendant laquelle les noeuds de processus actif de cordon et de purge sont autorisés) :

  • Si vous indiquez un délai de grâce d'expulsion de zéro minute, une commande RESET est envoyée à l'instance de calcul. L'instance est immédiatement mise hors tension, puis sous tension.
  • Si vous indiquez une période de grâce d'expulsion supérieure à zéro minute, une commande SOFTRESET est envoyée à l'instance de calcul. Après 15 minutes pour permettre l'arrêt du système d'utilisation, l'instance est mise hors tension puis sous tension.

L'instance elle-même ne prend pas fin et conserve les mêmes OCID et adresse réseau.

Tenez compte des points suivants lors du cyclage pour réinitialiser les noeuds de processus actifs :

  • Vous devez cycler et réinitialiser les noeuds gérés individuellement. Vous ne pouvez pas sélectionner un pool de noeuds gérés, ni cycler et réinitialiser tous les noeuds gérés qu'il contient.
  • Vous pouvez utiliser la console, l'interface de ligne de commande ou l'API pour cycler et redémarrer les noeuds gérés.
  • Vous devez utiliser l'interface de ligne de commande ou l'API pour cycler et redémarrer les noeuds autogérés. Vous ne pouvez pas utiliser la console pour cycler et réinitialiser des noeuds autogérés.

Cordonage et purge lors du cyclage et de la réinitialisation des noeuds

Lorsque vous sélectionnez un noeud de processus actif individuel (noeud géré ou noeud autogéré) et que vous indiquez que vous souhaitez cycler et réinitialiser ce noeud, vous pouvez indiquer les options Cordon et purge. Dans le cas de noeuds gérés, les options Cordon et purge que vous spécifiez pour un noeud géré remplacent les options Cordon et purge spécifiées pour le pool de noeuds.

Pour plus d'informations, reportez-vous à la section Cordoning and Draining Managed Nodes Before Shut Down or Termination

Réinitialisation des noeuds de processus actif

  • Pour réinitialiser un noeud géré spécifique :

    1. Dans la page de liste Clusters, sélectionnez le nom du cluster qui contient le noeud de processus actif à réinitialiser. Si vous avez besoin d'aide pour trouver la page de liste ou le cluster, reportez-vous à Liste des clusters.
    2. Sélectionnez l'onglet Pools de noeuds, puis le nom du pool de noeuds contenant le noeud de processus actif à réinitialiser.
    3. Sélectionnez Noeud de cycle dans le menu Actions (trois points) en regard du noeud à réinitialiser.

    4. Dans la boîte de dialogue Noeud de cycle :
      1. Sélectionnez Réinitialiser le noeud dans la liste Options de recyclage.
      2. Indiquez quand et comment raccorder et vider le noeud de processus actif avant d'effectuer l'action de réinitialisation, en spécifiant :

        • Délai de grâce d'expulsion (minutes) : durée pendant laquelle le cordon et la purge du noeud de processus actif doivent être activés avant d'effectuer l'action. Acceptez la valeur par défaut (60 minutes, soit la valeur maximale) ou indiquez une autre valeur. Par exemple, vous pouvez autoriser 30 minutes à câbler un noeud de travail et à le vider de ses charges globales. Pour effectuer l'action immédiatement, sans cordonner ni drainer le noeud de processus actif, spécifiez 0 minute.
        • Forcer l'action après la période de grâce : indique si l'action doit être exécutée à la fin de la période de grâce d'expulsion, même si le noeud de processus actif n'a pas été correctement cordonné et vidé. Par défaut, cette option n'est pas sélectionnée.

        Reportez-vous à la section Cordoning and Draining Managed Nodes Before Shut Down or Termination.

      3. Sélectionnez Noeud de cycle pour démarrer l'opération de réinitialisation.
    5. Surveillez la progression de l'opération en affichant le statut de la demande de travail associée dans l'onglet Demandes de travail (reportez-vous à Obtention des détails d'une demande de travail).

  • Pour réinitialiser un noeud géré ou un noeud autogéré spécifique

    Pour réinitialiser un noeud géré ou un noeud autogéré spécifique, utilisez la commande oci ce cluster reboot-cluster-node et les paramètres requis :

    oci ce cluster reboot-cluster-node --cluster-id <cluster-ocid> --node-id <instance-ocid> [OPTIONS]

    Par exemple :

    oci ce cluster reboot-cluster-node --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd --node-id ocid1.instance.oc1.iad.anu__flq --node-eviction-settings "{\"evictionGraceDuration\": \"PT0M\",\"isForceActionAfterGraceDuration\": true}"
  • Pour redémarrer un noeud géré spécifique à l'aide de l'API OCI, procédez comme suit :

    Exécutez l'opération RebootClusterNode pour redémarrer un noeud géré spécifique à l'aide de l'API OCI.

    Pour redémarrer un noeud géré ou un noeud autogéré à l'aide de l'API Kubernetes, procédez comme suit :

    Remarque

    Pour utiliser l'API Kubernetes afin de redémarrer un noeud géré ou un noeud autogéré qui utilise une image personnalisée (plutôt qu'une image de plate-forme ou OKE), une stratégie IAM doit fournir un accès à l'image personnalisée. Si une telle stratégie n'existe pas déjà, créez-en une avec l'instruction de stratégie suivante :

    ALLOW any-user to read instance-images in TENANCY where request.principal.type = 'cluster'

    Reportez-vous à Configuration de stratégies pour la création et le déploiement de clusters.

    1. Créez un fichier YAML pour définir une ressource personnalisée NodeOperationRule, comme suit :
      apiVersion: oci.oraclecloud.com/v1beta1
      kind: NodeOperationRule
      metadata:
        name: <rule-name>
      spec:
        actions:
          - "reboot"
        nodeSelector:
          matchTriggerLabel:
            oke.oraclecloud.com/node_operation: "<value>"
          matchCustomLabels:
            <custom-key>: "<value>"
        maxParallelism: <n>
        nodeEvictionSettings:
          evictionGracePeriod: <number-of-minutes>
          isForceActionAfterGraceDuration: <true|false>
      

      où :

      • name: <rule-name> indique le nom de votre choix pour la ressource personnalisée NodeOperationRule. Par exemple, name: my-reboot-rule
      • oke.oraclecloud.com/node_operation: "<value>" indique la valeur de votre choix pour la clé de libellé oke.oraclecloud.com/node_operation. Les noeuds que vous souhaitez réinitialiser doivent être associés à cette paire clé-valeur d'étiquette. Par exemple :
            matchTriggerLabel:
              oke.oraclecloud.com/node_operation: "my-reboot-value"

        La valeur que vous indiquez pour la clé de libellé oke.oraclecloud.com/node_operation doit être conforme aux exigences de la rubrique Libellés et sélecteurs de la documentation Kubernetes. Seules les exigences basées sur l'égalité de Kubernetes sont prises en charge.

      • matchCustomLabels indique éventuellement un libellé personnalisé avec la paire clé-valeur de votre choix au format <custom-key>: "<value>". Vous pouvez éventuellement spécifier une paire clé-valeur de libellé personnalisée pour répondre à votre propre cas d'utilisation. Par exemple :
            matchCustomLabels:
              deployment: "green"

        La paire clé-valeur de libellé personnalisé que vous indiquez doit être conforme aux exigences de la rubrique Libellés et sélecteurs de la documentation Kubernetes. Seules les exigences basées sur l'égalité de Kubernetes sont prises en charge.

        Si vous spécifiez une paire clé-valeur de libellé personnalisée dans le manifeste, les noeuds ne sont réinitialisés que s'ils ont à la fois ce libellé personnalisé et le libellé oke.oraclecloud.com/node_operation: "<value>".

      • maxParallelism: <n> indique le nombre de noeuds de processus actif à redémarrer en parallèle, jusqu'à 20 au maximum.
      • evictionGracePeriod: <number-of-minutes> indique la durée pendant laquelle les noeuds de processus actif de cordon et de purge doivent être réinitialisés. Acceptez la valeur par défaut (60 minutes, soit la valeur maximale) ou indiquez une autre valeur. Par exemple, vous pouvez accorder 30 minutes aux nœuds de travail en cordon et les vider de leurs charges de travail. Pour réinitialiser immédiatement les noeuds de processus actifs, sans les raccorder ni les vider, indiquez 0 minute.
      • isForceActionAfterGraceDuration: <true|false> indique si les noeuds de processus actif doivent être réinitialisés à la fin de la période de grâce d'expulsion, même s'ils n'ont pas été correctement cordonnés et vidés. La valeur par défaut est false si elle n'est pas indiquée.

      Par exemple :

      apiVersion: oci.oraclecloud.com/v1beta1
      kind: NodeOperationRule
      metadata:
        name: my-reboot-rule
      spec:
        actions:
          - "reboot"
        nodeSelector:
          matchTriggerLabel:
            oke.oraclecloud.com/node_operation: "my-reboot-value"
          matchCustomLabels:
            deployment: "green"
        maxParallelism: 2
        nodeEvictionSettings:
          evictionGracePeriod: 60
          isForceActionAfterGraceDuration: true
      
    2. Utilisez kubectl pour appliquer le fichier yaml au cluster en saisissant la commande suivante :

      kubectl apply -f <filename>.yaml
    3. Utilisez kubectl pour confirmer que la ressource personnalisée NodeOperationRule a été créée en saisissant la commande suivante :

      kubectl get nor
    4. Utilisez kubectl pour ajouter au noeud un libellé indiquant la valeur de la clé de libellé oke.oraclecloud.com/node_operation en saisissant la commande suivante :

      kubectl label node <node-name> oke.oraclecloud.com/node_operation=<value>

      Par exemple :

      kubectl label node 10.0.10.53 oke.oraclecloud.com/node_operation=my-reboot-value
    5. Si vous avez inclus un élément matchCustomLabels dans le manifeste pour spécifier une paire clé-valeur de libellé personnalisée, utilisez kubectl pour ajouter un libellé au noeud qui spécifie la paire clé-valeur en saisissant ce qui suit :
      kubectl label node <node-name> <custom-key>=<value>

      Par exemple :

      kubectl label node 10.0.10.53 deployment=green
    6. (Facultatif) Vous pouvez afficher l'action de réinitialisation du noeud en cours en saisissant :

      kubectl describe nor <rule-name>
      Par exemple :
      kubectl describe nor my-reboot-rule
      Exemple de sortie :
      Name:         my-reboot-rule
      Namespace:   
      Labels:       <none>
      Annotations:  <none>
      API Version:  oci.oraclecloud.com/v1beta1
      Kind:         NodeOperationRule
      Metadata:
        Creation Timestamp:  2025-02-11T00:11:11Z
        Finalizers:
          nodeoperationrule.oci.oraclecloud.com/finalizers
        Generation:        1
        Resource Version:  244259806
        UID:               xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      Spec:
        Actions:
          reboot
        Max Parallelism:  2
        Node Eviction Settings:
          Eviction Grace Period:                 60
          Is Force Action After Grace Duration:  true
        Node Selector:
          Match Trigger Label:
            oke.oraclecloud.com/node_operation:  my-reboot-value
          Match Custom Label:
            deployment: green
      Status:
        Back Off Nodes:
        Canceled Nodes:
        In Progress Nodes:
        	Node Name:        10.0.10.53
          Work Request Id:  ocid1.clustersworkrequest.oc1.phx.aaaa______jda
        Pending Nodes:
        Succeeded Nodes:
      Events:
        Type    Reason                  Age   From               Message
        ----    ------                  ----  ----               -------
        Normal  StartedNodeOperation    1m   NodeOperationRule  Started node operation on node with work request ID: 10.0.10.105: ocid1.clustersworkrequest.oc1.phx.aaaa______jda
      ```