En este tema se describe cómo configurar MachineHealthCheck para clústeres de Servicio TKG aprovisionados mediante la API v1beta1.

MachineHealthCheck para clústeres v1beta1

MachineHealthCheck es un recurso de la API de clúster de Kubernetes que define las condiciones para corregir máquinas en mal estado. En Kubernetes, una máquina es un recurso personalizado que puede ejecutar kubelet. En vSphere IaaS control plane, un recurso de máquina de Kubernetes está respaldado por una máquina virtual de vSphere. Para obtener más información, consulte la documentación ascendente.

Al aprovisionar un clúster mediante Servicio TKG, el sistema crea objetos predeterminados MachineHealthCheck, uno para todos los planos de control y otro para cada implementación de máquina. A partir de vSphere 8 Update 3, se pueden configurar las comprobaciones de estado de las máquinas para los clústeres v1beta1. La configuración admitida incluye lo siguiente:

  • maxUnhealthy
  • nodeStartupTimeout
  • unhealthyConditions
  • unhealthyRange
En la tabla se describen las operaciones admitidas de comprobación de estado de máquinas.
Tabla 1. Comprobaciones de estado de máquinas
Campo Valor Descripción
maxUnhealthy

string

Número absoluto o porcentaje

No se realizará la corrección cuando el número de máquinas en mal estado supere el valor.
nodeStartupTimeout

string

Duración con el formato XhXmXs (horas, minutos, segundos)

Cualquier máquina que se esté creando que tarde más que el tiempo en unirse al clúster se considera con errores y se corregirá.
unhealthyConditions

matriz [] de tipos unhealthyConditions

Tipos de condición disponibles:

[Ready, MemoryPressure,DiskPressure, PIDPressure, NetworkUnavailable]

Estados de condición disponibles:

[True, False, Unknown]

Lista de condiciones que determinan si un nodo del plano de control se considera en mal estado.
unhealthyRange string

Cualquier otra corrección solo se permite si el número de máquinas seleccionadas por el "selector" como en mal estado está dentro del rango de unhealthyRange.

Tiene prioridad sobre maxUnhealthy. Por ejemplo: "[3-5]" significa que la corrección solo se permitirá cuando (a) haya al menos 3 máquinas en mal estado (y) (b) haya como máximo 5 máquinas en mal estado.

Nota: Los objetos MachineHealthCheck se implementan para clústeres v1alpha3, pero no se pueden configurar. Para obtener más información, consulte Comprobar el estado de la máquina del clúster de TKG con Kubectl.

Ejemplo de MachineHealthCheck

En el siguiente ejemplo, se configura machineHealthCheck para un machineDeployment determinado.
...
  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

Revisar MachineHealthCheck mediante Kubectl

Para actualizar la MachineHealthCheck de un clúster v1beta1 después de que se haya aprovisionado, utilice el método patch.
Precaución: Estas instrucciones proporcionan una orientación general sobre cómo aplicar revisiones a un clúster existente. Los valores que utilice dependerán del entorno y del clúster implementado en el que se apliquen revisiones. Considere la posibilidad de usar la CLI de Tanzu para aplicar revisiones a MachineHealthCheck de un clúster existente.
  1. Obtenga machineDeployment a partir de la definición de recursos del clúster.
    kubectl get cluster CLUSTER_NAME -o yaml

    En la sección spec.topology.workers.machineDeployments, debería ver el valor que identifica cada machineDeployment.

  2. Elimine el nodo de trabajo MachineHealthCheck.
    kubectl patch cluster <Cluster Name> -n <cluster namespace>  --type json -p='{"op": "replace", "path": "/spec/topology/workers/machineDeployments/<index>/machineHealthCheck", "value":{"enable":false}}'
  3. Elimine el plano de control MachineHealthCheck.
    kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":false}}'
  4. Cree o actualice el plano de control MachineHealthCheck con la configuración deseada.
    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%"}}]'
  5. Cree o actualice el nodo de trabajo MachineHealthCheck con la configuración deseada.
    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%"}}]'

Configurar MachineHealthCheck mediante la CLI de Tanzu

Puede utilizar la CLI de Tanzu a fin de configurar MachineHealthCheck para un clúster v1beta1.

Por ejemplo, ejecute el siguiente comando para crear o actualizar la configuración de MachineHealthCheck del plano de control.
tanzu cluster mhc control-plane set <cluster-name> --node-startup-timeout 2h7m10s
Ejecute el siguiente comando para comprobar si la configuración se actualizó y no se concilió.
tanzu cluster mhc control-plane get <cluster-name>
Ejecute el siguiente comando para crear o actualizar la configuración de MachineHealthCheck de la implementación de la máquina.
tanzu cluster mhc node set <cluster-name> --machine-deployment node-pool-1 --node-startup-timeout 1h59m0s
Ejecute el siguiente comando para comprobar si la configuración se actualizó y no se concilió.
tanzu cluster mhc node get <cluster-name> -m <cluster-name>-node-pool-1-nr7r5

Además de obtener y establecer, el sistema admite la operación de eliminación. Por ejemplo:

Para el plano de control puede usar el siguiente comando:
tanzu cluster mhc control-plane delete <cluster-name>
Por el nodo puede usar el siguiente comando:
tanzu cluster mhc <cluster-name> --machine-deployment <machine deployment name>