繁体   English   中英

使用 kubernetes/go-client 无法从集群配置中恢复数据

[英]No data recover from incluster config with kubernetes/go-client

我用 kubernetes/go-client 做了一个演示,我尝试列出集群中的 pod。

    config, err := rest.InClusterConfig()

    if err != nil {
        panic(err.Error())
    }

    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        panic(err.Error())
    }

    pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})

    fmt.Fprint(w, "There are d pods in the cluster\n", len(pods.Items))

我创建了 serviceaccount 令牌以分配给运行此代码的 pod。

但是当代码执行时 pods.Items 没有 pod。

我在 minikube 中部署了这个 pod。 当我启动一些 kubectl 命令来列出 pod 时,我可以通过这种方式获取资源,因此不会出现权限问题。

我想知道发生了什么以及如何解决它。


存储库https://github.com/srpepperoni/inframanager.git

图片推送到: https://hub.docker.com/r/jaimeyh/inframanager

我遇到问题的端点是这个:

mux.HandleFunc("/getPods", GetPodsFromNamespace)

您需要检查最后一行的err是否为非零。

pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})

好的,有问题。 pods 被禁止:用户“system:serviceaccount:mis-pruebas:sa-prueba-go”不能在集群 scope 的 API 组“”中列出资源“pods”

如错误消息所示,ServiceAccount 无权列出集群 scope 中的 pod。 您需要创建角色并将其绑定到 ServiceAccount。

使用 RBAC 授权一文甚至有一个角色示例,说明如何创建这样的角色。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM