Kubernetes «pods.metrics.k8s.io «my-pod-name» запрещено: Пользователь «system: serviceaccount: default: default» не может получить «модули ресурсов»

#kubernetes #roles #service-accounts

#kubernetes #роли #сервисные учетные записи

Вопрос:

Я не могу понять, что не так с моей привязкой к роли. Я продолжаю получать эту ошибку при попытке получить показатели для моего модуля.

"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
  

Комментарии:

1. Ваше ClusterRole имя pod-reader , но в вашей команде вы передаете --clusterrole флаг с именем service-reader . Можете ли вы проверить это несоответствие?

2. Спасибо! я исправил это, но все еще не работает

3. Застрял в этой же проблеме. Хотелось бы, чтобы на это были ответы 🙂

Ответ №1:

ClusterRole и ClusterRoleBinding — это ресурсы, не связанные с пространством имен. Итак, удалите строку пространства имен из вашего файла YAML.

В качестве альтернативы используйте Role amp; RoleBinding, если вы хотите ограничить пространство имен.