🐣
kubectlでGKEにつなごうと思ったら"error executing access token command"
kubectlでGKEにつなごうと思ったらerror executing access token commandが出たので解決した話です。
事象
ちょっと久々にkubectlでGKEにつなごうと思ったら以下のエラーが出て困った。
$ kubectl get po --context gke_xxxxx_asia-northeast1_xxxxx
Unable to connect to the server: error executing access token command /snap/google-cloud-sdk/132/bin/gcloud config config-helper --format=json: err=fork/exec /snap/google-cloud-sdk/132/bin/gcloud: no such file or directory output= stderr=
解決
~/.kube/configのusers.[当該のuser].auth-provider.config.cmd-pathが/snap/google-cloud-sdk/132/bin/gcloudになっていたのを、/snap/bin/gcloudに修正した。
事象と解決の説明
kubectlでGKEにつなごうとした際、kubectlが認証をしようとして指定したコンテキストのユーザの認証用のコマンドを実行しようとした。
認証用のコマンドは~/.kube/configのusers.[当該のuser].auth-provider.config.cmd-pathに記録されているが、これが古いパスになっていた。
Google Cloud SDKをSnapでインストールしていたので、パッケージを諸々アップデートした際に古いバイナリが削除されたが、その際~/.kube/configは自動的には書き換わらなかったのだと思う。(SnapはKubernetesのことを知らないので、当然のこと)
Snapでインストールしたgcloudコマンドは/snap/bin/gcloudで参照できるので、コマンドのパスをそのように書き換えて、今後再びアップデートされた際にも問題が再発しないようにした。
Discussion