K8S Job 自动删除周期实现方法

随着 K8S 的广泛应用,K8S Job 作为一种用于批处理任务的 Controller,经常会被用于启动一次性任务。然而,有时我们需要设置一个自动删除周期,确保任务完成后自动清理资源,避免资源浪费。本文将介绍如何在 K8S 集群中实现"K8S Job 自动删除周期"的功能。

整体流程:

| 步骤 | 操作 |
| ---- | ---- |
| 步骤一 | 创建一个 Job 资源 |
| 步骤二 | 创建一个 CronJob 资源 |
| 步骤三 | 配置 CronJob 的定时任务 |
| 步骤四 | 配置 CronJob 的 JobTemplate 中包含的 Job 的自动删除周期 |

具体操作步骤:

### 步骤一:创建一个 Job 资源

首先,我们需要创建一个 Job 资源,用于运行我们的任务。

```yaml
apiVersion: batch/v1
kind: Job
metadata:
name: my-job
spec:
template:
spec:
containers:
- name: my-container
image: my-image
restartPolicy: Never
```

在这个示例中,我们创建了一个名为 my-job 的 Job 资源,其中包含一个容器 my-container,使用了镜像 my-image,且设置了 restartPolicy 为 Never,确保 Job 完成后不重启。

### 步骤二:创建一个 CronJob 资源

接下来,我们需要创建一个 CronJob 资源,用于定时执行我们的 Job。

```yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: my-cronjob
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: my-container
image: my-image
restartPolicy: Never
```

在这个示例中,我们创建了一个名为 my-cronjob 的 CronJob 资源,设置了定时任务的 schedule 为每分钟执行一次。

### 步骤三:配置 CronJob 的定时任务

需要说明的是,CronJob 使用的时间表达式和传统的 Cron 表达式有一些区别。在 K8S 中,时间表达式的格式为 `minute hour day-of-month month day-of-week`,使用`*`代表任意值。

### 步骤四:配置 CronJob 的 JobTemplate 中包含的 Job 的自动删除周期

为了实现自动删除周期,我们需要设置 Job 的 ttlSecondsAfterFinished 字段,表示 Job 完成后多久自动删除。

```yaml
apiVersion: batch/v1
kind: Job
metadata:
name: my-job
spec:
ttlSecondsAfterFinished: 3600
template:
spec:
containers:
- name: my-container
image: my-image
restartPolicy: Never
```

在这个示例中,我们设置了 my-job 的 ttlSecondsAfterFinished 为 3600 秒,即任务完成后 1 小时自动删除。

以上就是实现"K8S Job 自动删除周期"的全部操作步骤,通过设置 CronJob 的 JobTemplate 中包含的 Job 的 ttlSecondsAfterFinished 字段,我们可以实现任务完成后自动删除的功能。希望这篇文章对你有所帮助!