gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:08:42 24 4
gpt4 key购买 nike

我用 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 token 以分配给运行此代码的 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{})

OK, there is the problem. pods is forbidden: User "system:serviceaccount:mis-pruebas:sa-prueba-go" cannot list resource "pods" in API group "" at the cluster scope


如错误消息所示,ServiceAccount 无权列出集群范围内的 pod。您需要创建角色并将其绑定(bind)到 ServiceAccount。
文章 Using RBAC Authorization甚至有一个 role example对于如何创建这样的角色。

关于go - 使用 kubernetes/go-client 无法从集群配置中恢复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66191218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com