我创建此条目是为了分享我在调查 Lens/OpenLens 的一个非常令人沮丧的问题后的发现,其中对于特定集群,我们收到了以下类型的错误:
failed to get /version for clusterId:<ID> [Forbidden/Bad Gateway/Internal]
(我们使用 InfraHQ 管理该集群的 RBAC)。
尽管
kubectl
工作正常,但还是发生了。
当分配 cluster-admin
角色(infraHQ)时 --> 允许对所有内容进行所有操作,它解决了问题。
最终解决了我的问题,是对
ClusterRole
字段下的相关 rules
配置进行了以下添加:
- nonResourceURLs:
- /*
verbs:
- get
这样,Lens 就可以在该非资源 URL 上运行
get
请求,因此集群可以在 Lens 中加载/打开。
今天刚刚遇到这个问题,看起来 kubeconfig 文件中的集群 AuthZ 已经耗尽。我认为有点老了而且无效。
对我有用的解决方案是通过正常方式访问集群,无论是本地还是云提供商。将具有定义的 clusterrole 的集群访问权限保存到 kubeconfig 后。获取该配置文件的内容并将其呈现给 Lens 即可完成工作。
我认为它与我们使用集群管理角色还是仅基于视图的角色无关的原因是,在 Lens 中我们提供了 kubeconfig 文件,该文件是预先授权的 kubeconfig 授权和与对齐的证书的访问权限。它们可能已过期,从而失去访问权限