为了账号安全,请及时绑定邮箱和手机立即绑定

golang 获取 kubernetes 资源(30000+ configmaps)失败

golang 获取 kubernetes 资源(30000+ configmaps)失败

Go
慕仙森 2022-06-01 16:54:39
我想使用 client-go 来获取 Kubernetes 集群中的资源。由于数据量很大,当我获取 configmap 连接时,连接已关闭。stream error when reading response body, may be caused by closed connection. Please retry. Original error: stream error: stream ID 695; INTERNAL_ERROR配置图:$ kubectl -n kube-system get cm |wc -l    35937代码:cms, err := client.CoreV1().ConfigMaps(kube-system).List(context.TODO(), v1.ListOptions{})我尝试使用 Limit 参数,我可以获取一些数据,但我不知道如何获取所有数据。cms, err := client.CoreV1().ConfigMaps(kube-system).List(context.TODO(), v1.ListOptions{Limit: 1000 })我是 Go 新手。任何关于如何去做的指示将不胜感激。
查看完整描述

2 回答

?
四季花海

TA贡献1811条经验 获得超5个赞

v1.ListOptions的文档描述了它是如何工作的:

limit 是列表调用返回的最大响应数。如果存在更多项目,服务器会将continue列表元数据上的字段设置为可用于相同初始查询以检索下一组结果的值。

这意味着您应该检查响应,保存continue字段的值(以及实际结果),然后重新发出相同的命令,但continue设置为刚刚看到的值。重复直到返回的continue字段为空(或发生错误)。

有关处理大结果分块的详细信息,请参阅API 概念页面。


查看完整回答
反对 回复 2022-06-01
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您应该使用ListPager对需要查询许多对象的请求进行分页。ListPager 包含缓冲页面,因此与仅使用 Limit 和 Continue 值相比,它提高了性能。



查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信