已弃用的 Kubernetes 客户端身份验证插件


在 Kubernetes 1.22 版中,Kubernetes 项目弃用了客户端使用的内置身份验证机制,例如 kubectl 命令行工具用于访问 Kubernetes API 服务器。按计划,内置身份验证机制在 Kubernetes 1.26 中移除。如需了解背景信息,请参阅 GitHub PR 102181

移除不会影响在集群中部署并使用 Kubernetes 服务账号与 API 服务器通信的运算符。

您该怎么做?

GKE 发布了更新后的身份验证插件 gke-gcloud-auth-plugin。此插件使用 client-go 凭据插件框架提供身份验证令牌,以便与 GKE 集群进行通信。

您必须先安装该插件,然后再将命令行客户端更新到 1.26 及更高版本。如果您未安装该插件,则会看到类似于以下内容的错误消息。

如需了解相关说明,请参阅安装所需的插件

错误示例:找不到身份验证提供商

Unable to connect to the server: getting credentials: exec: executable gke-gcloud-auth-plugin not found

panic: no Auth Provider found for name gcp

错误示例:找不到可执行的 gke-cloud-auth-plugin

Unable to connect to the server: getting credentials: exec: executable gke-gcloud-auth-plugin not found

It looks like you are trying to use a client-go credential plugin that is not installed.

To learn more about this feature, consult the documentation available at:
      https://kubernetes.io/docs/reference/access-authn-authz/authentication/#client-go-credential-plugins

Install gke-gcloud-auth-plugin for use with kubectl by following \
https://cloud.google.com/blog/products/containers-kubernetes/kubectl-auth-changes-in-gke.