如果 TKG 叢集更新失敗,您可以重新啟動更新工作,然後再次嘗試更新。

問題

TKG 叢集更新失敗,並導致叢集狀態為 upgradefailed

原因

叢集更新失敗的原因有多個,例如儲存空間不足。若要重新啟動失敗的更新工作並再次嘗試叢集更新,請完成下列程序。

解決方案

  1. 以管理員身分登入 主管
  2. 查詢 update_job_name
    kubectl get jobs -n vmware-system-tkg -l "run.tanzu.vmware.com/cluster-namespace=${cluster_namespace},cluster.x-k8s.io/cluster-name=${cluster_name}"
  3. 執行 kubectl proxy,以便能夠使用 curl 發出請求。
    kubectl proxy &
    您應該會看到 Starting to serve on 127.0.0.1:8001
    備註: 無法使用 kubectl 來修補或更新資源的 .status
  4. 使用 curl 發出下列修補程式命令以引發 .spec.backoffLimit
    curl -H "Accept: application/json" -H "Content-Type: application/json-patch+json" 
    --request PATCH --data '[{"op": "replace", "path": "/spec/backoffLimit", "value": 8}]' 
    http://127.0.0.1:8001/apis/batch/v1/namespaces/vmware-system-tkg/jobs/${update_job_name}
  5. 使用 curl 發出下列修補程式命令以清除 .status.conditions,以便工作控制器建立新的網繭。
    $ curl -H "Accept: application/json" -H "Content-Type: application/json-patch+json" 
    --request PATCH --data '[{"op": "remove", "path": "/status/conditions"}]' 
    http://127.0.0.1:8001/apis/batch/v1/namespaces/vmware-system-tkg/jobs/${update_job_name}/status