【问题标题】:Kubernetes : Service Accounts Permissions issue with Spring Cloud Data Flow ServerKubernetes:Spring Cloud Data Flow Server 的服务帐户权限问题
【发布时间】:2018-10-04 17:54:54
【问题描述】:

我一直在尝试使用 minikube 在本地为 Kubernetes 设置 Spring Cloud Dataflow Server。已按照此处链接中的安装说明进行操作:SCDF Installation Reference

SCDF 服务器出现以下错误:


11:32:52.095 [main] DEBUG io.fabric8.kubernetes.client.Config - Trying to configure client namespace from Kubernetes service account namespace path...
11:32:52.096 [main] DEBUG io.fabric8.kubernetes.client.Config - Found service account namespace at: [/var/run/secrets/kubernetes.io/serviceaccount/namespace].
2018-04-24 11:33:14.348  WARN 1 --- [           main] o.s.cloud.kubernetes.StandardPodUtils    : Failed to get pod with name:[scdf-server-869d56967c-97lsd]. You should look into this if things aren't working as you expect. Are you missing serviceaccount permissions?

io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://kubernetes.default.svc/api/v1/namespaces/default/pods/scdf-server-869d56967c-97lsd. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods "scdf-server-869d56967c-97lsd" is forbidden: User "system:serviceaccount:default:default" cannot get pods in the namespace "default".

以下是版本详情:

  • Spring Cloud 数据流服务器:1.4.0.RELEASE
  • 使用 minikube 进行 Kubernetes 本地部署
  • Kubernetes 版本:1.10

【问题讨论】:

    标签: spring kubernetes spring-cloud-dataflow


    【解决方案1】:

    最新版本的 minikube 默认启用 RBAC。

    对于启用 RBAC 的集群,我们已在安装部分添加了有关此问题的说明。

    “最新版本的 kubernetes 已在 api-server 上启用了 RBAC。如果您的目标平台启用了 RBAC,您必须在部署数据流服务器之前让集群管理员为您创建角色和角色绑定. 他们将数据流服务帐户与需要运行的角色相关联。”

    但是,对于 minikube,您可以运行以下命令并重试安装。

    kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:default

    或者,如果您使用的是 helm-chart,您可以禁用 RBAC 并在 minikube 上安装以下图表。

    掌舵初始化

    helm repo 添加孵化器https://kubernetes-charts-incubator.storage.googleapis.com

    helm repo 更新

    helm install --name my-release --set server.service.type=NodePort --set rbac.create=false incubator/spring-cloud-data-flow

    【讨论】:

    • 这个方法也试过了,和之前分享的完全一样的错误。
    • 我刚刚在 minikube v0.26.1 上尝试了 RBAC 配置体验。我创建了cluster-admin 角色并使用了掌舵聊天(通过:helm install --name my-release --set server.service.type=NodePort incubator/spring-cloud-data-flow)。一切都按预期进行。
    • 我之前尝试过 helm 安装方式,但没有 cluster-admin 角色。就像你上面提到的那样,刚刚尝试了这些,它在本地和谷歌 Kubernetes 引擎上都有效。太感谢了。另外,想知道这是否应该成为 SCDF 参考文档的一部分。请提出建议。
    • 是的,最好在文档中包含它。我添加了spring-cloud/spring-cloud-dataflow-server-kubernetes#282
    【解决方案2】:

    来自安装指南,第 7 步:https://docs.spring.io/spring-cloud-dataflow-server-kubernetes/docs/1.4.0.RELEASE/reference/htmlsingle/#_deploying_using_kubectl

    最新版本的 kubernetes 已在 api-server 上启用了 RBAC。如果您的目标平台启用了 RBAC,您必须让集群管理员在部署数据流服务器之前为您创建角色和角色绑定。他们将数据流服务帐号与需要运行的角色相关联。

    $ kubectl create -f src/kubernetes/server/server-roles.yaml
    $ kubectl create -f src/kubernetes/server/server-rolebinding.yaml
    

    您是否执行了这些步骤?

    【讨论】:

    猜你喜欢
    • 2019-09-18
    • 2012-07-04
    • 2020-04-27
    • 2011-02-26
    • 2018-12-26
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多