为了账号安全,请及时绑定邮箱和手机立即绑定

在非默认命名空间中部署时,Cluster Config 无法获取 Pod

在非默认命名空间中部署时,Cluster Config 无法获取 Pod

Go
小怪兽爱吃肉 2023-05-08 18:04:02
当我将 golang 服务部署到命名空间以外的任何default命名空间时,该服务无法检索任何命名空间上的 pod。default使用 golang client-go api,部署在命名空间上的相同服务可以完美运行。这是一个安全问题吗?谢谢。
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

这个问题是权限问题。由于您正在使用rest.InClusterConfig(config)创建客户端。这意味着它使用 pod 的服务帐户作为凭证。因此,请检查该服务帐户是否具有在任何命名空间中获取 pod 的权限。


如果 pod 中的服务帐户未定义,则它将使用default服务帐户。


如果您的集群中启用了 RBAC,则检查该命名空间中的角色绑定,以确定您的服务帐户是否具有权限。


# to see the list of role bindings in 'default' namespace

kubectl get rolebindings --namespace default

查看具体rolebinding


kubectl get rolebindings ROLE-BINDING-NAME --namespace default -o yaml

您还可以创建角色和角色绑定以授予权限。

查看完整回答
反对 回复 2023-05-08
?
翻阅古今

TA贡献1780条经验 获得超5个赞

以下是我在 minikube 集群上使用的方法,使默认服务帐户能够访问公共资源上的 crud 操作。明显的警告是您需要在真实集群上小心。


apiVersion: rbac.authorization.k8s.io/v1

kind: Role

metadata:

  name: crud-role

  namespace: default

rules:

- apiGroups: ["", "apps", "batch"]

  resources: [ "deployments", "jobs", "pods", "replicasets", "services" ]

  verbs: [ "create", "get", "list", "delete"]

---

apiVersion: rbac.authorization.k8s.io/v1

kind: RoleBinding

metadata:

  name: crud-role-binding

  namespace: default

roleRef:

  apiGroup: rbac.authorization.k8s.io

  kind: Role

  name: crud-role

subjects:

  - kind: ServiceAccount

    name: default

    namespace: default


查看完整回答
反对 回复 2023-05-08
?
POPMUISE

TA贡献1765条经验 获得超5个赞

我收到了类似的错误,但是来自在默认命名空间中使用 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/v1

kind: ClusterRole

metadata:

  name: query-role

  namespace: default

rules:

- apiGroups: ["", "apps", "batch"]

  resources: [ "deployments", "jobs", "pods", "replicasets", "services" ]

  verbs: [ "get", "list" ]

---

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

  name: query-role-binding

  namespace: default

roleRef:

  apiGroup: rbac.authorization.k8s.io

  kind: ClusterRole

  name: query-role

subjects:

  - kind: ServiceAccount

    name: default

    namespace: default


查看完整回答
反对 回复 2023-05-08
  • 3 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信