my-dlq / blog-example

博客中的示例文件,包含 Kubernetes、Jenkins、Go、Java、SpringBoot、SpringCloud 知识示例等,将结合博客逐步讲解整体的知识内容体系。
http://www.mydlq.club
532 stars 436 forks source link

运行springcloud-kubernetes-discovery-demo报错 #11

Closed azui007 closed 3 years ago

azui007 commented 3 years ago

访问http://192.168.199.139:32053/instance?name=default 错误内容如下: Failure executing: GET at: https://10.96.0.1/api/v1/namespaces/default/endpoints/default. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. endpoints "default" is forbidden: User "system:serviceaccount:default:default" cannot get resource "endpoints" in API group "" in the namespace "default".

my-dlq commented 3 years ago

猜测三点:

根据你提供的错误信息来看,是因为部署的应用在 deployment 资源文件中没有指定 serviceAccountName 参数,所以使用 "system:serviceaccount:default:default" 这个默认 serviceAccount 了,解决办法就是按第二条那样,创建 rbac 资源,并且在 deployment 资源的 serviceAccountName 中指定创建的 serviceAccount 名称。

azui007 commented 3 years ago

猜测三点:

  • (1) 如果是在本地环境运行,需要在本地用户目录添加 kubernetes 的连接配置 ./kube/config 文件。
  • (2) 如果是在 kubernetes 中运行,可以参考这个部署 springcloud kubernetes 服务发现 demo 部署文件 执行部署。
  • (3) 还可能是 springcloud kubernetes 版本和你部署的 kubernetes 中的 kube-apiserver 提供的 api 不兼容导致,我写博客时 springcloud kuberenetes 版本为 1.0.2.RELEASE,kubernetes 版本为 1.14。不知道会不会是这个导致。

根据你提供的错误信息来看,是因为部署的应用在 deployment 资源文件中没有指定 serviceAccountName 参数,所以使用 "system:serviceaccount:default:default" 这个默认 serviceAccount 了,解决办法就是按第二条那样,创建 rbac 资源,并且在 deployment 资源的 serviceAccountName 中指定创建的 serviceAccount 名称。

感谢回复。 已经解决。解决过程如下: 1,使用部署文件创建rbac和deployment

然后访问service就可以正常获取结果了。 测试环境如下:kuberenetes 1.21

azui007 commented 3 years ago

再次感谢博主的帮助