k8s pod、job和cronJob
·
1、什么是pod
Pod是Kubernetes的最小调度单元,包含一个或多个容器(如应用容器、辅助容器),共享网络和存储资源。pod本身没有自愈能力,需通过控制器(如Deployment、Job)管理生命周期。
2、什么是job
Job是Kubernetes的控制器,用于创建并管理一次性任务的Pod。Job 会创建一个或多个 Pod,并将继续重试执行 Pod,直到指定数量的 Pod 成功终止。job创建的pod停止运行后,默认不会删除pod。
apiVersion: batch/v1
kind: Job
metadata:
name: data-processor
spec:
completions: 3 # 需要成功完成的 Pod 数量(默认 1)
parallelism: 2 # 允许并行运行的 Pod 数量(默认 1)
backoffLimit: 4 # 失败重试次数(默认 6)
template:
spec:
containers:
- name: processor
image: data-processor:v1
restartPolicy: Never # 必须设为 Never 或 OnFailure
3、什么是cronJob
CronJob是Job的扩展,用于管理周期性任务,通过时间表达式(cron格式)触发Job。cronJob支持cron时间表达式如下:
┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 月的某天 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 周的某天 (0 - 6)(周一到周六)
│ │ │ │ │ 或者是 sun,mon,tue,web,thu,fri,sat
│ │ │ │ │
│ │ │ │ │
* * * * *
cronJob配置如下:
apiVersion: batch/v1
kind: CronJob
metadata:
name: hello
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox:1.28
imagePullPolicy: IfNotPresent
restartPolicy: OnFailure
4、使用场景
- pod使用场景:
- 基础运行单元:所有容器化应用的运行载体,例如Web服务(Nginx、Tomcat)、数据库(MySQL)等。
- 临时任务:手动创建的一次性任务(如调试容器),但需注意自主式Pod不具备自动恢复能力。
- 特殊需求:通过静态Pod(由kubelet直接管理)在特定节点运行监控、日志收集等工具。
- job使用场景:
- 任务保障:支持completions(总成功次数)和backoffLimit(失败重试次数)。
- 重启策略:需设置为Never或OnFailure,避免无限重启。
- 资源释放:任务完成后Pod自动终止,不占用资源。
- cronJob使用场景:
- 定时任务:每日备份数据库、每小时清理临时文件、每周发送统计报告等。
- 维护作业:定期执行系统检查、日志轮转等运维操作。
更多推荐

所有评论(0)