Gestione dei controlli di integrità delle macchine per i cluster del carico di lavoro

Questo argomento spiega come utilizzare la CLI (Command Line Interface) di Tanzu per creare, aggiornare, recuperare ed eliminare gli oggetti MachineHealthCheck per il piano di controllo e i nodi di lavoro.

Per ulteriori informazioni, vedere tanzu cluster machinehealthcheck in Informazioni di riferimento sui comandi della CLI di Tanzu.

Informazioni su MachineHealthCheck

MachineHealthCheck è un controller che consente di monitorare e riparare automaticamente l'integrità per le macchine. Viene abilitato automaticamente in tutti i cluster di gestione e del carico di lavoro per i nodi del piano di controllo e i nodi worker. Se il controller è abilitato quando si distribuisce un cluster basato sulla classe con una distribuzione a macchina singola o un cluster legacy, Tanzu Kubernetes Grid crea due oggetti MachineHealthCheck predefiniti nel cluster, uno per i nodi del piano di controllo e uno per i nodi di lavoro. Per i cluster basati sulla classe con più distribuzioni di macchine, Tanzu Kubernetes Grid crea un oggetto MachineHealthCheck per il piano di controllo e uno per la distribuzione di ogni macchina. Questi oggetti vengono creati nello stesso spazio dei nomi del cluster.

Se si disattiva il controller, è possibile riabilitarlo utilizzando i comandi indicati in Creazione o aggiornamento di un oggetto MachineHealthCheck. È inoltre possibile utilizzare i comandi per aggiornare gli oggetti MachineHealthCheck esistenti.

Creazione o aggiornamento di un oggetto MachineHealthCheck

Eseguire i passaggi seguenti per creare o aggiornare gli oggetti MachineHealthCheck per i cluster.

  • Cluster basati sulla classe:

    • Per creare l'oggetto MachineHealthCheck predefinito per il piano di controllo di un cluster basato sulla classe:

      tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME
      
    • Per creare l'oggetto MachineHealthCheck predefinito per i nodi di lavoro di un cluster basato sulla classe:

      • Se il cluster ha una distribuzione a macchina singola, eseguire:

        tanzu cluster machinehealthcheck node set CLUSTER-NAME
        
      • Se il cluster include più distribuzioni di macchine, eseguire il comando seguente per ogni distribuzione di macchina. Verrà creato l'oggetto MachineHealthCheck predefinito per la distribuzione di ogni macchina.

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

    In cui:

    • CLUSTER-NAME è il nome del cluster di destinazione.
    • MACHINE-DEPLOYMENT-NAME è il nome della distribuzione della macchina. Ad esempio md-0. Per recuperare il nome della distribuzione della macchina, eseguire kubectl get cluster CLUSTER-NAME -o yaml e quindi individuare spec.topology.workers.machineDeployments.name nell'output.
  • Cluster legacy:

    • Per creare l'oggetto MachineHealthCheck predefinito per il piano di controllo di un cluster legacy:

      tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --mhc-name MHC-NAME
      
    • Per creare l'oggetto MachineHealthCheck predefinito per i nodi di lavoro di un cluster legacy:

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

    In cui:

    • CLUSTER-NAME è il nome del cluster di destinazione.
    • MHC-NAME è un nome scelto per l'oggetto MachineHealthCheck. Se non è specificato, il nome viene impostato su CLUSTER-NAME. Se si eseguono entrambi i comandi, è necessario specificare --mhc-name. Il flag --mhc-name viene ignorato per i cluster basati sulla classe.

È inoltre possibile utilizzare i comandi precedenti per creare oggetti MachineHealthCheck personalizzati o aggiornare oggetti MachineHealthCheck esistenti. Per personalizzare o aggiornare un oggetto MachineHealthCheck, è possibile specificare uno o più dei flag seguenti:

Nota

