使用Kubernetes,您可以使用垃圾收集器在删除所属资源时自动删除相关资源。我想知道打印出拥有资源的依赖树的最简单方法,如果需要的话,可能限制在树的深度。
我理解应用程序接口服务崩溃的可能性,因为它能够扩展到集群中的所有资源,并且很可能这不是一个容易实现的壮举,但我甚至一直在努力寻找可用的、社区支持的解决方案,甚至是与这个主题相关的讨论/问题(可能是我糟糕的搜索技能),所以实现这一点的任何帮助都是很棒的!
为了使事情更加具体,我想要实现的抽象kubectl get
查询的一个具体例子是类似于kubectl get scheduledworkflow <workflow name> --dependents
的东西。
ScheduledWorkflow
资源,然后再恢复,Workflow
资源,Workflow
资源,许多Pod
和Volume
资源(还有其他几种类型,但希望描绘这些不同资源类型的图片)。我们通常只在任何时候将少量的Argo Workflow
资源保存在集群中,因为我们的Workflow
的大多数都会生成1k+ Pod
,因此我们已经制定了相当激进的GC策略。即使如此,列出这些策略还是很痛苦的,需要使用自定义脚本来完成,但不知道是否有更高级别的CLI、SDK或API可用(或者社区中任何致力于这个问题的小组!)
发布于 2021-07-28 01:50:09
没有现成的解决办法。
我认为有两种办法可以进行:
1 -可能就是您已经提到的:“需要使用自定义脚本来完成它”。
其思想是获取所需资源组的json
,然后使用任何可用/已知的语言(如bash/python/java/etc和/或使用jq
)处理它。所有依赖对象都有ownerReference
字段,该字段允许匹配资源。
2 -基于kubernetes垃圾收集器编写自己的工具
基于graph
的Kubernetes垃圾收集器工作
通过使用“反射器”,图形始终是最新的:
GarbageCollector运行反射器来监视托管API对象的变化,将结果导入单线程dependencyGraphBuilder,该dependencyGraphBuilder构建一个图形缓存对象之间的依赖关系。
生成器源代码来获得它的整个逻辑。
构建的graph
具有node
类型:
此外,值得一提的是,使用api server
更方便地使用适用于不同语言的kubernetes客户图书馆。
https://stackoverflow.com/questions/68461283
复制相似问题