首页 > 解决方案 > Kubernetes "pods.metrics.k8s.io "my-pod-name" 被禁止:用户 "system:serviceaccount:default:default" 无法获取资源 "pods"

问题描述

我无法弄清楚我的角色绑定有什么问题。在尝试获取我的 pod 的指标时,我不断收到此错误。

"pods.metrics.k8s.io "my-pod-name" is forbidden: User "system:serviceaccount:default:default" cannot get resource "pods" in API group "metrics.k8s.io" in the namespace "default""

这是集群角色 yaml 文件

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: pod-reader
rules:
  - apiGroups: ["", "metrics.k8s.io"] # "" indicates the core API group
    resources: ["pods"]
    verbs: ["get", "watch", "list"]

然后我运行了这个命令

kubectl create clusterrolebinding pod-reader \
  --clusterrole=pod-reader  \
  --serviceaccount=default:default

标签: kubernetesrolesservice-accounts

解决方案


ClusterRole 和 ClusterRolebinding 是非命名空间资源。因此,从 YAML 文件中删除命名空间行。

或者,如果您想将范围限定为命名空间,请使用 Role 和 RoleBinding。


推荐阅读