恢复 Host 集群对 Member 集群的访问权限
多集群管理是 KubeSphere 的一大特色,拥有必要权限的租户(通常是集群管理员)能够从 Host 集群访问中央控制平面,以管理全部 Member 集群。强烈建议您通过 Host 集群管理整个集群的资源。
本教程演示如何恢复 Host 集群对 Member 集群的访问权限。
可能出现的错误信息
如果您无法从中央控制平面访问 Member 集群,并且浏览器一直将您重新定向到 KubeSphere 的登录页面,请在该 Member 集群上运行以下命令来获取 ks-apiserver 的日志。
kubectl -n kubesphere-system logs ks-apiserver-7c9c9456bd-qv6bs
备注
ks-apiserver-7c9c9456bd-qv6bs
指的是该 Member 集群上的 Pod ID。请确保您使用自己的 Pod ID。您可能会看到以下错误信息:
E0305 03:46:42.105625 1 token.go:65] token not found in cache
E0305 03:46:42.105725 1 jwt_token.go:45] token not found in cache
E0305 03:46:42.105759 1 authentication.go:60] Unable to authenticate the request due to error: token not found in cache
E0305 03:46:52.045964 1 token.go:65] token not found in cache
E0305 03:46:52.045992 1 jwt_token.go:45] token not found in cache
E0305 03:46:52.046004 1 authentication.go:60] Unable to authenticate the request due to error: token not found in cache
E0305 03:47:34.502726 1 token.go:65] token not found in cache
E0305 03:47:34.502751 1 jwt_token.go:45] token not found in cache
E0305 03:47:34.502764 1 authentication.go:60] Unable to authenticate the request due to error: token not found in cache
解决方案
步骤 1:验证 jwtSecret
分别在 Host 集群和 Member 集群上运行以下命令,确认它们的 jwtSecret 是否相同。
kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v “apiVersion” | grep jwtSecret
步骤 2:更改 accessTokenMaxAge
请确保 Host 集群和 Member 集群的 jwtSecret 相同,然后在该 Member 集群上运行以下命令获取 accessTokenMaxAge
的值。
kubectl -n kubesphere-system get cm kubesphere-config -o yaml | grep -v "apiVersion" | grep accessTokenMaxAge
如果该值不为 0
,请运行以下命令更改 accessTokenMaxAge
的值。
kubectl -n kubesphere-system edit cm kubesphere-config -o yaml
将 accessTokenMaxAge
的值更改为 0
之后,运行以下命令重启 ks-apiserver。
kubectl -n kubesphere-system rollout restart deploy ks-apiserver
现在,您可以再次从中央控制平面访问该 Member 集群。
反馈
这篇文章对您有帮助吗?
感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。
页面内容