-
汪汪一只猫
这个问题是权限问题。由于您正在使用rest.InClusterConfig(config)创建客户端。这意味着它使用 pod 的服务帐户作为凭证。因此,请检查该服务帐户是否具有在任何命名空间中获取 pod 的权限。如果 pod 中的服务帐户未定义,则它将使用default服务帐户。如果您的集群中启用了 RBAC,则检查该命名空间中的角色绑定,以确定您的服务帐户是否具有权限。# to see the list of role bindings in 'default' namespacekubectl get rolebindings --namespace default查看具体rolebindingkubectl get rolebindings ROLE-BINDING-NAME --namespace default -o yaml您还可以创建角色和角色绑定以授予权限。
-
翻阅古今
以下是我在 minikube 集群上使用的方法,使默认服务帐户能够访问公共资源上的 crud 操作。明显的警告是您需要在真实集群上小心。apiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata: name: crud-role namespace: defaultrules:- apiGroups: ["", "apps", "batch"] resources: [ "deployments", "jobs", "pods", "replicasets", "services" ] verbs: [ "create", "get", "list", "delete"]---apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: name: crud-role-binding namespace: defaultroleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: crud-rolesubjects: - kind: ServiceAccount name: default namespace: default
-
POPMUISE
我收到了类似的错误,但是来自在默认命名空间中使用 golang 客户端的 pod:pods 被禁止:用户“system:serviceaccount:default:default”无法在集群范围内列出 API 组“”中的资源“pods”戈兰代码片段:if configMode == "IN_CLUSTER" { // creates the in-cluster config config, err := rest.InClusterConfig() if err != nil { panic(err.Error()) } return config, err}它仅针对获取和列表进行了修改:apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRolemetadata: name: query-role namespace: defaultrules:- apiGroups: ["", "apps", "batch"] resources: [ "deployments", "jobs", "pods", "replicasets", "services" ] verbs: [ "get", "list" ]---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: query-role-binding namespace: defaultroleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: query-rolesubjects: - kind: ServiceAccount name: default namespace: default