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
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 |
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 : [ État de condition disponible : [ |
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 Est prioritaire par rapport à |
Exemple de MachineHealthCheck
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
MachineHealthCheck
d'un cluster v1beta1 après son provisionnement, utilisez la méthode
patch
.
MachineHealthCheck
d'un cluster existant.
- 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 chaquemachineDeployment
. - 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}}'
- 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}}'
- 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%"}}]'
- 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.
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
Outre GET et SET, le système prend en charge l'opération de suppression. Par exemple :
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>