您好我在Openshift中创建了一个项目,并尝试向其添加涡轮服务器映像。添加了一个Pod,但我在日志中不断收到以下错误。我是OpenShift的新手,我将不胜感激任何有关如何解决此错误的建议或建议。我可以提供所需的更多信息。
io.fabric8.kubernetes.client.KubernetesClientException:执行失败:GET at:https://kubernetes.default.svc/api/v1/namespaces/booking/pods/turbine-server-2-q7v8l。消息:禁止!已配置的服务帐户无权访问。服务帐户可能已被撤销..
答案 0 :(得分:0)
确保您已为该帐户配置了服务帐户,角色和角色绑定。确保将服务帐户设置为pod规范。
spec:
serviceAccountName: your-service-account
开始监控部署pod的节点和API服务器上的atomic-openshift-node服务。
$ journalctl -b -f -u atomic-openshift-node
运行pod并监视journald输出。你会看到" Forbidden"。
Jan 28 18:27:38 <hostname> atomic-openshift-node[64298]:
logging error output: "Forbidden (user=system:serviceaccount:logging:appuser, verb=get, resource=nodes, subresource=proxy)"
这表示服务帐户 appuser 没有授权在节点/代理资源上执行获取。然后更新角色以便能够允许动词&#34; get&#34;在资源上。
- apiGroups: [""]
resources:
- "nodes"
- "nodes/status"
- "nodes/log"
- "nodes/metrics"
- "nodes/proxy" <----
- "nodes/spec"
- "nodes/stats"
- "namespaces"
- "events"
- "services"
- "pods"
- "pods/status"
verbs: ["get", "list", "view"]
请注意,某些资源不是默认遗产&#34;&#34;分组在Unable to list deployments resources using RBAC。
验证谁可以对资源执行动词,例如针对pod的补丁动词。
$ oadm policy who-can patch pod
Namespace: default
Verb: patch
Resource: pods
Users: auser
system:admin
system:serviceaccount:cicd:jenkins
Groups: system:cluster-admins
system:masters
OpenShift有 oc策略或 oadm政策:
oc policy add-role-to-user <role> <user-name>
oadm policy add-cluster-role-to-user <role> <user-name>
这与K8S角色绑定相同。您可以使用K8S RBAC,但OpenShift中的API版本需要 v1 而不是K8中的 rbac.authorization.k8s.io/v1 。
答案 1 :(得分:0)
嗨,谢谢你的回复 - 我能够通过使用oc命令行实用程序执行以下命令来解决问题:
oc policy add-role-to-group view system:serviceaccounts -n <project>
oc policy add-role-to-group edit system:serviceaccounts -n <project>