Questi esempi presuppongono che si stiano personalizzando o aggiornando le impostazioni di MachineHealthCheck per un cluster basato sulla classe con una distribuzione di una singola macchina. Quando si personalizza o si aggiorna l'oggetto MachineHealthCheck per i nodi di lavoro di un cluster basato sulla classe con più distribuzioni di macchine, è necessario specificare il flag --machine-deployment. Per i cluster legacy, specificare --mhc-name come descritto in precedenza.

  • --match-labels: Questa opzione filtra le macchine in base alle chiavi e ai valori delle etichette. È possibile specificare uno o più vincoli di etichetta. L'oggetto MachineHealthCheck viene applicato a tutte le macchine che soddisfano i vincoli specificati. Formattare le coppie chiave-valore come segue:

    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: Se il numero di macchine non integre supera il valore impostato con questo flag, il controller MachineHealthCheck non esegue la correzione. L'impostazione predefinita di --max-unhealthy è automaticamente 100%. È possibile specificare un numero assoluto o una percentuale per questo flag.

    tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --max-unhealthy "60%"
    tanzu cluster machinehealthcheck node set CLUSTER-NAME --max-unhealthy "60%"
    
  • --node-startup-timeout: Questa opzione controlla la quantità di tempo per cui il controller MachineHealthCheck attende che una macchina venga inserita nel cluster prima di considerare la macchina non integra. Ad esempio i comandi seguenti impostano l'opzione --node-startup-timeout su 21m:

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

    Se l'inserimento di una macchina non riesce entro la quantità di tempo specificata, il controller MachineHealthCheck ricrea la macchina.

  • --unhealthy-conditions: Questa opzione può impostare le condizioni Ready, MemoryPressure, DiskPressure, PIDPressure e NetworkUnavailable. Il controller MachineHealthCheck utilizza le condizioni impostate per monitorare l'integrità dei nodi del piano di controllo e dei nodi worker. Per impostare lo stato di una condizione, utilizzare True, False o Unknown. Ad esempio:

    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'esempio precedente imposta la condizione Ready su False:5m e Unknown:5m. Se una macchina rimane nello stato Unknown o False per un tempo superiore a 5m, il controller MachineHealthCheck considera la macchina non integra e la ricrea.

Recupero di un oggetto MachineHealthCheck

Eseguire i passaggi seguenti per recuperare oggetti MachineHealthCheck per i cluster. Il flag --mhc-name viene ignorato per i cluster basati sulla classe.

  • Per recuperare l'oggetto MachineHealthCheck per il piano di controllo del cluster di destinazione, eseguire:

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

    Omettere il flag --mhc-name se l'oggetto è stato creato con il nome predefinito o se la destinazione è un cluster basato sulla classe.

  • Per recuperare l'oggetto MachineHealthCheck per i nodi worker del cluster di destinazione, eseguire:

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

    Omettere il flag --mhc-name se l'oggetto è stato creato con il nome predefinito o se la destinazione è un cluster basato sulla classe.

Eliminazione di un oggetto MachineHealthCheck

Eseguire i passaggi seguenti per eliminare gli oggetti MachineHealthCheck per i cluster.

  • Cluster basati sulla classe:

    • Per eliminare l'oggetto MachineHealthCheck per il piano di controllo di un cluster basato sulla classe:

      tanzu cluster machinehealthcheck control-plane delete CLUSTER-NAME
      
    • Per eliminare gli oggetti MachineHealthCheck per i nodi di lavoro di un cluster basato sulla classe:

      • Se il cluster ha una distribuzione a macchina singola, eseguire:

        tanzu cluster machinehealthcheck node delete CLUSTER-NAME
        
      • Se il cluster include più distribuzioni di macchine, eseguire il comando seguente per ogni distribuzione di macchina:

        tanzu cluster machinehealthcheck node delete CLUSTER-NAME --machine-deployment MACHINE-DEPLOYMENT-NAME
        
  • Cluster legacy:

    • Per eliminare l'oggetto MachineHealthCheck per il piano di controllo di un cluster legacy:

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

      Omettere il flag --mhc-name se l'oggetto è stato creato con il nome predefinito.

    • Per eliminare l'oggetto MachineHealthCheck per i nodi di lavoro del cluster legacy eseguire:

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

      Omettere il flag --mhc-name se l'oggetto è stato creato con il nome predefinito.

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