Passer des nœuds en mode maintenance

Lorsque vous devez réparer ou gérer des nœuds, vous devez d'abord les passer en mode maintenance. Le fait de passer des nœuds en mode maintenance draine leurs pods/charges de travail de manière sécurisée et les exclut de la planification des pods. En mode maintenance, vous pouvez travailler sur vos nœuds sans risque de perturber le trafic de pod.

Fonctionnement

GKE sur Bare Metal permet de faire passer les nœuds en mode maintenance. Cette approche permet aux autres composants de cluster de savoir correctement que le nœud est en mode de maintenance. Lorsque vous placez un nœud en mode de maintenance, aucun pod supplémentaire ne peut être planifié sur le nœud et les pods existants sont arrêtés.

Au lieu d'utiliser le mode de maintenance, vous pouvez utiliser manuellement des commandes Kubernetes telles que kubectl cordon et kubectl drain sur un nœud spécifique. Si vous exécutez GKE sur une version Bare Metal 1.12.0 (anthosBareMetalVersion: 1.12.0) ou une version antérieure, consultez le problème connu dans la section Nœuds non marqués comme programmables si vous n'utilisez pas la procédure en mode maintenance.

Lorsque vous utilisez le processus en mode maintenance, GKE sur Bare Metal effectue les opérations suivantes:

  • Des rejets de nœuds sont ajoutés aux nœuds spécifiés pour indiquer qu'aucun pod ne peut être planifié ou exécuté sur les nœuds.

  • Un délai d'expiration de 20 minutes est appliqué pour garantir que les nœuds ne restent pas bloqués à attendre l'arrêt des pods. Les pods peuvent ne pas s'arrêter s'ils sont configurés pour tolérer tous les rejets ou s'ils disposent de finaliseurs. GKE sur Bare Metal tente d'arrêter tous les pods, mais si le délai avant expiration est dépassé, le nœud passe en mode de maintenance. Ce délai avant expiration empêche les pods en cours d'exécution de bloquer les mises à niveau.

Placer un nœud en mode de maintenance

Choisissez les nœuds que vous souhaitez passer en mode maintenance en spécifiant des plages d'adresses IP pour les nœuds sélectionnés sous maintenanceBlocks dans votre fichier de configuration de cluster. Les nœuds que vous choisissez doivent être prêts et opérationnels dans le cluster.

Pour passer des nœuds en mode maintenance, procédez comme suit :

  1. Modifiez le fichier de configuration du cluster pour sélectionner les nœuds à passer en mode maintenance.

    Vous pouvez modifier le fichier de configuration avec l'éditeur de votre choix ou modifier directement la ressource personnalisée du cluster en exécutant la commande suivante :

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME

    Remplacez les éléments suivants :

    • CLUSTER_NAMESPACE : espace de noms du cluster
    • CLUSTER_NAME : nom du cluster.
  2. Ajoutez la section maintenanceBlocks au fichier de configuration du cluster pour spécifier une adresse IP unique ou une plage d'adresses pour les nœuds que vous souhaitez passer en mode maintenance.

    L'exemple suivant montre comment sélectionner plusieurs nœuds en spécifiant une plage d'adresses IP :

    metadata:
      name: my-cluster
      namespace: cluster-my-cluster
    spec:
      maintenanceBlocks:
        cidrBlocks:
        - 172.16.128.1-172.16.128.64
    
  3. Enregistrez et appliquez la configuration de cluster mise à jour.

    GKE sur Bare Metal commence à mettre les nœuds en mode de maintenance.

  4. Exécutez la commande suivante pour obtenir l'état des nœuds de votre cluster :

    kubectl get nodes --kubeconfig=KUBECONFIG

    La réponse est semblable à ce qui suit :

    NAME                       STATUS   ROLES           AGE     VERSION
    user-anthos-baremetal-01   Ready    control-plane   2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-04   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-05   Ready    worker          2d22h   v1.27.4-gke.1600
    user-anthos-baremetal-06   Ready    worker          2d22h   v1.27.4-gke.1600
    

    Notez que les nœuds sont toujours programmables, mais les rejets empêchent la planification des pods sur le nœud (sans tolérance appropriée).

  5. Exécutez la commande suivante pour obtenir le nombre de nœuds en mode maintenance :

    kubectl get nodepools --kubeconfig ADMIN_KUBECONFIG
    

    La réponse doit ressembler à l'exemple suivant:

    NAME   READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
    np1    3       0             0         1                  0
    

    La colonne UNDERMAINTENANCE de cet exemple montre qu'un nœud est en mode maintenance.

    GKE sur Bare Metal ajoute également les rejets suivants aux nœuds lorsqu'ils sont mis en mode de maintenance:

    • baremetal.cluster.gke.io/maintenance:NoExecute
    • baremetal.cluster.gke.io/maintenance:NoSchedule

Mode de facturation et de maintenance

La facturation de GKE sur Bare Metal est basée sur le nombre de processeurs virtuels dont dispose votre cluster pour les nœuds capables d'exécuter des charges de travail. Lorsque vous mettez un nœud en mode maintenance, les rejets NoExecute et NoSchedule sont ajoutés au nœud, mais ils ne désactivent pas la facturation. Après avoir placé un nœud en mode de maintenance, marquez-le comme non programmable (kubectl cordon NODE_NAME). Une fois qu'un nœud est marqué comme non programmable, le nœud et les processeurs virtuels associés sont exclus de la facturation.

Comme indiqué sur la page des tarifs, vous pouvez utiliser kubectl pour connaître la capacité de processeurs virtuels (utilisée pour la facturation Anthos) de chacun de vos clusters d'utilisateur. La commande ne tient pas compte du fait que le nœud soit programmable ou non. Elle fournit un nombre de processeurs virtuels par nœud uniquement.

Pour identifier le nombre de processeurs virtuels par nœud pour votre cluster d'utilisateur:

kubectl get nodes \
    --kubeconfig USER_KUBECONFIG \
    -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"} \
    {.status.capacity.cpu}{\"\n\"}{end}"

Remplacez USER_KUBECONFIG par le chemin d'accès au fichier kubeconfig de votre cluster d'utilisateur.

Supprimer un nœud du mode de maintenance

Pour supprimer des nœuds du mode maintenance, procédez comme suit :

  1. Modifiez le fichier de configuration du cluster pour effacer les nœuds que vous souhaitez supprimer du mode maintenance.

    Vous pouvez modifier le fichier de configuration avec l'éditeur de votre choix ou modifier directement la ressource personnalisée du cluster en exécutant la commande suivante :

    kubectl -n CLUSTER_NAMESPACE edit cluster CLUSTER_NAME

    Remplacez les éléments suivants :

    • CLUSTER_NAMESPACE : espace de noms du cluster
    • CLUSTER_NAME : nom du cluster.
  2. Modifiez les adresses IP pour supprimer des nœuds spécifiques du mode maintenance ou supprimez la section maintenanceBlocks pour supprimer tous les nœuds du mode maintenance.

  3. Enregistrez et appliquez la configuration de cluster mise à jour.

  4. Utilisez les commandes kubectl pour vérifier l'état de vos nœuds.