jobs.batch запрещен: Пользователь ‘ ‘»system: serviceaccount:default: default» не может перечислить «задания» ресурса в группе API «batch» в пространстве имен «default»

#node.js #kubernetes

#node.js #kubernetes

Вопрос:

Я использую клиент Kubernetes javascript с конфигурациями внутри кластера для взаимодействия с кластером.

Я пытаюсь получить список заданий

app.js (Узел)

 app.get("/", (req, res) => {
  k8sApi2
    .listNamespacedJob("default")
    .then((res) => {
      console.log(res.body);
      res.send(res.body);
    })
    .catch((err) => console.log(err));
});
 

Но это журнал модуля, который я получаю.

Журнал

Вот мое развертывание

Развертывание

Обслуживание

Обслуживание

Кроме того, я создал роль и привязку к роли, но, тем не менее, я понятия не имею, из-за чего возникает эта проблема.

 ---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: node-apis
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: node-apis
rules:
  - apiGroups:
      - ""
      - "apps"
      - "batch"
    resources:
      - endpoints
      - deployments
      - pods
      - jobs
    verbs:
      - get
      - list
      - watch
      - create
      - delete
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: node-apis
  namespace: default
subjects:
  - kind: ServiceAccount
    name: node-apis
    namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: node-apis

 

Я новичок в Kubernetes, любая помощь?

Ответ №1:

Вам необходимо использовать учетную запись службы, указав ее в разделе спецификации модуля.Поскольку вы этого не делаете, он использует default учетную запись службы, у которой нет роли и привязки ролей, разрешающей операцию, что приводит к forbidden ошибке.

 spec:
  serviceAccountName: node-apis
  containers:
  ...
 

В качестве альтернативы вы можете предоставить разрешение default учетной записи службы в привязке ролей

 kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: node-apis
  namespace: default
subjects:
  - kind: ServiceAccount
    name: default
    namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: node-apis 
 

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

1. Это на самом деле не работает для меня, у вас есть какие-либо идеи? github.com/kubernetes-client/javascript/issues/654

Ответ №2:

Измените тип вашей роли с «Role» на «ClusterRole», это должно сработать