如果更新 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,从而使作业控制器创建新的 Pod。
    $ 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