이 항목에서는 v1beta1 API를 사용하여 프로비저닝된 TKG 서비스 클러스터에 대해 MachineHealthCheck를 구성하는 방법을 설명합니다.

v1beta1 클러스터에 대한 MachineHealthCheck

MachineHealthCheck는 비정상 시스템에 업데이트를 적용하기 위한 조건을 정의하는 Kubernetes Cluster API 리소스입니다. Kubernetes에서 시스템은 kubelet을 실행할 수 있는 사용자 지정 리소스입니다. vSphere IaaS control plane에서 Kubernetes 시스템 리소스는 vSphere 가상 시스템의 지원을 받습니다. 자세한 내용은 업스트림 설명서를 참조하십시오.

TKG 서비스를 사용하여 클러스터를 프로비저닝하면 시스템은 모든 제어부에 대해 하나씩, 시스템 배포마다 하나씩 기본 MachineHealthCheck 개체를 생성합니다. vSphere 8 업데이트 3부터는 v1beta1 클러스터에 대해 시스템 상태 점검을 구성할 수 있습니다. 지원되는 설정에는 다음이 포함됩니다.

  • maxUnhealthy
  • nodeStartupTimeout
  • unhealthyConditions
  • unhealthyRange
이 표에서는 지원되는 시스템 상태 점검 작업에 대해 설명합니다.
표 1. 시스템 상태 점검
필드 설명
maxUnhealthy

문자열

절대 숫자 또는 백분율

비정상 시스템 수가 이 값을 초과하면 업데이트 적용이 수행되지 않습니다.
nodeStartupTimeout

문자열

XhXmXs(시간, 분, 초) 형식의 기간

생성되는 시스템 중 클러스터에 가입하는 데 소요되는 기간보다 오래 걸리는 시스템은 실패한 것으로 간주되어 업데이트가 적용됩니다.
unhealthyConditions

unhealthyConditions 유형의 어레이 []

사용 가능한 조건 유형:

[Ready, MemoryPressure,DiskPressure, PIDPressure, NetworkUnavailable]

사용 가능한 조건 상태:

[True, False, Unknown]

제어부 노드가 비정상으로 간주되는지 여부를 결정하는 조건 목록입니다.
unhealthyRange 문자열

"선택기"가 정상이 아닌 것으로 선택한 시스템 수가 unhealthyRange 범위 내에 있는 경우에만 추가 업데이트 적용이 허용됩니다.

maxUnhealthy보다 우선합니다. 예를 들어 "[3-5]"는 (a) 비정상 시스템이 3개 이상 있고 (b) 비정상 시스템이 5개 이하로 있는 경우에만 업데이트 적용이 허용된다는 의미입니다.

참고: MachineHealthCheck 개체는 v1alpha3 클러스터에 대해 배포되지만 구성할 수 없습니다. 자세한 내용은 Kubectl을 사용하여 TKG 클러스터 시스템 상태 확인 항목을 참조하십시오.

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에 패치 적용

프로비저닝된 후 v1beta1 클러스터에 대한 MachineHealthCheck를 업데이트하려면 patch 메서드를 사용합니다.
경고: 이 지침은 기존 클러스터에 패치를 적용하는 일반적인 지침을 제공합니다. 사용하는 값은 사용 중인 환경 및 패치를 적용하려는 배포된 클러스터에 따라 다릅니다. Tanzu CLI를 사용하여 기존 클러스터에 대한 MachineHealthCheck에 패치를 적용하는 것이 좋습니다.
  1. 클러스터 리소스 정의에서 machineDeployment를 가져옵니다.
    kubectl get cluster CLUSTER_NAME -o yaml

    spec.topology.workers.machineDeployments 섹션에서 각 machineDeployment를 식별하는 값이 표시됩니다.

  2. 작업자 노드 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. 제어부 MachineHealthCheck를 삭제합니다.
    kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":false}}'
  4. 제어부 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%"}}]'
  5. 작업자 노드 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를 구성할 수 있습니다.

예를 들어 다음 명령을 실행하여 제어부 MachineHealthCheck 설정을 생성하거나 업데이트합니다.
tanzu cluster mhc control-plane set <cluster-name> --node-startup-timeout 2h7m10s
다음 명령을 실행하여 설정이 업데이트되고 조정되지 않았는지 확인합니다.
tanzu cluster mhc control-plane get <cluster-name>
다음 명령을 실행하여 시스템 배포 MachineHealthCheck 설정을 생성하거나 업데이트합니다.
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

get 및 set 외에도 시스템은 delete 작업을 지원합니다. 예:

제어부의 경우 다음 명령을 사용할 수 있습니다.
tanzu cluster mhc control-plane delete <cluster-name>
노드의 경우 다음 명령을 사용할 수 있습니다.
tanzu cluster mhc <cluster-name> --machine-deployment <machine deployment name>