このトピックでは、v1beta1 API を使用してプロビジョニングされた TKG サービス クラスタの MachineHealthCheck を構成する方法について説明します。
v1beta1 クラスタの MachineHealthCheck
MachineHealthCheck は、健全でないマシンを修正するための条件を定義する Kubernetes クラスタ API リソースです。Kubernetes では、マシンは kubelet を実行できるカスタム リソースです。vSphere IaaS control plane では、Kubernetes マシン リソースが vSphere 仮想マシンによってバッキングされます。詳細については、アップストリームのドキュメントを参照してください。
TKG サービス を使用してクラスタをプロビジョニングすると、デフォルトの MachineHealthCheck オブジェクトが作成されます。1 つはすべての制御プレーン用、もう 1 つは各マシンのデプロイ用です。vSphere 8 Update 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>