當我使用 kubectl 用戶端從我的堡壘主機連接到 Amazon Elastic Kubernetes Service (Amazon EKS) 時,收到以下錯誤:"error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1""。我想要解決此問題。
解決方法
當您使用的 kubectl 版本與 Kubernetes 叢集的 API 版本不相容時,您會收到 invalid apiVersion 錯誤。此錯誤通常發生在您使用較舊版本的 AWS Command Line Interface (AWS CLI) 來更新 $home/.kube/config 中的 kubeconfig 檔案時。若要解決此問題,請將 AWS CLI 升級到最新版本。然後,再次更新 kubeconfig 檔案。當您更新 kubeconfig 檔案時,kubeconfig 檔案中的 apiVersion 欄位會更新為最新版本 (v1beta1)。
升級到最新版本的 AWS CLI
安裝或更新到最新版本的 AWS CLI。
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。
安裝支援的 kubectl 版本
**注意:**您必須使用與您的 Amazon EKS 叢集控制平面版本相差不超過一個次版本的 kubectl 版本。例如,1.28 版本的 kubectl 用戶端可用於 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
**注意:**您必須將 $HOME/bin 列在 $PATH 的最前面。
-
若要確認已安裝的 kubectl 版本,請執行以下命令:
$ kubectl version --client
-
(選用) 將 $HOME/bin 路徑加入您的 shell 初始化檔案:
$ 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