5.15. 基于 Go 的 Operator 的对象修剪工具
operator-lib
修剪工具使基于 Go 的 Operator 清理或修剪对象(当不再需要时)。Operator 作者也可以使用实用程序创建自定义 hook 和策略。
5.15.1. 关于 operator-lib 修剪工具
对象(如作业或 pod)作为 Operator 生命周期的一个普通部分创建。如果集群管理员或 Operator 没有删除这些对象,它们可以保留在集群中,并消耗资源。
在以前的版本中,可以使用以下选项修剪不必要的对象:
- Operator 作者必须为其 Operator 创建唯一的修剪解决方案。
- 集群管理员必须自行清理对象。
operator-lib
pruning(修剪)工具可为给定的命名空间从 Kubernetes 集群中删除对象。该程序库被添加到 operator-lib
库的 0.9.0
版本中,作为 Operator Framework 的一部分。
5.15.2. 修剪工具配置
operator-lib
修剪工具使用 Go 编写,包括基于 Go 的 Operator 的通用修剪策略。
配置示例
cfg = Config{ log: logf.Log.WithName("prune"), DryRun: false, Clientset: client, LabelSelector: "app=<operator_name>", Resources: []schema.GroupVersionKind{ {Group: "", Version: "", Kind: PodKind}, }, Namespaces: []string{"<operator_namespace>"}, Strategy: StrategyConfig{ Mode: MaxCountStrategy, MaxCountSetting: 1, }, PreDeleteHook: myhook, }
修剪工具配置文件通过使用以下字段定义修剪操作:
配置字段 | 描述 |
---|---|
| 用于处理库日志消息的日志记录器。 |
|
确定是否应删除资源的布尔值。如果设置为 |
| 用于 Kubernetes API 调用的 client-go Kubernetes ClientSet。 |
| 用于查找要修剪的资源的 Kubernetes 标签选择器表达式。 |
|
Kubernetes 资源类型. |
| 用于搜索资源的 Kubernetes 命名空间列表。 |
| 要运行的策略。 |
|
目前支持 |
|
|
|
Go |
| 制作可传递到自定义策略函数的值映射。 |
| 可选:在修剪资源前调用 Go 功能。 |
| 可选:实现自定义修剪策略的 Go 功能 |
修剪执行
您可以通过在修剪配置上运行 execute 功能来调用修剪操作。
err := cfg.Execute(ctx)
您还可以使用 cron 软件包或通过触发器的事件调用修剪程序来调用修剪操作。