🐣
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