在 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.