You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行kubectl cluster-info遇权限禁止错误:admin无法访问kube-system的services资源

解决kubectl cluster-info返回Forbidden权限错误的方案

这个错误指向很明确:你的admin用户没有权限在kube-system命名空间下读取核心API组的services资源,而kubectl cluster-info命令本身就是通过查询这个命名空间里的核心服务(比如kubernetes、kube-dns)信息来返回结果的,权限缺失就会触发这个Forbidden报错。

咱们先做个快速验证,确认权限问题:

  • 执行命令:kubectl auth can-i list services -n kube-system --as=admin
    如果返回no,就坐实了是权限不足导致的问题。

接下来给你两种解决思路,你可以根据实际需求选择:

方案一:最小权限授予(仅允许查看kube-system的services)

遵循最小权限原则,只给admin用户必要的权限:

  1. 创建一个针对kube-system命名空间的Role,定义查看services的权限:
    创建文件kube-system-services-reader.yaml,内容如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: kube-system
  name: services-reader
rules:
- apiGroups: [""] # 空字符串对应K8s核心API组
  resources: ["services"]
  verbs: ["list"]
  1. 应用这个Role:
    kubectl apply -f kube-system-services-reader.yaml
  2. 将这个Role绑定到admin用户:
    创建文件admin-services-reader-binding.yaml,内容如下:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: admin-services-reader-binding
  namespace: kube-system
subjects:
- kind: User
  name: admin
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: services-reader
  apiGroup: rbac.authorization.k8s.io

应用绑定:
kubectl apply -f admin-services-reader-binding.yaml

方案二:授予kube-system下的全只读权限

如果admin用户需要查看kube-system下更多资源(不止services),可以直接绑定K8s内置的view集群角色,这个角色包含了大部分资源的只读权限:
执行命令:
kubectl create rolebinding admin-view-kube-system --clusterrole=view --user=admin --namespace=kube-system

完成上述操作后,再执行kubectl cluster-info应该就能正常显示集群核心服务信息了。如果还有异常,可以用提示里的kubectl cluster-info dump命令导出详细集群状态,进一步排查问题。

内容的提问来源于stack exchange,提问作者qie fan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:40:06