本主题介绍了如何使用 Tanzu 命令行界面 (CLI) 为控制平面和工作节点创建、更新、检索和删除 MachineHealthCheck
对象。
有关详细信息,请参见 Tanzu CLI 命令参考中的 tanzu cluster machinehealthcheck
。
MachineHealthCheck
MachineHealthCheck
是一个控制器,可为计算机提供运行状况监控和自动修复。将在所有管理和工作负载集群中自动为控制平面和工作节点启用该功能。如果在通过单个计算机部署或旧版集群部署基于类集群时启用了控制器,Tanzu Kubernetes Grid 将在集群中创建两个默认 MachineHealthCheck
对象,一个用于控制平面节点,另一个用于工作节点。对于具有多个计算机部署的基于类的集群,Tanzu Kubernetes Grid 会为控制平面创建一个 MachineHealthCheck
对象,为每个计算机部署创建一个对象。这些对象是在与集群相同的命名空间中创建的。
如果停用控制器,则可以使用“创建或更新 MachineHealthCheck
对象”中的命令重新启用该控制器。还可以使用这些命令更新现有的 MachineHealthCheck
对象。
MachineHealthCheck
对象按照以下步骤为集群创建或更新 MachineHealthCheck
对象。
基于类的集群:
要为基于类的集群的控制平面创建默认MachineHealthCheck
对象,请执行以下操作:
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME
要为基于类的集群的工作节点创建默认 MachineHealthCheck
对象,请执行以下操作:
如果集群有单计算机部署,请运行:
tanzu cluster machinehealthcheck node set CLUSTER-NAME
如果集群有多个计算机部署,请针对每个计算机部署运行以下命令。这将为每个计算机部署创建默认 MachineHealthCheck
对象。
tanzu cluster machinehealthcheck node set CLUSTER-NAME --machine-deployment MACHINE-DEPLOYMENT-NAME
其中:
CLUSTER-NAME
是目标集群的名称。MACHINE-DEPLOYMENT-NAME
是计算机部署的名称。例如,md-0
。要检索计算机部署名称,请运行 kubectl get cluster CLUSTER-NAME -o yaml
,然后在输出中找到 spec.topology.workers.machineDeployments.name
。旧版集群:
要为旧版集群的控制平面创建默认 MachineHealthCheck
对象,请执行以下操作:
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --mhc-name MHC-NAME
要为旧版集群的工作节点创建默认 MachineHealthCheck
对象,请执行以下操作:
tanzu cluster machinehealthcheck node set CLUSTER-NAME --mhc-name MHC-NAME
其中:
CLUSTER-NAME
是目标集群的名称。MHC-NAME
是为 MachineHealthCheck
对象选择的名称。如果未指定,则名称将设置为 CLUSTER-NAME
。如果运行这两个命令,则需要指定 --mhc-name
。对于基于类的集群,将忽略 --mhc-name
标记。您还可以使用上述命令创建自定义的 MachineHealthCheck
对象或更新现有的 MachineHealthCheck
对象。要自定义或更新 MachineHealthCheck
对象,您可以指定以下一个或多个标记。
注意这些示例假定您为具有单个计算机部署的基于类的集群自定义或更新
MachineHealthCheck
设置。为具有多个计算机部署的基于类的集群的工作节点自定义或更新MachineHealthCheck
对象时,必须指定--machine-deployment
标记。对于旧版集群,如上所述指定--mhc-name
。
--match-labels
:此选项按标签键和值筛选计算机。您可以指定一个或多个标签限制。MachineHealthCheck
对象将应用于满足指定限制的所有计算机。格式化键-值对,如下所示:
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --match-labels "key1:value1,key2:value2"
tanzu cluster machinehealthcheck node set CLUSTER-NAME --match-labels "key1:value1,key2:value2"
--max-unhealthy
:如果不正常计算机数量超过使用此标记设置的值,则 MachineHealthCheck
控制器不会执行修复。--max-unhealthy
设置默认为 100%
。您可以为此标记指定绝对数字或百分比。
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --max-unhealthy "60%"
tanzu cluster machinehealthcheck node set CLUSTER-NAME --max-unhealthy "60%"
--node-startup-timeout
:该选项控制 MachineHealthCheck
控制器在考虑计算机不正常之前等待计算机加入集群的时间量。例如,以下命令将 --node-startup-timeout
选项设置为 21m
:
tanzu cluster machinehealthcheck control-plane set my-cluster --node-startup-timeout 21m
tanzu cluster machinehealthcheck node set my-cluster --node-startup-timeout 21m
如果计算机在指定的时间内无法加入集群,MachineHealthCheck
控制器将重新创建计算机。
--unhealthy-conditions
:此选项可以设置 Ready
、MemoryPressure
、DiskPressure
、PIDPressure
和 NetworkUnavailable
条件。MachineHealthCheck
控制器使用您设置的条件监控控制平面和工作节点的运行状况。要设置条件的状态,请使用 True
、False
或 Unknown
。例如:
tanzu cluster machinehealthcheck control-plane set my-cluster --unhealthy-conditions "Ready:False:5m,Ready:Unknown:5m"
tanzu cluster machinehealthcheck node set my-cluster --unhealthy-conditions "Ready:False:5m,Ready:Unknown:5m"
上例将 Ready
条件设置为 False:5m
和 Unknown:5m
。如果计算机保持 Unknown
或 False
状态的时间超过 5m
,MachineHealthCheck
控制器会将计算机视为不正常并重新创建。
MachineHealthCheck
对象按照以下步骤检索集群的 MachineHealthCheck
对象。对于基于类的集群,将忽略 --mhc-name
标记。
要检索目标集群的控制平面的 MachineHealthCheck
对象,请运行:
tanzu cluster machinehealthcheck control-plane get CLUSTER-NAME --mhc-name MHC-NAME
如果对象是使用默认名称创建的,或者如果您的目标是基于类的集群,请省略 --mhc-name
标记。
要检索目标集群的工作节点的 MachineHealthCheck
对象,请运行:
tanzu cluster machinehealthcheck node get CLUSTER-NAME --mhc-name MHC-NAME
如果对象是使用默认名称创建的,或者如果您的目标是基于类的集群,请省略 --mhc-name
标记。
MachineHealthCheck
对象按照以下步骤删除集群的 MachineHealthCheck
对象。
基于类的集群:
要删除基于类的集群的控制平面的 MachineHealthCheck
对象,请执行以下操作:
tanzu cluster machinehealthcheck control-plane delete CLUSTER-NAME
要删除基于类的集群的工作节点的 MachineHealthCheck
一个或多个对象,请执行以下操作:
如果集群有单计算机部署,请运行:
tanzu cluster machinehealthcheck node delete CLUSTER-NAME
如果集群有多个计算机部署,请针对每个计算机部署运行以下命令:
tanzu cluster machinehealthcheck node delete CLUSTER-NAME --machine-deployment MACHINE-DEPLOYMENT-NAME
旧版集群:
要删除旧版集群的控制平面的 MachineHealthCheck
对象,请执行以下操作:
tanzu cluster machinehealthcheck control-plane delete CLUSTER-NAME --mhc-name MHC-NAME
如果对象是使用默认名称创建的,则可以省略 --mhc-name
标记。
要删除旧版集群的工作节点的 MachineHealthCheck
对象,请运行:
tanzu cluster machinehealthcheck node delete CLUSTER-NAME --mhc-name MHC-NAME
如果对象是使用默认名称创建的,则可以省略 --mhc-name
标记。