簡體   English   中英

kubectl 版本錯誤:exec 插件配置為使用 API 版本 client.authentication.k8s.io/v1alpha1

[英]kubectl versions Error: exec plugin is configured to use API version client.authentication.k8s.io/v1alpha1

我正在為我的 eks 環境設置我的新 Mac。 安裝 kubectl 后,aws-iam-authenticator 和 kubeconfig 文件放置在默認位置。 我運行命令 kubectl 命令並在命令塊中收到下面提到的錯誤。

我的集群使用 v1alpha1 client auth api 版本,所以基本上我也想在我的 Mac 中使用相同的版本。

我也嘗試了 kubectl 的最新版本 (1.23.0),仍然是同樣的錯誤。 而當我嘗試使用 aws-iam-authenticator(版本 0.5.5)時,我無法下載較低版本。

有人可以幫我解決嗎?

% kubectl version          
Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.0", GitCommit:"af46c47ce925f4c4ad5cc8d1fca46c7b77d13b38", GitTreeState:"clean", BuildDate:"2020-12-08T17:59:43Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"darwin/amd64"}
Unable to connect to the server: getting credentials: exec plugin is configured to use API version client.authentication.k8s.io/v1alpha1, plugin returned version client.authentication.k8s.io/v1beta1

謝謝和問候,薩拉瓦納

我也有同樣的問題

您正在使用aws-iam-authenticator 0.5.5 ,AWS 將其在0.5.4中的行為方式更改為需要v1beta1

這取決於您的配置,但您可以嘗試通過檢查您的 kubeconfig 文件(通常在~/.kube/config中)從client.authentication.k8s.io/v1alpha1v1beta1將您正在使用的 K8s 上下文更改為client.authentication.k8s.io/v1beta1

否則切換回aws-iam-authenticator 0.5.3 - 如果您使用 M1 架構,您可能需要從源代碼構建它,因為沒有為它構建darwin-arm64二進制文件

這對我使用 M1 芯片有用

sed -i .bak -e 's/v1alpha1/v1beta1/' ~/.kube/config

我還通過更新我的 kube 配置文件 ( ~/.kube/config ) 中的apiVersion值解決了這個問題。

client.authentication.k8s.io/v1alpha1client.authentication.k8s.io/v1beta1

我用下面的命令解決了這個問題

aws eks update-kubeconfig --name mycluster 

還要確保 AWS CLI 版本是最新的。 否則,AWS IAM Authenticator 可能無法與 v1beta1 一起使用:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update

對於使用 GitHub 操作的用戶,這可能有助於解決此問題。 對於我的情況,我將kodermax/kubectl-aws-eks與 GitHub 操作一起使用。

我使用kodermax/kubectl-aws-eks為每個步驟添加了KUBECTL_VERSIONIAM_VERSION環境變量,以將它們保持在固定版本中。

  - name: deploy to cluster
    uses: kodermax/kubectl-aws-eks@master
    env:
      KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA_STAGING }}
      ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
      ECR_REPOSITORY: my-app
      IMAGE_TAG: ${{ github.sha }
      KUBECTL_VERSION: "v1.23.6"
      IAM_VERSION: "0.5.3"

使用 kubectl 1.21.9 為我修復了它,使用 asdf:

asdf plugin-add kubectl https://github.com/asdf-community/asdf-kubectl.git
asdf install kubectl 1.21.9

我建議使用.tools-versions文件:

kubectl 1.21.9

這個問題是錯誤的重復: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" CircleCI

請將authentication apiVersionv1alpha1更改為v1beta1

老的

apiVersion: client.authentication.k8s.io/v1alpha1

新的

apiVersion: client.authentication.k8s.io/v1beta1

有時,如果 Kube 緩存損壞(在我的情況下發生),就會發生這種情況。

刪除和重新創建以下文件夾對我有用。

sudo rm -rf $HOME/.kube && mkdir -p $HOME/.kube

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM