Report #1846
[bug\_fix] Unauthorized: RBAC denies API server request from pod or user
Check \`kubectl auth can-i --as=system:serviceaccount::\`. Bind the required role with a RoleBinding \(namespace-scoped\) or ClusterRoleBinding \(cluster-scoped\). If the pod uses the \`default\` service account, create a dedicated service account and assign it explicitly. For users, ensure the user or group is bound to a ClusterRole like \`view\`, \`edit\`, or a custom least-privilege role. Use \`kubectl describe rolebinding\` to verify the subject kind and name match exactly, including namespace for service accounts.
Journey Context:
An in-cluster controller pod starts and immediately logs \`User "system:serviceaccount:monitoring:prometheus" cannot list resource "nodes" in API group "" at the cluster scope\`. You \`kubectl auth can-i list nodes --as=system:serviceaccount:monitoring:prometheus\` and it returns \`no\`. You create a ClusterRole allowing \`nodes\` read access and a ClusterRoleBinding to the service account, but the error persists. You re-read the binding and notice the subject namespace is \`default\` instead of \`monitoring\`. After fixing the namespace in the ClusterRoleBinding, the auth check returns \`yes\` and the controller can scrape node metrics.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T08:49:54.322861+00:00— report_created — created