Cette rubrique décrit comment configurer MachineHealthCheck pour les clusters Service TKG provisionnés à l'aide de l'API v1beta1.

MachineHealthCheck pour les clusters v1beta1

MachineHealthCheck est une ressource d'API de cluster Kubernetes qui définit les conditions de correction des machines défectueuses. Dans Kubernetes, une machine est une ressource personnalisée qui peut exécuter kubelet. Dans vSphere IaaS control plane, une ressource de machine Kubernetes repose sur une machine virtuelle vSphere. Pour plus d'informations, reportez-vous à la documentation en amont.

Lorsque vous provisionnez un cluster à l'aide de Service TKG, le système crée des objets MachineHealthCheck par défaut, un pour tous les plans de contrôle et un pour chaque déploiement de machine. À partir de vSphere 8 Update 3, les contrôles de santé des machines peuvent être configurés pour les clusters v1beta1. Paramètres pris en charge, notamment :

  • maxUnhealthy
  • nodeStartupTimeout
  • unhealthyConditions
  • unhealthyRange
Le tableau décrit les opérations de contrôle de santé des machines prises en charge.
Tableau 1. Contrôles de santé des machines
Champ Valeur Description
maxUnhealthy

string

Nombre absolu ou pourcentage

La correction n'est pas effectuée lorsque le nombre de machines défectueuses dépasse la valeur.
nodeStartupTimeout

string

Durée au format XhXmXs (heures, minutes, secondes)

Toute machine créée qui prend plus de temps que la durée de jonction au cluster est considérée comme ayant échoué et sera corrigée.
unhealthyConditions

groupe [] de types unhealthyConditions

Types de condition disponibles :

[Ready, MemoryPressure,DiskPressure, PIDPressure, NetworkUnavailable]

État de condition disponible :

[True, False, Unknown]

Liste des conditions qui déterminent si un nœud de plan de contrôle est considéré comme défectueux.
unhealthyRange string

Toute autre correction n'est autorisée que si le nombre de machines sélectionnées par « selector » comme défectueuses se situe dans la plage unhealthyRange.

Est prioritaire par rapport à maxUnhealthy. Par exemple, « [3-5] » signifie que la correction ne sera autorisée que lorsqu'il y a au moins 3 machines défectueuses et qu'il y a au maximum 5 machines défectueuses.

Note : Les objets MachineHealthCheck sont déployés pour les clusters v1alpha3, mais ne sont pas configurables. Pour plus de détails, reportez-vous à la section Vérifier la santé de la machine du cluster TKG à l'aide de Kubectl.

Exemple de MachineHealthCheck

L'exemple suivant configure un machineHealthCheck pour un machineDeployment donné.
...
  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

Appliquer un correctif à un MachineHealthCheck à l'aide de Kubectl

Pour mettre à jour le MachineHealthCheck d'un cluster v1beta1 après son provisionnement, utilisez la méthode patch.
Attention : Ces instructions générales présentent l'application de correctifs à un cluster existant. Les valeurs que vous utilisez dépendent de votre environnement et du cluster déployé sur lequel vous appliquez un correctif. Envisagez d'utiliser la CLI Tanzu pour corriger le MachineHealthCheck d'un cluster existant.
  1. Obtenez le machineDeployment à partir de la définition de ressource du cluster.
    kubectl get cluster CLUSTER_NAME -o yaml

    Dans la section spec.topology.workers.machineDeployments, vous devez voir la valeur identifiant chaque machineDeployment.

  2. Supprimez le MachineHealthCheck du nœud worker.
    kubectl patch cluster <Cluster Name> -n <cluster namespace>  --type json -p='{"op": "replace", "path": "/spec/topology/workers/machineDeployments/<index>/machineHealthCheck", "value":{"enable":false}}'
  3. Supprimez le MachineHealthCheck du plan de contrôle.
    kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":false}}'
  4. Créez ou mettez à jour le MachineHealthCheck du plan de contrôle avec les paramètres souhaités.
    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. Créez ou mettez à jour le MachineHealthCheck du nœud worker avec les paramètres souhaités.
    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%"}}]'

Configurer un MachineHealthCheck à l'aide de la CLI Tanzu

Vous pouvez utiliser la CLI Tanzu pour configurer un MachineHealthCheck pour un cluster v1beta1.

Par exemple, exécutez la commande suivante pour créer ou mettre à jour les paramètres de MachineHealthCheck du plan de contrôle.
tanzu cluster mhc control-plane set <cluster-name> --node-startup-timeout 2h7m10s
Exécutez la commande suivante pour vérifier si le paramètre est mis à jour et non rapproché.
tanzu cluster mhc control-plane get <cluster-name>
Exécutez la commande suivante pour créer ou mettre à jour les paramètres de MachineHealthCheck du déploiement de machine.
tanzu cluster mhc node set <cluster-name> --machine-deployment node-pool-1 --node-startup-timeout 1h59m0s
Exécutez la commande suivante pour vérifier si le paramètre est mis à jour et non rapproché.
tanzu cluster mhc node get <cluster-name> -m <cluster-name>-node-pool-1-nr7r5

Outre GET et SET, le système prend en charge l'opération de suppression. Par exemple :

Pour le plan de contrôle, vous pouvez utiliser la commande suivante :
tanzu cluster mhc control-plane delete <cluster-name>
Pour le nœud, vous pouvez utiliser la commande suivante :
tanzu cluster mhc <cluster-name> --machine-deployment <machine deployment name>