このトピックでは、制御プレーン ノードとワーカー ノードの 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 フラグを省略します。