本主題介紹如何為使用 v1beta1 API 佈建的 TKG 服務 叢集設定 MachineHealthCheck。
v1beta1 叢集的 MachineHealthCheck
MachineHealthCheck 是一個 Kubernetes 叢集 API 資源,它定義了用於修復狀況不良的機器的條件。在 Kubernetes 中,機器是可以執行 kubelet 的自訂資源。在 vSphere IaaS control plane 中,Kubernetes 機器資源由 vSphere 虛擬機器提供。如需詳細資訊,請參閱上游說明文件。
使用 TKG 服務 佈建叢集時,系統會建立預設 MachineHealthCheck 物件,一個物件用於所有控制平面,一個物件用於每個機器部署。從 vSphere 8 Update 3 開始,可以為 v1beta1 叢集設定機器健全狀況檢查。支援的設定包括:
- maxUnhealthy
- nodeStartupTimeout
- unhealthyConditions
- unhealthyRange
欄位 | 值 | 說明 |
---|---|---|
maxUnhealthy |
string 絕對數字或百分比 |
當狀況不良的機器數目超過該值時,將不會執行修復。 |
nodeStartupTimeout |
string 以 |
如果所建立的任何機器加入叢集所用的時間超過此持續時間,則會將這些機器視為出現故障並對其進行修復。 |
unhealthyConditions |
unhealthyConditions 類型的陣列 [] 可用條件類型: [ 可用條件狀態: [ |
用於確定控制平面節點是否被視為狀況不良的條件清單。 |
unhealthyRange |
string | 僅當「選取器」判定為狀況不良的機器數目在 優先順序高於 |
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
的值。 - 刪除 worker 節點 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%"}}]'
- 使用所需設定建立或更新 worker 節點 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
除了取得和設定之外,系統還支援刪除作業。例如:
tanzu cluster mhc control-plane delete <cluster-name>對於節點,可以使用以下命令:
tanzu cluster mhc <cluster-name> --machine-deployment <machine deployment name>