本主题介绍如何为使用 v1beta1 API 置备的 TKG 服务 集群配置 MachineHealthCheck。
v1beta1 集群的 MachineHealthCheck
MachineHealthCheck 是一个 Kubernetes 集群 API 资源,它定义了用于修复不正常计算机的条件。在 Kubernetes 中,计算机是可以运行 kubelet 的自定义资源。在 vSphere IaaS control plane 中,Kubernetes 计算机资源由 vSphere 虚拟机提供。有关详细信息,请参阅上游 文档。
使用 TKG 服务 置备集群时,系统会创建默认 MachineHealthCheck 对象,一个对象用于所有控制平面,一个对象用于每个计算机部署。从 vSphere 8 Update 3 开始,可以为 v1beta1 集群配置计算机运行状况检查。支持的设置包括:
- maxUnhealthy
- nodeStartupTimeout
- unhealthyConditions
- unhealthyRange
字段 | 值 | 描述 |
---|---|---|
maxUnhealthy |
string 绝对数字或百分比 |
当不正常计算机的数量超过该值时,将不会执行修复。 |
nodeStartupTimeout |
string 以 |
如果所创建的任何计算机加入集群所用的时间超过此持续时间,则会将这些虚拟机视为出现故障并对其进行修复。 |
unhealthyConditions |
unhealthyConditions 类型的数组 [] 可用条件类型: [ 可用条件状态: [ |
用于确定控制平面节点是否被视为不正常的条件列表。 |
unhealthyRange |
string | 仅当被“选择器”判定为不正常的计算机数量在 优先级高于 |
MachineHealthCheck 示例
machineDeployment
配置
machineHealthCheck
。
... 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
使用 Kubectl 修补 MachineHealthCheck
MachineHealthCheck
,请使用
patch
方法。
MachineHealthCheck
。
- 从集群资源定义中获取
machineDeployment
。kubectl get cluster CLUSTER_NAME -o yaml
在
spec.topology.workers.machineDeployments
部分中,您应该会看到标识每个machineDeployment
的值。 - 删除工作节点 MachineHealthCheck。
kubectl patch cluster <Cluster Name> -n <cluster namespace> --type json -p='{"op": "replace", "path": "/spec/topology/workers/machineDeployments/<index>/machineHealthCheck", "value":{"enable":false}}'
- 删除控制平面 MachineHealthCheck。
kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":false}}'
- 使用所需设置创建或更新控制平面 MachineHealthCheck。
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%"}}]'
- 使用所需设置创建或更新工作节点 MachineHealthCheck。
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%"}}]'
使用 Tanzu CLI 配置 MachineHealthCheck
可以使用 Tanzu CLI 为 v1beta1 集群配置 MachineHealthCheck。
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
除了获取和设置之外,系统还支持删除操作。例如:
tanzu cluster mhc control-plane delete <cluster-name>对于节点,可以使用以下命令:
tanzu cluster mhc <cluster-name> --machine-deployment <machine deployment name>