从你的错误看来你的ServiceAccount
没有执行该特定操作所需的访问权限。您已发布列表代码Pod
对象,但你的错误是抱怨列表Namespace
对象。
User "system:serviceaccount:badefault" cannot list resource "namespaces" in API group "" at the cluster scope
您可以向您的集群管理员提供访问权限ServiceAccount
用这个命令:
kubectl create clusterrolebinding default-pod --clusterrole cluster-admin --serviceaccount=<namespace>:badefault
如果您不想授予它集群管理员访问权限,您可以定义 Custom ClusterRole 来限制您想要的 apiGroups 和资源ServiceAccount
访问:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: badefault-cluster-role
rules:
- apiGroups:
- ""
resources:
- pods
- namespaces
verbs:
- create
- delete
- deletecollection
- get
- list
- patch
- update
- watch
然后您可以定义一个ClusterRoleBinding
绑定这个ClusterRole
给你的ServiceAccount
object:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: badefault-cluster-role-binding
subjects:
- kind: ServiceAccount
name: badefault
namespace: default
roleRef:
kind: ClusterRole
name: badefault-cluster-role
apiGroup: rbac.authorization.k8s.io
有了这个你的ServiceAccount
应该能够访问pods
and namespace
集群范围内的对象。