Gérer les contrôles de santé des machines pour les clusters de charge de travail

Cette rubrique explique comment utiliser l'interface de ligne de commande (CLI) Tanzu pour créer, mettre à jour, récupérer et supprimer des objets MachineHealthCheck pour les nœuds worker et de plan de contrôle.

Pour plus d'informations, reportez-vous à la section tanzu cluster machinehealthcheck dans la Référence de commande de CLI Tanzu.

À propos de MachineHealthCheck

MachineHealthCheck est un contrôleur qui assure la surveillance de la santé et la réparation automatique des machines. Il est automatiquement activé dans tous les clusters de gestion et de charge de travail pour les nœuds de plan de contrôle et les nœuds worker. Si le contrôleur est activé lorsque vous déployez un cluster basé sur une classe avec un déploiement de machines unique ou un cluster hérité, Tanzu Kubernetes Grid crée deux objets par défaut MachineHealthCheck dans le cluster, un pour les nœuds de plan de contrôle et l'autre pour les nœuds worker. Pour les clusters basés sur une classe avec plusieurs déploiements de machines, Tanzu Kubernetes Grid crée un objet MachineHealthCheck pour le plan de contrôle et un objet pour chaque déploiement de machines. Ces objets sont créés dans le même espace de noms que le cluster.

Si vous désactivez le contrôleur, vous pouvez le réactiver à l'aide des commandes documentées dans la section Créer ou mettre à jour un objet MachineHealthCheck. Vous pouvez également utiliser ces commandes pour mettre à jour les objets MachineHealthCheck existants.

Créer ou mettre à jour un objet MachineHealthCheck

Suivez les étapes ci-dessous pour créer ou mettre à jour des objets MachineHealthCheck pour vos clusters.

  • Clusters basés sur une classe :

    • Pour créer l'objet par défaut MachineHealthCheck pour le plan de contrôle d'un cluster basé sur une classe :

      tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME
      
    • Pour créer l'objet par défaut MachineHealthCheck pour les nœuds worker d'un cluster basé sur une classe :

      • Si le cluster dispose d'un déploiement de machines unique, exécutez :

        tanzu cluster machinehealthcheck node set CLUSTER-NAME
        
      • Si le cluster dispose de plusieurs déploiements de machines, exécutez la commande suivante pour chaque déploiement de machines. Cela crée l'objet par défaut MachineHealthCheck pour chaque déploiement de machines.

        tanzu cluster machinehealthcheck node set CLUSTER-NAME --machine-deployment MACHINE-DEPLOYMENT-NAME
        

    Où :

    • CLUSTER-NAME est le nom du cluster cible.
    • MACHINE-DEPLOYMENT-NAME correspond au nom du déploiement de machines. Par exemple, md-0. Pour récupérer le nom du déploiement de machines, exécutez kubectl get cluster CLUSTER-NAME -o yaml, puis recherchez spec.topology.workers.machineDeployments.name dans la sortie.
  • Clusters hérités :

    • Pour créer l'objet par défaut MachineHealthCheck pour le plan de contrôle d'un cluster hérité :

      tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --mhc-name MHC-NAME
      
    • Pour créer l'objet par défaut MachineHealthCheck pour les nœuds worker d'un cluster hérité :

      tanzu cluster machinehealthcheck node set CLUSTER-NAME --mhc-name MHC-NAME
      

    Où :

    • CLUSTER-NAME est le nom du cluster cible.
    • MHC-NAME est un nom que vous choisissez pour l'objet MachineHealthCheck. S'il n'est pas spécifié, le nom est défini sur CLUSTER-NAME. Si vous exécutez ces deux commandes, la spécification de --mhc-name est requise. L'indicateur --mhc-name est ignoré pour les clusters basés sur une classe.

Vous pouvez également utiliser les commandes ci-dessus pour créer des objets MachineHealthCheck personnalisés ou pour mettre à jour des objets MachineHealthCheck existants. Pour personnaliser ou mettre à jour un objet MachineHealthCheck, vous pouvez spécifier un ou plusieurs des indicateurs ci-dessous.

Remarque

