【问题标题】:kubectl versions Error: exec plugin is configured to use API version client.authentication.k8s.io/v1alpha1kubectl 版本错误:exec 插件配置为使用 API 版本 client.authentication.k8s.io/v1alpha1
【发布时间】:2022-06-21 19:34:13
【问题描述】:

我正在为我的 eks 环境设置我的新 Mac。 安装 kubectl 后,aws-iam-authenticator 和 kubeconfig 文件放置在默认位置。我运行了命令 kubectl 命令并在命令块中得到了下面提到的这个错误。

我的集群使用 v1alpha1 客户端身份验证 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

感谢和问候, 萨拉瓦娜

【问题讨论】:

标签: authentication plugins kubectl amazon-eks


【解决方案1】:

我也有同样的问题

您正在使用 aws-iam-authenticator 0.5.5,AWS 将其在 0.5.4 中的行为方式更改为要求 v1beta1

这取决于您的配置,但您可以尝试将您正在使用的 K8s 上下文更改为 v1beta1 通过检查您的 kubeconfig 文件(通常在 ~/.kube/config 中)从 client.authentication.k8s.io/v1alpha1client.authentication.k8s.io/v1beta1

否则切换回 aws-iam-authenticator 0.5.3 - 如果您使用 M1 架构,您可能需要从源代码构建它,因为没有为它构建的 darwin-arm64 二进制文件

【讨论】:

  • 有关其他信息,此处描述了更改:github.com/kubernetes-sigs/aws-iam-authenticator/pull/386 我能够通过更新我的 kubeconfig 并将client.authentication.k8s.io/v1alpha1 替换为client.authentication.k8s.io/v1beta1 来解决我的问题
  • 更改kubeconfig 对我也有帮助。在@pgier 提供的 GitHub 问题中,有一个巧妙的单行代码可以为您进行更改:sed -i .bak -e 's/v1alpha1/v1beta1/' ~/.kube/config
  • 我遇到了同样的问题,@pgier 的回答很有帮助。谢谢
【解决方案2】:

这对我使用 M1 芯片有效

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

【讨论】:

【解决方案3】:

我还通过更新我的 kube 配置文件 (~/.kube/config) 中的 apiVersion 值解决了这个问题。

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

【讨论】:

    【解决方案4】:

    我用下面的命令解决了这个问题

    aws eks update-kubeconfig --name mycluster 
    

    【讨论】:

    • 您使用的是哪个版本的 AWS CLI?
    • 忘记用的是什么版本了,换的很快。
    • 顺便说一句,我觉得 AWS CLI 应该保持更新。
    【解决方案5】:

    对于使用 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"
    

    【讨论】:

      【解决方案6】:

      使用 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
      

      此问题与error: exec plugin: invalid apiVersion "client.authentication.k8s.io/v1alpha1" CircleCI重复

      【讨论】:

        【解决方案7】:

        请将authentication apiVersionv1alpha1 更改为v1beta1

        apiVersion: client.authentication.k8s.io/v1alpha1
        

        apiVersion: client.authentication.k8s.io/v1beta1
        

        【讨论】:

          猜你喜欢
          • 2022-06-12
          • 2020-07-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-18
          • 1970-01-01
          • 2016-10-30
          • 1970-01-01
          相关资源
          最近更新 更多