首页 文章

未知用户“客户端”是什么意思?

提问于
浏览
4

当我使用gcloud sdk在我的本地shell上运行一个简单的命令时 .

$ kubectl get pod

我收到这样的错误:

来自服务器的错误(禁止):禁止使用pod:用户“client”无法列出群集范围内的pod:未知用户“client”

相同的命令在GCP Cloud shell上运行正常,并且输出

$ gcloud auth list

如预期的那样:

Credentialed Accounts ACTIVE ACCOUNT * foo@bar.com

我也试图创建clusterrolebinding,但得到类似的错误 .

4 回答

  • 1

    在群集设置中禁用旧版授权时会发生这种情况,因为您使用的客户端证书是旧版身份验证方法 . 所以看起来正在发生的是客户端身份验证成功但授权失败,正如预期的那样 . (错误消息中的“未知用户”,令人困惑,似乎意味着授权系统不知道用户,而不是认证系统 . )

    您可以禁用客户端证书的使用

    gcloud config unset container/use_client_certificate
    

    然后用 . 重新生成你的kubectl配置

    gcloud container clusters get-credentials my-cluster
    

    或者,您只需在Google Cloud 端控制台的群集设置中重新启用旧版授权即可 .

  • 18

    我知道这个问题现在已经解决,但我想补充一些关于为什么会出现此问题的信息,因为它可能对遇到类似问题的人有用 .

    Kubernetes Engine用户可以使用Google OAuth2访问令牌对Kubernetes API进行身份验证,这意味着当用户创建新群集时,Kubernetes Engine会配置kubectl以向群集验证用户身份 .

    还可以使用包括使用群集证书和/或用户名和密码的传统方法对群集进行身份验证 . 这在 gcloud config 中定义 .

    例如Cloud Shell中的gcloud的配置可能与其他地方的gcloud的安装不同,例如在家庭工作站上 .

    的:

    来自服务器的错误(禁止):禁止使用pod:用户“client”无法列出群集范围内的pod:未知用户“client”

    错误表明gcloud config set container/use_client_certificate 设置为 True ,即gcloud期望客户端群集证书对群集进行身份验证(这是错误消息中引用的'client') .

    正如@Yanwei所发现的那样,通过在glcoud配置中发出以下命令来取消设置container / use_client_certificate,结束了对旧证书或凭证的需求,并防止出现错误消息:

    gcloud config unset container/use_client_certificate
    

    如果您在家庭工作站或其他地方使用旧版本的gcloud,则可能更有可能出现此类问题 .

    有关此here的一些信息 .

  • 5

    发现gcloud配置存在一些问题 . 这个命令解决了它:

    gcloud config unset container/use_client_certificate
    
  • 1

    除了设置

    gcloud config unset container / use_client_certificate

    还要确保没有将此env变量设置为True

    CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE

相关问题