DaemonSet Job CronJob 概念理解
DaemonSet Job CronJob 概念理解
在 Kubernetes(k8s)中,DaemonSet、Job 和 CronJob 是三种用途完全不同的工作负载(Workload)控制器,它们分别用于不同的场景,下面为你详细讲解它们的核心概念、应用场景、区别与典型用法,帮助你清晰理解它们的作用与选择。
一、总览对比表
控制器类型 | 是否长期运行 | 是否重复执行 | 主要用途 | 典型场景 | 是否有状态 |
---|---|---|---|---|---|
DaemonSet | ✅ 是(每个节点持续运行) | ❌ 否 | 在每个节点上运行一个常驻 Pod | 日志收集、监控代理、网络插件等 | 通常无状态,但也可以是 |
Job | ❌ 否(任务完成后自动退出) | ❌ 否(只运行一次) | 运行一次性任务,直到成功完成 | 数据处理、批量计算、初始化任务 | 通常无状态 |
CronJob | ❌ 否(按计划运行,每次运行完退出) | ✅ 是(按时间计划重复执行) | 定时运行任务,如每天/每小时执行一次 | 定时备份、定时报表、定期清理 | 通常无状态 |
二、详细讲解
1. 🟢 DaemonSet(守护进程集)
✅ 核心特点:
- 确保每个节点(Node)上运行一个指定的 Pod 副本(除非你配置了节点选择器,只运行在部分节点)。
- 当有新节点加入集群时,Kubernetes 会自动在该节点上启动对应的 Pod。
- 当节点被删除或不可用时,该节点上的 Pod 会被自动回收。
- 常用于部署节点级别的守护程序。