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. curl を使用して要求を発行できるように、kubectl proxy を実行します。
    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