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、使用场景

  1. pod使用场景:
    • 基础运行单元:所有容器化应用的运行载体,例如Web服务(Nginx、Tomcat)、数据库(MySQL)等。
    • 临时任务:手动创建的一次性任务(如调试容器),但需注意自主式Pod不具备自动恢复能力。
    • 特殊需求:通过静态Pod(由kubelet直接管理)在特定节点运行监控、日志收集等工具。
  2. job使用场景:
    • 任务保障:支持completions(总成功次数)和backoffLimit(失败重试次数)。
    • 重启策略:需设置为Never或OnFailure,避免无限重启。
    • 资源释放:任务完成后Pod自动终止,不占用资源。
  3. cronJob使用场景:
    • 定时任务:每日备份数据库、每小时清理临时文件、每周发送统计报告等。
    • 维护作业:定期执行系统检查、日志轮转等运维操作。
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