Kubernetes (K8s) 中的 Job 是用于处理批量处理和一次性任务的资源类型。它确保指定数量的 Pods 成功运行到完成。一旦 Job 中的所有 Pods 成功运行并终止,Job 被视为完成。但是,完成的 Job(及其相关的 Pods)不会自动从 Kubernetes 集群中删除,除非配置了自动清理。
backoffLimit
属性以限制失败重试次数。parallelism
设置并行 Pod 的数量。Kubernetes 1.21 版本引入了一项新功能,允许自动清理已完成的 Job。这是通过在 Job 规范中设置 ttlSecondsAfterFinished
属性来实现的。
场景:创建一个每天执行数据库备份的 Job,并在完成后 24 小时自动清理。
示例代码(YAML 配置文件):
apiVersion: batch/v1
kind: Job
metadata:
name: database-backup
spec:
ttlSecondsAfterFinished: 86400 # 24 hours
template:
spec:
containers:
- name: backup
image: backup-image
command: ["backup-script"]
restartPolicy: Never
场景:运行一个数据处理任务,处理完数据后在 1 小时内自动清理。
示例代码(YAML 配置文件):
apiVersion: batch/v1
kind: Job
metadata:
name: data-processing
spec:
ttlSecondsAfterFinished: 3600 # 1 hour
template:
spec:
containers:
- name: processor
image: data-processor-image
command: ["process-data-script"]
restartPolicy: Never
通过自动清理功能,可以有效管理集群资源,防止完成的 Job 和 Pods 占用不必要的资源。这种方式使得维护 Kubernetes 集群变得更加高效和清晰。