#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», это должно сработать