Forbidden!Configured service account doesn't have access. Service account may have been revoked. User "system:serviceaccount:default:default" cannot get services in the namespace "mycomp-services-process"
对于上述问题,我创建了“mycomp-service-process”命名空间并检查了问题。
但它再次显示了这样的信息:
Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. User "system:serviceaccount:mycomp-services-process:default" cannot get services in the namespace "mycomp-services-process"
答案 0 :(得分:16)
创建命名空间当然不会解决问题,因为这根本不是问题。
在第一个错误中,问题是默认名称空间serviceaccount
中的can not get services
默认值,因为它无法访问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分配给默认命名空间中的默认serviceaccount。对于您面临的第二个错误,可以执行类似的步骤。
在这种情况下,我创建了clusterrole
和clusterrolebinding
,但您可能想要创建role
和rolebinding
。您可以查看documentation in detail here
答案 1 :(得分:1)
您应该将角色为system:serviceaccount:default:default
的服务帐户cluster-admin
(这是绑定到Pod的默认帐户)绑定,只需创建一个Yaml(名称为fabric8-rbac.yaml
),其内容如下:>
# NOTE: The service account `default:default` already exists in k8s cluster.
# You can create a new account following like this:
#---
#apiVersion: v1
#kind: ServiceAccount
#metadata:
# name: <new-account-name>
# namespace: <namespace>
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: fabric8-rbac
subjects:
- kind: ServiceAccount
# Reference to upper's `metadata.name`
name: default
# Reference to upper's `metadata.namespace`
namespace: default
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
然后,通过运行kubectl apply -f fabric8-rbac.yaml
来应用它。
如果要取消绑定它们,只需运行kubectl delete -f fabric8-rbac.yaml
。