猿问

没有数据从带有 kubernetes/go-client 的 incluster config 恢复

我用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))

我创建了服务帐户令牌以分配给运行此代码的 Pod。

但是当代码被执行时,Pod。项目没有 Pod。

我在minikube中部署了这个pod。当我启动一些用于列出 pod 的 kubectl 命令时,通过这种方式,我可以获得资源,因此没有 t 权限问题。

我想知道发生了什么,我该如何解决它。


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

图像被推入:https://hub.docker.com/r/jaimeyh/inframanager

我有问题的端点是这个:

mux.HandleFunc("/getPods", GetPodsFromNamespace)


一只斗牛犬
浏览 171回答 1
1回答

RISEBY

您需要检查最后一行是否为非 nil。errpods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})好的,有问题了。pods 被禁止:用户 “system:serviceaccount:mis-pruebas:sa-prueba-go” 无法在集群范围内列出 API 组 “” 中的资源“pods”如错误消息所示,服务帐户无权在群集范围内列出 Pod。您需要创建角色并将其绑定到服务帐户。使用 RBAC 授权一文甚至提供了有关如何创建此类角色的角色示例。
随时随地看视频慕课网APP

相关分类

Go
我要回答