kubectl クライアントで踏み台ホストから Amazon Elastic Kubernetes Service (Amazon EKS) に接続する際、エラー "error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1"" が発生するため、この問題を解決したいです。
解決策
使用している kubectl のバージョンが Kubernetes クラスターの API バージョンと互換性がない場合、invalid apiVersion エラーが発生します。このエラーは通常、$home/.kube/config 内の kubeconfig ファイルを更新する際、過去のバージョンの AWS コマンドラインインターフェイス (AWS CLI) を使用した場合に発生します。この問題を解決するには、AWS CLI を最新バージョンにアップグレードしてから、kubeconfig ファイルを再度更新します。kubeconfig ファイルを更新すると、kubeconfig ファイルの apiVersion フィールドが最新バージョン (v1beta1) に更新されます。
AWS CLI の最新バージョンにアップグレードする
AWS CLI の最新バージョンをインストールするか、既存のバージョンを更新します。
**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。
サポートされている kubectl バージョンをインストールする
注: Amazon EKS クラスターのコントロールプレーンとのマイナーバージョン差が 1 以内である kubectl バージョンを使用する必要があります。たとえば、kubectl バージョン 1.28 のクライアントは Kubernetes 1.27、1.28、および 1.29 のクラスターで動作します。
使用する Amazon EKS クラスターのバージョンでサポートされる kubectl のバージョンをインストールするには、次の手順を実行します。
-
kubectl をダウンロードするには、次のコマンドを実行します。
$ curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.29.3/2024-04-19/bin/linux/arm64/kubectl.sha256
$ chmod +x ./kubectl
注: linux を使用するオペレーティングシステムに、arm64 をディストリビューションに、1.29 を Kubernetes のバージョンに置き換えてください。
-
ダウンロードした kubectl ファイルをパス内のフォルダにコピーします。いずれかのバージョンの kubectl がインストール済みの場合は、$HOME/bin/kubectl を作成します。
$ mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
注: $PATH のリストにおいて、最初に $HOME/bin を含める必要があります。
-
インストールされている kubectl のバージョンを確認するには、次のコマンドを実行します。
$ kubectl version --client
-
(オプション) シェル初期化ファイルに $HOME/bin パスを追加します。
$ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
-
kubeconfig ファイルを v1alpha1 から v1beta1 に更新するには、次のコマンドを実行します。
$ aws eks update-kubeconfig --name clusterName --region regionName
注: clusterName をクラスター名に、regionName を AWS リージョンに置き換えてください。
-
クラスターに接続できるかどうかをテストするには、次のコマンドを実行します。
$ kubectl get svc
$ kubectl get pod