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
Nella tabella vendono descritte le operazioni di controllo dello stato delle macchine supportate.
Tabella 1. Controlli dello stato delle macchine
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 XhXmXs (ore, minuti, secondi)

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:

[Ready, MemoryPressure,DiskPressure, PIDPressure, NetworkUnavailable]

Stato condizione disponibile:

[True, False, Unknown]

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 unhealthyRange.

Ha la precedenza rispetto a maxUnhealthy. Ad esempio: "[3-5]" indica che la correzione sarà consentita solo quando (a) sono presenti almeno 3 macchine non integre (e) (b) sono presenti al massimo 5 macchine non integre.

Nota: Gli oggetti MachineHealthCheck vengono distribuiti per i cluster v1alpha3, ma non sono configurabili. Per informazioni dettagliate, vedere Controllo dell'integrità della macchina cluster TKG tramite Kubectl.

Esempio di MachineHealthCheck

Nell'esempio seguente viene configurato un 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

Per aggiornare MachineHealthCheck per un cluster v1beta1 dopo che ne è stato eseguito il provisioning, utilizzare il metodo patch.
Attenzione: Queste istruzioni forniscono istruzioni generali sull'installazione di patch a un cluster esistente. I valori utilizzati dipendono dall'ambiente e dal cluster distribuito in cui si stanno installando le patch. È consigliabile utilizzare la CLI di Tanzu per installare patch a MachineHealthCheck per un cluster esistente.
  1. 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 ogni machineDeployment.

  2. 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}}'
  3. 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}}'
  4. 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%"}}]'
  5. 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.

Ad esempio, eseguire il comando seguente per creare o aggiornare le impostazioni MachineHealthCheck del piano di controllo.
tanzu cluster mhc control-plane set <cluster-name> --node-startup-timeout 2h7m10s
Eseguire il comando seguente per verificare se l'impostazione è aggiornata e non riconciliata.
tanzu cluster mhc control-plane get <cluster-name>
Eseguire il comando seguente per creare o aggiornare le impostazioni MachineHealthCheck della distribuzione della macchina.
tanzu cluster mhc node set <cluster-name> --machine-deployment node-pool-1 --node-startup-timeout 1h59m0s
Eseguire il comando seguente per verificare se l'impostazione è aggiornata e non riconciliata.
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:

Per il piano di controllo, è possibile utilizzare il comando seguente:
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>