管理工作负载集群的计算机运行状况检查

本主题介绍了如何使用 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:此选项可以设置 ReadyMemoryPressureDiskPressurePIDPressureNetworkUnavailable 条件。MachineHealthCheck 控制器使用您设置的条件监控控制平面和工作节点的运行状况。要设置条件的状态,请使用 TrueFalseUnknown。例如:

    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:5mUnknown:5m。如果计算机保持 UnknownFalse 状态的时间超过 5mMachineHealthCheck 控制器会将计算机视为不正常并重新创建。

检索 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 标记。

check-circle-line exclamation-circle-line close-line
Scroll to top icon