我正在使用 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]错误:您只能指定一种资源类型