kubernetes/go-client 没有从集群配置中恢复数据
No data recover from incluster config with kubernetes/go-client
我用 kubernetes/go-client 做了一个演示,我试图从我的集群中列出 pods。
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没有pods.
我在 minikube 中部署了这个 pod。当我启动一些 kubectl 命令列出 pods 时,这样我可以获得资源,所以它不是权限问题。
我想知道发生了什么以及如何解决它。
存储库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 无权在集群范围内列出 pods。您需要创建 Role 并将其绑定到 ServiceAccount。
有关如何创建此类角色的文章Using RBAC Authorization even has a role example。
我用 kubernetes/go-client 做了一个演示,我试图从我的集群中列出 pods。
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没有pods.
我在 minikube 中部署了这个 pod。当我启动一些 kubectl 命令列出 pods 时,这样我可以获得资源,所以它不是权限问题。
我想知道发生了什么以及如何解决它。
存储库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 无权在集群范围内列出 pods。您需要创建 Role 并将其绑定到 ServiceAccount。
有关如何创建此类角色的文章Using RBAC Authorization even has a role example。