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.
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.
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:
NotaQuesti 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'oggettoMachineHealthCheck
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.
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.
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.