借助 Kubernetes,您可以使用“垃圾收集器”在删除拥有的资源时自动删除依赖资源。我想知道打印出拥有资源的依赖关系树的最简单方法,如果需要的话可能会限制树深度。 我理解 API 服务崩溃的可能性,因为它能够扇出集群中的所有资源,也可能理解为什么这不是一件容易实现的事情,但我一直在努力寻找可用的、社区支持的解决方法,甚至与该主题相关的讨论/问题(可能是我糟糕的搜索技巧),因此任何有助于实现这一目标的帮助都会很棒!
为了使事情更加具体,我想要实现的抽象
kubectl get
查询的具体示例将类似于
kubectl get scheduledworkflow <workflow name> --dependents
:
这将找到 Kubeflow Pipelines ScheduledWorkflow
Workflow
Workflow
Pod
和 Volume
资源(还有一些其他类型,但想要描绘出这些不同资源类型的图片)。
Workflow
资源,因为我们的大多数
Workflow
会生成 1k+ Pod
,因此我们制定了相当激进的 GC 策略。即便如此,列出这些目前还是很痛苦,需要使用自定义脚本来完成,但想知道是否有更高级别的 CLI、SDK 或 API 可用(或社区中任何致力于此问题的小组!)。我看到有两种选择:
可能这就是您已经提到的:“需要使用自定义脚本来做到这一点”。 想法是获取所需资源组的
json
,然后通过任何可用/已知的语言(如bash/python/java/等)和/或使用
jq
来处理它。所有依赖对象都有 ownerReference
字段,允许匹配资源。有关业主和家属的更多信息jq 工具和示例基于kubernetes垃圾收集器编写自己的工具 Kubernetes 垃圾收集器基于
graph
构建的
GraphBuilder
工作:垃圾收集器源代码
GarbageCollector 运行反射器来监视托管 API 的更改 对象,将结果汇集到单线程 dependencyGraphBuilder,构建一个缓存依赖关系的图 物体之间
graph_builder 源代码
graph
有
node
类型:图数据结构api server
使用可用于不同语言的
kubernetes 客户端库会更方便。