如何解决使用 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 没有 pods。
我在 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”无法在集群范围内列出 API 组“”中的资源“pods”
如错误消息所示,ServiceAccount 无权在集群范围内列出 pod。您需要创建角色并将其绑定到 ServiceAccount。
文章 Using RBAC Authorization 甚至有关于如何创建这样一个角色的 role example。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。