本主題說明如何使用 Tanzu 命令列介面 (CLI),為控制平面和 worker 節點建立、更新、擷取和刪除 MachineHealthCheck
物件。
如需詳細資訊,請參閱〈Tanzu CLI 命令參考〉中的 tanzu cluster machinehealthcheck
。
MachineHealthCheck
MachineHealthCheck
是一個控制器,可為機器提供健全狀況監控和自動修復。不論控制平面或工作節點,所有管理和工作負載叢集中都自動啟用此控制器。如果在透過單個機器或舊版叢集部署基於類別的叢集時啟用了控制器,Tanzu Kubernetes Grid 將在叢集中建立兩個預設 MachineHealthCheck
物件,一個用於控制平面節點,另一個用於 worker 節點。對於透過多個機器部署基於類別的叢集,Tanzu Kubernetes Grid 會為控制平面建立一個 MachineHealthCheck
物件,並為每個機器部署建立一個物件。這些物件在與叢集相同的命名空間中建立。
如果您停用控制器,可以使用記錄於建立或更新 MachineHealthCheck
物件中的命令重新啟用它。您也可以使用這些命令來更新現有 MachineHealthCheck
物件。
MachineHealthCheck
物件按照以下步驟為叢集建立或更新 MachineHealthCheck
物件。
以類別為基礎的叢集:
如要為基於類別的叢集的控制平面建立預設 MachineHealthCheck
物件,請執行以下操作:
tanzu cluster machinehealthcheck control-plane set CLUSTER-NAME
如要為基於類別的叢集的 worker 節點建立預設 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
如要為舊版叢集的 worker 節點建立預設 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
物件,您可以指定下列一或多個旗標:
附註這些範例假設您為單一機器部署的基於類別的叢集自訂或更新
MachineHealthCheck
設定。為多個機器部署的基於類別的叢集的 worker 節點自訂或更新MachineHealthCheck
物件時,必須指定--machine-deployment
旗標。對於舊版叢集,如上所述指定--mhc-name
。
--match-labels
:此選項會依標籤索引鍵和值來篩選機器。您可以指定一或多個標籤限制。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
控制器會使用您設定的條件來監控您的控制平面和 worker 節點的健全狀況。若要設定條件的狀態,請使用 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
。如果機器停留在 Unknown
或 False
狀態的時間超過 5m
,MachineHealthCheck
控制器會將機器視為不正常並重新建立。
MachineHealthCheck
物件按照以下步驟擷取叢集的 MachineHealthCheck
物件。對於基於類別的叢集,將忽略 --mhc-name
旗標。
如要為目標叢集的控制平面擷取 MachineHealthCheck
物件,請執行:
tanzu cluster machinehealthcheck control-plane get CLUSTER-NAME --mhc-name MHC-NAME
如果物件是使用預設名稱建立的,或者如果您的目標是基於類別的叢集,請省略 --mhc-name
旗標。
如要為目標叢集的 worker 節點擷取 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
如要為基於類別的叢集的 worker 節點刪除一或多個 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
旗標。
如要為舊版叢集的 worker 節點刪除 MachineHealthCheck
物件,請執行:
tanzu cluster machinehealthcheck node delete CLUSTER-NAME --mhc-name MHC-NAME
如果物件是以預設名稱建立,可省略 --mhc-name
旗標。