Kubernetes 使用ServiceAccount时,使用ClusterRole的Rolebinding不限于命名空间

Kubernetes 使用ServiceAccount时,使用ClusterRole的Rolebinding不限于命名空间,kubernetes,Kubernetes,我希望通过将serviceaccount与clusterRole关联来设置serviceaccount授权,但仅限于使用rolebinding的命名空间 我声明了一个clusterrole,并在指向该clusterrole的命名空间中配置了rolebinding。 但是,当我使用rolebinding中定义的serviceaccount令牌访问集群时,我并不局限于名称空间。 另一方面,当我使用“用户”证书访问集群时,这是有效的。我只能访问名称空间 Kubernetes v1.13.5 我定义的角

我希望通过将serviceaccount与clusterRole关联来设置serviceaccount授权,但仅限于使用rolebinding的命名空间

我声明了一个clusterrole,并在指向该clusterrole的命名空间中配置了rolebinding。 但是,当我使用rolebinding中定义的serviceaccount令牌访问集群时,我并不局限于名称空间。
另一方面,当我使用“用户”证书访问集群时,这是有效的。我只能访问名称空间

Kubernetes v1.13.5

我定义的角色绑定:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: exploitant
  namespace: myNamespace
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: view
subjects:
- kind: ServiceAccount
  name: default
  namespace: myNamespace
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: myUser
这就是我得到的:

kubectl auth can-i--token=XXXXXXXX get po-n myNamespace
对
-->果然

kubectl auth can-i--token=XXXXXXXX获取订单-n kube系统
对

-->没想到

解决方案是创建一个特定的ServiceAccount。不应使用“默认”serviceAccount。默认情况下,所有POD都使用默认服务帐户运行(如果您没有指定一个帐户)。所以,默认服务帐户存在于所有命名空间中,所以默认服务帐户可以读取所有命名空间中的POD