kubectl:错误您必须登录到服务器(未经授权)

bea*_*ear 3 kubernetes

我已经为 CI 目的创建了一个服务帐户并正在对其进行测试。尝试任何 kubectl 命令后,我收到错误:

error: You must be logged in to the server (Unauthorized)
Run Code Online (Sandbox Code Playgroud)

下面是我的.kube/config文件

apiVersion: v1
clusters:
- cluster:
    server: <redacted>
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: bamboo
  name: default
current-context: 'default'
kind: Config
preferences: {}
users:
- name: bamboo
  user:
    token: <redacted>

Run Code Online (Sandbox Code Playgroud)

该服务帐户存在并具有集群角色:编辑和附加的集群角色绑定。

我究竟做错了什么?

hoq*_*que 5

如果我直接复制而不解码,我会重现错误token。然后应用以下步骤来解码和设置令牌,它按预期工作。


$ TOKENNAME=`kubectl -n <namespace> get serviceaccount/<serviceaccount-name> -o jsonpath='{.secrets[0].name}'` 

$ TOKEN=`kubectl -n <namespace> get secret $TOKENNAME -o jsonpath='{.data.token}'| base64 --decode`

$ kubectl config set-credentials <service-account-name> --token=$TOKEN

Run Code Online (Sandbox Code Playgroud)

所以,我认为这可能是你的情况。