kubernetes k8s操作员列表节点有权限问题?

yquaqz18  于 2023-04-29  发布在  Kubernetes
关注(0)|答案(1)|浏览(158)

我想用我的操作员检查一个节点是否被污染了。
为了获得节点的污染信息,我使用

err := r.Get(ctx, client.ObjectKey{Name: pod.Spec.NodeName}, node)

这对K8S中的fakeclient很有效。
然而,当我在EKS集群上运行它时,我得到了以下错误:

"msg":"pkg/mod/k8s.io/client-go@v0.24.10/tools/cache/reflector.go:167: failed to list *v1.Node: nodes is forbidden: User \"system:serviceaccount:mike-6mdj7thh:mike-kubernetes-operator-controller-manager\" cannot list resource \"nodes\" in API group \"\" at the cluster scope

我该怎么解决?或者我应该如何调试这种类型的问题?

lymnna71

lymnna711#

它需要ClusterRole和ClusterRoleBinding来访问节点。

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: mike-clusterrole
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
  - watch
  - list
  - create
  - update
  - patch
---
  apiVersion: rbac.authorization.k8s.io/v1
  kind: ClusterRoleBinding
  metadata:
    name: mike-clusterrolebinding
  roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: ClusterRole
    name: mike-clusterrole
  subjects:
  - kind: ServiceAccount
    name: mike-kubernetes-operator-controller-manager
    namespace: {{ .Namespace }}

相关问题