Kubernetes日志,用户“system:serviceaccount:default:default”无法在命名空间中获取服务

禁止!已配置的服务帐户无权访问.服务帐户可能已被撤销.用户“system:serviceaccount:default:default”无法在命名空间“mycomp-services-process”中获取服务

对于上述问题,我创建了“mycomp-service-process”命名空间并检查了问题.

但它再次显示如下消息:

消息:禁止!已配置的服务帐户无权访问.服务帐户可能已被撤销.用户“system:serviceaccount:mycomp-services-process:default”无法在命名空间“mycomp-services-process”中获取服务

最佳答案
当然,创建命名空间不会解决问题,因为这根本不是问题.

在第一个错误中,问题是默认命名空间中的serviceaccount default无法获取服务,因为它无法访问list / get服务.因此,您需要做的是使用clusterrolebinding为该用户分配角色.

遵循一组最低权限,您可以先创建一个可以访问列表服务的角色:

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: service-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["services"]
  verbs: ["get", "watch", "list"]

上面代码片段的作用是创建一个可以列出,获取和观看服务的集群. (您必须创建一个yaml文件并应用上述规范)

现在我们可以使用此clusterrole创建clusterrolebinding:

kubectl create clusterrolebinding service-reader-pod \
  --clusterrole=service-reader  \
  --serviceaccount=default:default

在上面的命令中,service-reader-pod是clusterrolebinding的名称,它将服务读取器clusterrole分配给默认命名空间中的default serviceaccount.您遇到的第二个错误可以遵循类似的步骤.

在这种情况下,我创建了clusterrole和clusterrolebinding,但您可能希望创建角色和角色绑定.你可以查看documentation in detail here

转载注明原文:Kubernetes日志,用户“system:serviceaccount:default:default”无法在命名空间中获取服务 - 代码日志