5.13. 基于 Go 的 Operator 的对象修剪工具

operator-lib 修剪工具使基于 Go 的 Operator 清理或修剪对象(当不再需要时)。Operator 作者也可以使用实用程序创建自定义 hook 和策略。

5.13.1. 关于 operator-lib 修剪工具

对象(如作业或 pod)作为 Operator 生命周期的一个普通部分创建。如果集群管理员或 Operator 没有删除这些对象,它们可以保留在集群中,并消耗资源。

在以前的版本中,可以使用以下选项修剪不必要的对象:

  • Operator 作者必须为其 Operator 创建唯一的修剪解决方案。
  • 集群管理员必须自行清理对象。

operator-lib pruning(修剪)工具可为给定的命名空间从 Kubernetes 集群中删除对象。该程序库被添加到 operator-lib0.9.0 版本中,作为 Operator Framework 的一部分。

5.13.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{"default"},
        Strategy: StrategyConfig{
                Mode:            MaxCountStrategy,
                MaxCountSetting: 1,
        },
        PreDeleteHook: myhook,
}

修剪工具配置文件通过使用以下字段定义修剪操作:

配置字段描述

log

用于处理库日志消息的日志记录器。

DryRun

确定是否应删除资源的布尔值。如果设置为 true,则实用程序将运行,但不会删除资源。

Clientset

用于 Kubernetes API 调用的 client-go Kubernetes ClientSet。

LabelSelector

用于查找要修剪的资源的 Kubernetes 标签选择器表达式。

Resources

Kubernetes 资源类型.PodKindJobKind 目前被支持。

命名空间

用于搜索资源的 Kubernetes 命名空间列表。

策略

要运行的策略。

Strategy.Mode

目前支持 MaxCountStrategyMaxAgeStrategyCustomStrategy

Strategy.MaxCountSetting

MaxCountStrategy 的整数值,用于指定修剪实用程序运行后应保留多少个资源。

Strategy.MaxAgeSetting

Go time.Duration 字符串值,如 48h,用于指定要修剪的资源的年龄。

Strategy.CustomSettings

制作可传递到自定义策略函数的值映射。

PreDeleteHook

可选:在修剪资源前调用 Go 功能。

CustomStrategy

可选:实现自定义修剪策略的 Go 功能

修剪执行

您可以通过在修剪配置上运行 execute 功能来调用修剪操作。

err := cfg.Execute(ctx)

您还可以使用 cron 软件包或通过触发器的事件调用修剪程序来调用修剪操作。