In questo argomento viene descritto come configurare MachineHealthCheck per i cluster Servizio TKG con provisioning eseguito mediante l'API v1beta1.
MachineHealthCheck per i cluster v1beta1
MachineHealthCheck è una risorsa API del cluster Kubernetes che definisce le condizioni per la correzione delle macchine non integre. In Kubernetes una macchina è una risorsa personalizzata che può eseguire kubelet. In vSphere IaaS control plane, una risorsa macchina Kubernetes è supportata da una macchina virtuale vSphere. Per ulteriori informazioni, fare riferimento alla documentazione a monte.
Quando si esegue il provisioning di un cluster tramite Servizio TKG, il sistema crea oggetti MachineHealthCheck predefiniti, uno per tutti i piani di controllo e uno per la distribuzione di ogni macchina. A partire da vSphere 8 Update 3, i controlli dello stato delle macchine sono configurabili per i cluster v1beta1. Le impostazioni supportate includono le seguenti:
- maxUnhealthy
- nodeStartupTimeout
- unhealthyConditions
- unhealthyRange
Campo | Valore | Descrizione |
---|---|---|
maxUnhealthy |
stringa Numero assoluto o percentuale |
La correzione non verrà eseguita quando il numero di macchine non integre supera il valore. |
nodeStartupTimeout |
stringa Durata nel formato |
Tutte le macchine create che impiegano più tempo di quanto previsto per unirsi al cluster vengono considerate come non riuscite e verranno corrette. |
unhealthyConditions |
array [] di tipi unhealthyConditions Tipi di condizioni disponibili: [ Stato condizione disponibile: [ |
Elenco delle condizioni che determinano se un nodo del piano di controllo è considerato non integro. |
unhealthyRange |
stringa | Qualsiasi ulteriore correzione è consentita solo se il numero di macchine selezionate da "selettore" come non integre rientra nell'intervallo di Ha la precedenza rispetto a |
Esempio di MachineHealthCheck
machineHealthCheck
per una determinata
machineDeployment
.
... topology: class: tanzukubernetescluster version: v1.28.8---vmware.1-fips.1-tkg.2 controlPlane: machineHealthCheck: enable: true maxUnhealthy: 100% nodeStartupTimeout: 4h0m0s unhealthyConditions: - status: Unknown timeout: 5m0s type: Ready - status: "False" timeout: 12m0s type: Ready ... workers: machineDeployments: - class: node-pool failureDomain: np1 machineHealthCheck: enable: true maxUnhealthy: 100% nodeStartupTimeout: 4h0m0s unhealthyConditions: - status: Unknown timeout: 5m0s type: Ready - status: "False" timeout: 12m0s type: Ready
Installazione di patch a MachineHealthCheck utilizzando Kubectl
MachineHealthCheck
per un cluster v1beta1 dopo che ne è stato eseguito il provisioning, utilizzare il metodo
patch
.
MachineHealthCheck
per un cluster esistente.
- Recuperare
machineDeployment
dalla definizione della risorsa del cluster.kubectl get cluster CLUSTER_NAME -o yaml
Nella sezione
spec.topology.workers.machineDeployments
, dovrebbe essere visualizzato il valore che identifica ognimachineDeployment
. - Eliminare il nodo di lavoro MachineHealthCheck.
kubectl patch cluster <Cluster Name> -n <cluster namespace> --type json -p='{"op": "replace", "path": "/spec/topology/workers/machineDeployments/<index>/machineHealthCheck", "value":{"enable":false}}'
- Eliminare il piano di controllo MachineHealthCheck.
kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":false}}'
- Creare o aggiornare il piano di controllo MachineHealthCheck con le impostazioni desiderate.
kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='[{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":true,"nodeStartupTimeout":"1h58m","unhealthyConditions":[{"status":"Unknown","timeout":"5m10s","type":"Unknown"},{"status":"Unknown","timeout":"5m0s","type":"Ready"}],"maxUnhealthy":"100%"}}]'
- Creare o aggiornare il nodo di lavoro MachineHealthCheck con le impostazioni desiderate.
kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='[{"op": "replace", "path": "/spec/topology/workers/machineDeployments/<index>/machineHealthCheck", "value":{"enable":true,"nodeStartupTimeout":"1h58m","unhealthyConditions":[{"status":"Unknown","timeout":"5m10s","type":"Unknown"},{"status":"Unknown","timeout":"5m0s","type":"Ready"}],"maxUnhealthy":"100%"}}]'
Configurazione di MachineHealthCheck mediante la CLI di Tanzu
È possibile utilizzare la CLI di Tanzu per configurare MachineHealthCheck per un cluster v1beta1.
tanzu cluster mhc control-plane set <cluster-name> --node-startup-timeout 2h7m10s
tanzu cluster mhc control-plane get <cluster-name>
tanzu cluster mhc node set <cluster-name> --machine-deployment node-pool-1 --node-startup-timeout 1h59m0s
tanzu cluster mhc node get <cluster-name> -m <cluster-name>-node-pool-1-nr7r5
Oltre a get e set, il sistema supporta l'operazione di eliminazione. Ad esempio:
tanzu cluster mhc control-plane delete <cluster-name>Per il nodo, è possibile eseguire il comando seguente:
tanzu cluster mhc <cluster-name> --machine-deployment <machine deployment name>