如何在单个 API 调用中获取多个 kubernetes 资源的状态?

如何在单个 API 调用中获取多个 kubernetes 资源的状态?

我正在使用 python kubernetes 客户端来控制资源的部署。我想一次轮询多个资源的状态,以提供给定资源集何时可用的近乎实时的反馈。现在我必须单独查询每个资源,这在系统上似乎有些过分,因为每个资源资源按 N 个用户扩展(因此,如果有 6 个资源,则会有 N(6) 个状态检查请求)。

有没有办法查询 API 并获取与给定标签选择器匹配的所有资源的状态?如果没有,我是否应该考虑其他方法?

答案1

获取与给定标签选择器匹配的所有资源的状态?

我首先查看了kubectl它是如何工作的,因为在足够高的详细程度下,它显示了实际的底层 HTTP 事务:

kubectl --v=8 get deploy,pod  -l app.kubernetes.io/name=something

似乎发出了两个单独的GET调用,所以我相信它只是同时让它们运行,然后等待线程。

至于你问题的另一半,

kubectl --v=8 get all -l app.kubernetes.io/name=something

与 CSV 版本功能相同,但似乎做了类似的事情kubectl api-resources(或者可能有一个硬编码的列表来列出它所考虑的内容all?)和然后做同样的事情:将多个线程GET放入飞行状态并等待线程

您可能有兴趣探索如何kubectl rollout status运作,看看这是否对您有帮助。我还尝试添加--watch并被get all告知:

F0730 21:55:36.819494 2887268 helpers.go:115]错误:您只能指定一种资源类型

相关内容