Ces exemples supposent que vous personnalisez ou mettez à jour vos paramètres MachineHealthCheck pour un cluster basé sur une classe avec un déploiement de machines unique. Lors de la personnalisation ou de la mise à jour de l'objet MachineHealthCheck pour les nœuds worker d'un cluster basé sur une classe avec plusieurs déploiements de machines, vous devez spécifier l'indicateur --machine-deployment. Pour les clusters hérités, spécifiez --mhc-name, comme décrit ci-dessus.

  • --match-labels : cette option filtre les machines par clés et valeurs d'étiquette. Vous pouvez spécifier une ou plusieurs contraintes d'étiquette. L'objet MachineHealthCheck est appliqué à toutes les machines qui répondent aux contraintes spécifiées. Formatez les paires clé-valeur comme suit :

    tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --match-labels "key1:value1,key2:value2"
    tanzu cluster machinehealthcheck node set CLUSTER-NAME --match-labels "key1:value1,key2:value2"
    
  • --max-unhealthy : Si le nombre de machines défectueuses dépasse la valeur que vous avez définie à l'aide de cet indicateur, le contrôleur MachineHealthCheck n'effectue pas de correction. Le paramètre --max-unhealthy est défini par défaut sur 100%. Vous pouvez spécifier un nombre absolu ou un pourcentage pour cet indicateur.

    tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --max-unhealthy "60%"
    tanzu cluster machinehealthcheck node set CLUSTER-NAME --max-unhealthy "60%"
    
  • --node-startup-timeout : cette option contrôle la durée pendant laquelle le contrôleur MachineHealthCheck attend qu'une machine rejoigne le cluster avant de considérer que la machine est défectueuse. Par exemple, les commandes ci-dessous définissent l'option --node-startup-timeout sur 21m :

    tanzu cluster machinehealthcheck control-plane set my-cluster --node-startup-timeout 21m
    tanzu cluster machinehealthcheck node set my-cluster --node-startup-timeout 21m
    

    Si une machine ne parvient pas à joindre le cluster dans le délai spécifié, le contrôleur MachineHealthCheck recrée la machine.

  • --unhealthy-conditions : cette option peut définir les conditions Ready, MemoryPressure, DiskPressure, PIDPressure et NetworkUnavailable. Le contrôleur MachineHealthCheck utilise les conditions que vous avez définies pour surveiller la santé de votre plan de contrôle et de vos nœuds worker. Pour définir l'état d'une condition, utilisez True, False ou Unknown. Par exemple :

    tanzu cluster machinehealthcheck control-plane set my-cluster --unhealthy-conditions "Ready:False:5m,Ready:Unknown:5m"
    tanzu cluster machinehealthcheck node set my-cluster --unhealthy-conditions "Ready:False:5m,Ready:Unknown:5m"
    

    L'exemple ci-dessus définit la condition Ready sur False:5m et Unknown:5m. Si une machine reste dans l'état Unknown ou False pendant plus de 5m, le contrôleur MachineHealthCheck considère que la machine est défectueuse et la recrée.

Récupérer un objet MachineHealthCheck

Suivez les étapes ci-dessous pour récupérer les objets MachineHealthCheck pour vos clusters. L'indicateur --mhc-name est ignoré pour les clusters basés sur une classe.

  • Pour récupérer l'objet MachineHealthCheck du plan de contrôle du cluster cible, exécutez :

    tanzu cluster machinehealthcheck control-plane get CLUSTER-NAME --mhc-name MHC-NAME
    

    Omettez l'indicateur --mhc-name si l'objet a été créé avec le nom par défaut ou si vous ciblez un cluster basé sur une classe.

  • Pour récupérer l'objet MachineHealthCheck des nœuds worker du cluster cible, exécutez :

    tanzu cluster machinehealthcheck node get CLUSTER-NAME --mhc-name MHC-NAME
    

    Omettez l'indicateur --mhc-name si l'objet a été créé avec le nom par défaut ou si vous ciblez un cluster basé sur une classe.

Supprimer un objet MachineHealthCheck

Suivez les étapes ci-dessous pour supprimer les objets MachineHealthCheck pour vos clusters.

  • Clusters basés sur une classe :

    • Pour supprimer l'objet MachineHealthCheck pour le plan de contrôle d'un cluster basé sur une classe :

      tanzu cluster machinehealthcheck control-plane delete CLUSTER-NAME
      
    • Pour supprimer le ou les objets MachineHealthCheck pour les nœuds worker d'un cluster basé sur une classe :

      • Si le cluster dispose d'un déploiement de machines unique, exécutez :

        tanzu cluster machinehealthcheck node delete CLUSTER-NAME
        
      • Si le cluster dispose de plusieurs déploiements de machines, exécutez la commande suivante pour chacun d'entre eux :

        tanzu cluster machinehealthcheck node delete CLUSTER-NAME --machine-deployment MACHINE-DEPLOYMENT-NAME
        
  • Clusters hérités :

    • Pour supprimer l'objet MachineHealthCheck pour le plan de contrôle d'un cluster hérité :

      tanzu cluster machinehealthcheck control-plane delete CLUSTER-NAME --mhc-name MHC-NAME
      

      Omettez l'indicateur --mhc-name si l'objet a été créé avec le nom par défaut.

    • Pour supprimer l'objet MachineHealthCheck des nœuds worker du cluster hérité, exécutez :

      tanzu cluster machinehealthcheck node delete CLUSTER-NAME --mhc-name MHC-NAME
      

      Omettez l'indicateur --mhc-name si l'objet a été créé avec le nom par défaut.

check-circle-line exclamation-circle-line close-line
Scroll to top icon