In diesem Thema wird die Konfiguration von MachineHealthCheck für TKG-Dienst-Cluster beschrieben, die mithilfe der v1beta1-API bereitgestellt werden.
MachineHealthCheck für v1beta1-Cluster
Bei MachineHealthCheck handelt es sich um die API-Ressource eines Kubernetes-Clusters, die Bedingungen für die Standardisierung fehlerhafter Maschinen definiert. In Kubernetes stellt eine Maschine eine benutzerdefinierte Ressource dar, die kubelet ausführen kann. Auf der vSphere IaaS control plane wird eine Kubernetes-Maschinenressource durch eine vSphere-VM gestützt. Weitere Informationen finden Sie in der Upstream-Dokumentation.
Wenn Sie einen Cluster mithilfe des TKG-Dienst bereitstellen, werden vom System standardmäßige MachineHealthCheck-Objekte erstellt – eines für alle Steuerungsebenen und eines für jede Maschinenbereitstellung. Ab vSphere 8 Update 3 können Maschinenintegritätsprüfungen für v1beta1-Cluster konfiguriert werden. Zu den unterstützten Einstellungen gehören:
- maxUnhealthy
- nodeStartupTimeout
- unhealthyConditions
- unhealthyRange
Bereich | Wert | Beschreibung |
---|---|---|
maxUnhealthy |
string Absolute Zahl oder ein Prozentsatz |
Die Standardisierung wird nicht durchgeführt, wenn die Anzahl der fehlerhaften Maschinen den Wert überschreitet. |
nodeStartupTimeout |
string Dauer im Format |
Jede zu erstellende Maschine, die beim Beitritt zum Cluster den angegebenen Zeitraum überschreitet, gilt als fehlgeschlagen und wird standardisiert. |
unhealthyConditions |
Array [] von UnhealthyConditions-Typen Verfügbare Bedingungstypen: [ Verfügbare Bedingungsstatuszustände: [ |
Liste der Bedingungen, die bestimmen, ob ein Steuerungsebenenknoten als fehlerhaft gilt. |
unhealthyRange |
string | Eine weitere Standardisierung ist nur zulässig, wenn die Anzahl der von „Selektor“ als nicht fehlerfrei ausgewählten Maschinen innerhalb des Bereichs von Hat Vorrang vor |
MachineHealthCheck – Beispiel
machineHealthCheck
für eine bestimmte
machineDeployment
konfiguriert.
... 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
Patchen von MachineHealthCheck mithilfe von Kubectl
MachineHealthCheck
für einen v1beta1-Cluster nach dessen Bereitstellung verwenden Sie die Methode
patch
.
MachineHealthCheck
für einen vorhandenen Cluster zu patchen.
- Rufen Sie die
machineDeployment
aus der Definition der Clusterressource ab.kubectl get cluster CLUSTER_NAME -o yaml
Im Abschnitt
spec.topology.workers.machineDeployments
sollte der jeweilige Wert für die entsprechendemachineDeployment
angezeigt werden. - Löschen Sie die MachineHealthCheck für den Worker-Knoten.
kubectl patch cluster <Cluster Name> -n <cluster namespace> --type json -p='{"op": "replace", "path": "/spec/topology/workers/machineDeployments/<index>/machineHealthCheck", "value":{"enable":false}}'
- Löschen Sie die MachineHealthCheck für die Steuerungsebene.
kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":false}}'
- Erstellen oder aktualisieren Sie die MachineHealthCheck für die Steuerungsebene mit den gewünschten Einstellungen.
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%"}}]'
- Erstellen oder aktualisieren Sie die MachineHealthCheck für den Worker-Knoten mit den gewünschten Einstellungen.
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%"}}]'
Konfigurieren von MachineHealthCheck mithilfe der Tanzu-CLI
Mithilfe der Tanzu-CLI können Sie MachineHealthCheck für einen v1beta1-Cluster erstellen.
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
Neben „get“ und „set“ wird vom System auch der Löschvorgang unterstützt. Beispiel:
tanzu cluster mhc control-plane delete <cluster-name>Für den Knoten können Sie beispielsweise folgenden Befehl verwenden:
tanzu cluster mhc <cluster-name> --machine-deployment <machine deployment name>