이 항목에서는 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
필드 | 값 | 설명 |
---|---|---|
maxUnhealthy |
문자열 절대 숫자 또는 백분율 |
비정상 시스템 수가 이 값을 초과하면 업데이트 적용이 수행되지 않습니다. |
nodeStartupTimeout |
문자열
|
생성되는 시스템 중 클러스터에 가입하는 데 소요되는 기간보다 오래 걸리는 시스템은 실패한 것으로 간주되어 업데이트가 적용됩니다. |
unhealthyConditions |
unhealthyConditions 유형의 어레이 [] 사용 가능한 조건 유형: [ 사용 가능한 조건 상태: [ |
제어부 노드가 비정상으로 간주되는지 여부를 결정하는 조건 목록입니다. |
unhealthyRange |
문자열 | "선택기"가 정상이 아닌 것으로 선택한 시스템 수가
|
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에 패치 적용
MachineHealthCheck
를 업데이트하려면
patch
메서드를 사용합니다.
MachineHealthCheck
에 패치를 적용하는 것이 좋습니다.
- 클러스터 리소스 정의에서
machineDeployment
를 가져옵니다.kubectl get cluster CLUSTER_NAME -o yaml
spec.topology.workers.machineDeployments
섹션에서 각machineDeployment
를 식별하는 값이 표시됩니다. - 작업자 노드 MachineHealthCheck를 삭제합니다.
kubectl patch cluster <Cluster Name> -n <cluster namespace> --type json -p='{"op": "replace", "path": "/spec/topology/workers/machineDeployments/<index>/machineHealthCheck", "value":{"enable":false}}'
- 제어부 MachineHealthCheck를 삭제합니다.
kubectl patch cluster <cluster-name> -n <cluster-namespace> --type json -p='{"op": "replace", "path": "/spec/topology/controlPlane/machineHealthCheck", "value":{"enable":false}}'
- 제어부 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%"}}]'
- 작업자 노드 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를 구성할 수 있습니다.
tanzu cluster mhc control-plane set <cluster-name> --node-startup-timeout 2h7m10s
tanzu cluster mhc control-plane get <cluster-name>
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>