使用涡轮服务器的openshift Crash Loop Back Off错误

时间:2018-03-29 19:00:04

标签: kubernetes openshift

您好我在Openshift中创建了一个项目,并尝试向其添加涡轮服务器映像。添加了一个Pod,但我在日志中不断收到以下错误。我是OpenShift的新手,我将不胜感激任何有关如何解决此错误的建议或建议。我可以提供所需的更多信息。

io.fabric8.kubernetes.client.KubernetesClientException:执行失败:GET at:https://kubernetes.default.svc/api/v1/namespaces/booking/pods/turbine-server-2-q7v8l。消息:禁止!已配置的服务帐户无权访问。服务帐户可能已被撤销..

2 个答案:

答案 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 vs K8S

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>