配置 MachineHealthCheck

目录

概述

MachineHealthCheck 是 Cluster API 中的一个资源,允许用户定义在何种条件下集群中的 Machines 应被视为不健康。MachineHealthCheck 在管理集群中定义,并作用于特定的业务集群。

在定义 MachineHealthCheck 时,用户需要为他们定义的每个检查 Machine 的 Node 的条件指定一个超时时间。如果这些条件中的任何一个在超时时间内持续满足,则该 Machine 将被修复。默认情况下,修复 Machine 的操作应触发创建一个新的 Machine 来替代失败的 Machine,但提供者可以接入更复杂的外部修复方案。

WARNING

MachineHealthCheck 依赖于 Cluster API 的滚动更新机制。在滚动更新期间,任何之前挂载的磁盘都会被移除,并在新创建的机器上替换为新的磁盘。请确保集群功能或工作负载不依赖于原始磁盘上存储的数据。

前提条件

在尝试配置 MachineHealthCheck 之前,您应当拥有一个运行正常的管理集群,并且至少部署了一个 MachineDeployment 或 KubeadmControlPlane。

为 MachineDeployment 配置 MachineHealthCheck

要为 MachineDeployment 配置 MachineHealthCheck,您需要在管理集群中创建一个 MachineHealthCheck 资源。

---
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineHealthCheck
metadata:
  name: <machinehealthcheck-name>
  namespace: cpaas-system
spec:
  clusterName: <cluster-name>
  nodeStartupTimeout: 30m
  selector:
    matchExpressions:
    - key: cluster.x-k8s.io/deployment-name
      operator: Exists
  unhealthyConditions:
  - type: Ready
    status: Unknown
    timeout: 600s
  - type: Ready
    status: "False"
    timeout: 600s

为控制平面节点配置 MachineHealthCheck

---
apiVersion: cluster.x-k8s.io/v1beta1
kind: MachineHealthCheck
metadata:
  name: <control-plane-machinehealthcheck-name>
  namespace: cpaas-system
spec:
  clusterName: <cluster-name>
  maxUnhealthy: 1
  selector:
    matchLabels:
      cluster.x-k8s.io/control-plane: ""
  unhealthyConditions:
    - type: Ready
      status: Unknown
      timeout: 600s
    - type: Ready
      status: "False"
      timeout: 600s

参考

Configure a MachineHealthCheck