このトピックでは、制御プレーン ノードとワーカー ノードの MachineHealthCheck
オブジェクトを作成、更新、取得、および削除するために Tanzu コマンド ライン インターフェイス (CLI) を使用する方法について説明します。
詳細については、「Tanzu CLI コマンド リファレンス」の「tanzu cluster machinehealthcheck
」を参照してください。
MachineHealthCheck
についてMachineHealthCheck
は、マシンの健全性監視と自動修復を提供するコントローラです。これは、すべての管理クラスタおよびワークロード クラスタ内の制御プレーン ノードとワーカー ノードの両方に対して自動的に有効になります。単一のマシン展開を含むクラスベースのクラスタまたはレガシー クラスタを展開するときにコントローラが有効になっている場合、Tanzu Kubernetes Grid は、クラスタ内に 2 つのデフォルトの MachineHealthCheck
オブジェクトを作成します。1 つは制御プレーン ノード用、もう 1 つはワーカー ノード用です。複数のマシン展開を含むクラスベースのクラスタの場合、Tanzu Kubernetes Grid は制御プレーン用に 1 つの MachineHealthCheck
オブジェクトを作成し、各マシン展開用に 1 つ作成します。これらのオブジェクトは、クラスタと同じ名前空間に作成されます。
コントローラを無効にした場合、「MachineHealthCheck
オブジェクトの作成または更新」に記載されているコマンドを使用して、コントローラを再度有効にすることができます。これらのコマンドを使用して、既存の MachineHealthCheck
オブジェクトを更新することもできます。
MachineHealthCheck
オブジェクトの作成または更新次の手順に従って、クラスタの MachineHealthCheck
オブジェクトを作成または更新します。
クラスベースのクラスタ:
クラスベースのクラスタの制御プレーンのデフォルトの MachineHealthCheck
オブジェクトを作成するには、以下を実行します。
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME
クラスベースのクラスタのワーカー ノードのデフォルトの MachineHealthCheck
オブジェクトを作成するには、以下を実行します。
クラスタに単一のマシン展開がある場合は、以下を実行します。
tanzu cluster machinehealthcheck node set CLUSTER-NAME
クラスタに複数のマシン展開がある場合は、各マシン展開に対して次のコマンドを実行します。これにより、マシン展開ごとにデフォルトの MachineHealthCheck
オブジェクトが作成されます。
tanzu cluster machinehealthcheck node set CLUSTER-NAME --machine-deployment MACHINE-DEPLOYMENT-NAME
ここで、
CLUSTER-NAME
はターゲット クラスタの名前です。MACHINE-DEPLOYMENT-NAME
はマシン展開の名前です。たとえば、md-0
です。マシン展開名を取得するには、kubectl get cluster CLUSTER-NAME -o yaml
を実行し、出力で spec.topology.workers.machineDeployments.name
を見つけます。レガシー クラスタ:
レガシー クラスタの制御プレーンのデフォルトの MachineHealthCheck
オブジェクトを作成するには、以下を実行します。
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --mhc-name MHC-NAME
レガシー クラスタのワーカー ノードのデフォルトの MachineHealthCheck
オブジェクトを作成するには、以下を実行します。
tanzu cluster machinehealthcheck node set CLUSTER-NAME --mhc-name MHC-NAME
ここで、
CLUSTER-NAME
はターゲット クラスタの名前です。MHC-NAME
は、MachineHealthCheck
オブジェクトに対して選択した名前です。指定しない場合、名前は CLUSTER-NAME
に設定されます。これらのコマンドを両方とも実行している場合は、--mhc-name
を指定する必要があります。クラスベースのクラスタでは、--mhc-name
フラグは無視されます。上記のコマンドを使用して、カスタマイズされた MachineHealthCheck
オブジェクトを作成したり、既存の MachineHealthCheck
オブジェクトを更新したりすることもできます。MachineHealthCheck
オブジェクトをカスタマイズまたは更新するには、次のフラグを 1 つ以上指定できます。
注これらの例では、単一のマシン展開があるクラスベースのクラスタの
MachineHealthCheck
設定をカスタマイズまたは更新していることを前提としています。複数のマシン展開があるクラスベースのクラスタのワーカー ノードのMachineHealthCheck
オブジェクトをカスタマイズまたは更新している場合は、--machine-deployment
フラグを指定する必要があります。レガシー クラスタの場合は、上記のように--mhc-name
を指定します。
--match-labels
:このオプションは、ラベルのキーと値によってマシンをフィルタリングします。1 つまたは複数のラベルの制約を指定できます。MachineHealthCheck
オブジェクトは、指定された制約を満たすすべてのマシンに適用されます。キーと値のペアの形式を次のように設定します。
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --match-labels "key1:value1,key2:value2"
tanzu cluster machinehealthcheck node set CLUSTER-NAME --match-labels "key1:value1,key2:value2"
--max-unhealthy
:健全でないマシンの数が、このフラグを使用して設定した値を超えると、MachineHealthCheck
コントローラは修正を実行しません。--max-unhealthy
設定のデフォルトは 100%
です。このフラグには絶対数またはパーセントを指定できます。
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME --max-unhealthy "60%"
tanzu cluster machinehealthcheck node set CLUSTER-NAME --max-unhealthy "60%"
--node-startup-timeout
:このオプションは、MachineHealthCheck
コントローラが、マシンのクラスタへの参加を待機してから、マシンの健全性を良好でないと判断するまでの時間を制御します。たとえば、次のコマンドは、--node-startup-timeout
オプションを 21m
に設定します。
tanzu cluster machinehealthcheck control-plane set my-cluster --node-startup-timeout 21m
tanzu cluster machinehealthcheck node set my-cluster --node-startup-timeout 21m
マシンが指定時間内にクラスタへ参加できなかった場合、MachineHealthCheck
コントローラによってマシンが再作成されます。
--unhealthy-conditions
:このオプションは、Ready
、MemoryPressure
、DiskPressure
、PIDPressure
、および NetworkUnavailable
条件を設定できます。MachineHealthCheck
コントローラは、制御プレーン ノードとワーカー ノードの健全性を監視するために設定した条件を使用します。条件のステータスを設定するには、True
、False
、または Unknown
を使用します。例:
tanzu cluster machinehealthcheck control-plane set my-cluster --unhealthy-conditions "Ready:False:5m,Ready:Unknown:5m"
tanzu cluster machinehealthcheck node set my-cluster --unhealthy-conditions "Ready:False:5m,Ready:Unknown:5m"
上記の例では、Ready
条件を False:5m
および Unknown:5m
に設定しています。マシンが 5m
以上 Unknown
または False
状態のままになると、MachineHealthCheck
コントローラはマシンの健全性が良好でないと見なし、マシンを再作成します。
MachineHealthCheck
オブジェクトの取得クラスタの MachineHealthCheck
オブジェクトを取得するには、次の手順を実行します。クラスベースのクラスタでは、--mhc-name
フラグは無視されます。
ターゲット クラスタの制御プレーンの MachineHealthCheck
オブジェクトを取得するには、以下を実行します。
tanzu cluster machinehealthcheck control-plane get CLUSTER-NAME --mhc-name MHC-NAME
オブジェクトがデフォルト名で作成された場合、またはクラスベースのクラスタをターゲットにしている場合は、--mhc-name
フラグを省略します。
ターゲット クラスタのワーカー ノードの MachineHealthCheck
オブジェクトを取得するには、以下を実行します。
tanzu cluster machinehealthcheck node get CLUSTER-NAME --mhc-name MHC-NAME
オブジェクトがデフォルト名で作成された場合、またはクラスベースのクラスタをターゲットにしている場合は、--mhc-name
フラグを省略します。
MachineHealthCheck
オブジェクトの削除クラスタの MachineHealthCheck
オブジェクトを削除するには、次の手順を実行します。
クラスベースのクラスタ:
クラスベースのクラスタの制御プレーンの MachineHealthCheck
オブジェクトを削除するには、以下を実行します。
tanzu cluster machinehealthcheck control-plane delete CLUSTER-NAME
クラスベースのクラスタのワーカー ノードの MachineHealthCheck
オブジェクトを削除するには、以下を実行します。
クラスタに単一のマシン展開がある場合は、以下を実行します。
tanzu cluster machinehealthcheck node delete CLUSTER-NAME
クラスタに複数のマシン展開がある場合は、各マシン展開に対して次のコマンドを実行します。
tanzu cluster machinehealthcheck node delete CLUSTER-NAME --machine-deployment MACHINE-DEPLOYMENT-NAME
レガシー クラスタ:
レガシー クラスタの制御プレーンの MachineHealthCheck
オブジェクトを削除するには、以下を実行します。
tanzu cluster machinehealthcheck control-plane delete CLUSTER-NAME --mhc-name MHC-NAME
オブジェクトがデフォルト名で作成された場合は、--mhc-name
フラグを省略します。
レガシー クラスタのワーカー ノードの MachineHealthCheck
オブジェクトを削除するには、以下を実行します。
tanzu cluster machinehealthcheck node delete CLUSTER-NAME --mhc-name MHC-NAME
オブジェクトがデフォルト名で作成された場合は、--mhc-name
フラグを省略します。