kubectl error: You must be logged in to the server (Unauthorized)

kubectl error: You must be logged in to the server (Unauthorized)

今天我遇到了一个奇怪的问题,关于我的 Windows kubectl 客户端在连接 ICp 时突然出现授权问题。

我在配置 Widows 的情况下使用 ICP kubectl.exe。然后,过了一会儿,由于笔记本电脑自动休眠,我的 VPN 连接断开了,因此失去了与远程 ICP 的连接。后来我回来重新连接ICP。我再次使用 kubectl 命令并面临:

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

在ICP主节点上,如果我使用没有错:

kubectl -s 127.0.0.1:8888 -n kube-system get pods -o wide

我回去重新配置客户端(粘贴从管理员复制的代码->配置kubectl),命令执行成功但是当我发出

kubectl get pods

仍然出错。

我查看了文章:

kubectl - error: You must be logged in to the server

error: You must be logged in to the server (the server has asked for the client to provide credentials)

好像没什么用

事实证明令牌无效(不确定是否因为 12 小时过期)。如果在没有重新认证的浏览器页面直接F5,但仍然可以访问控制台页面,但实际上应该重新登录ICP Portal更新token。

问题已通过重新访问 ICP 门户解决:

https://<master host>:8443/console/

这将重新允许您进行身份验证。之后,转到管理-> 配置客户端,粘贴最新的命令,您会发现令牌可能已更新。执行新命令解决了问题。

还有2个问题:

a) 如果页面长时间打开且令牌过期,ICP 门户页面可能不会自动刷新以强制您重新登录,这意味着 set-credentials 命令中的令牌仍然是旧的。

b) 即使设置旧令牌也被接受,并且命令从不抱怨错误甚至警告。这可能会在服务器上更改令牌时误导我们,例如,如果我将命令保存到本地 txt 文件并再次重新执行(即使在令牌过期后),命令仍然成功完成,但实际上我仍然没有得到当我尝试登录时验证正确。