一、DaemonSet:节点级守护进程控制器
- 核心定义DaemonSet 是确保集群中全部(或指定)节点上,各运行一个 Pod 副本的控制器。当新节点加入集群时,自动为其创建 Pod;节点移除时,自动回收 Pod,是节点级守护进程的标准部署方案。2. 典型使用场景集群监控:在每个节点部署监控 Agent(如 Prometheus Node Exporter)日志采集:部署日志收集器(如 Fluentd),采集节点容器日志集群守护:部署节点安全、网络插件(如 Calico、Flannel)存储管理:部署分布式存储节点 Agent3. 核心特性节点生命周期绑定:Pod 随节点创建 / 销毁自动同步支持节点亲和性,仅在指定节点运行 Pod删除 DaemonSet 会自动清理其创建的所有 Pod
二、StatefulSet:有状态应用的专属控制器 - 核心定义StatefulSet 是管理有状态应用负载的控制器,与 Deployment 最大的区别是:为每个 Pod 维护永久不变的粘性 ID,Pod 不可相互替换,即使重新调度,Pod 名称、网络标识、存储绑定关系始终稳定。2. 核心适用场景稳定的唯一网络标识(如域名、主机名)稳定的持久化存储(如 MySQL、Redis 集群)有序的部署、扩缩容与滚动更新有状态中间件(如 Kafka、Elasticsearch、ZooKeeper)
- 实战示例创建 3 副本的有状态 nginx 应用:apiVersion: apps/v1kind: StatefulSetmetadata: name: webspec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent ports: - containerPort: 80 name: web volumeMounts: - name: www mountPath: /usr/share/nginx/html volumes: - name: www emptyDir: {}4. 核心特性有序启动:Pod 按 web-0 → web-1 → web-2 顺序创建,前一个 Pod 就绪后才启动下一个稳定标识:Pod 名称、DNS 域名永久不变存储绑定:PersistentVolume 与 Pod 一一绑定,Pod 重建后自动挂载原存储
三、Job 与 CronJob:批处理任务控制器1. Job:一次性批处理任务核心定义Job 负责执行一次性、短期的批处理任务,保证任务 Pod 成功执行完成,支持失败重试,适用于数据计算、批量处理等场景。实战示例apiVersion: batch/v1kind: Jobmetadata: name: pispec: template: spec: containers: - name: pi image: busybox imagePullPolicy: IfNotPresent command: ["sh", "-c", "while true; do echo CKA JOB!; done"] restartPolicy: Never backoffLimit: 4kubectl create -f job.ymlkubectl logs <Pod名>kubectl delete -f job.yml2. CronJob:定时周期性任务核心定义CronJob 是基于 Cron 语法的定时任务控制器,用于周期性执行任务,如定时备份、日志清理、报表生成等。实战示例apiVersion: batch/v1kind: CronJobmetadata: name: cronjobtestspec: schedule: "*/1 * * * *" jobTemplate: spec: template: spec: containers: - name: hello image: busybox imagePullPolicy: IfNotPresent command: - /bin/sh - -c - date; echo Hello from the Kubernetes cluster. restartPolicy: OnFailurekubectl create -f cronjob.ymlkubectl get cronjobs,podkubectl logs <Pod名>kubectl delete -f cronjob.yml3. 核心区别控制器 执行方式 适用场景Job 一次性执行 数据计算、批量迁移、一次性任务CronJob 周期性定时执行 定时备份、日志清理、定时报表
四、控制器选型总结控制器类型 核心定位 适用场景ReplicaSet 副本保活 仅保证 Pod 数量,不直接用于生产Deployment 无状态应用管理 微服务、API 服务、无状态 Web 服务DaemonSet 节点级守护进程 监控 Agent、日志采集、网络插件StatefulSet 有状态应用管理 数据库、中间件、分布式存储Job 一次性批处理 数据计算、批量任务CronJob 定时任务 定时备份、周期性运维任务
五、高频问答Q:什么是 DaemonSet?有哪些使用场景?A:DaemonSet 能够保证在集群全部或部分节点上,只运行一个 Pod 副本。新节点加入时自动创建 Pod,节点移除时自动回收 Pod。常见场景包括运行集群监控、日志采集、网络插件等守护进程。Q:什么是 StatefulSet?作用是什么?A:StatefulSet 用于管理有状态应用,为每个 Pod 提供固定且不变的标识、网络名称和存储绑定,保证有序部署、有序扩缩容和稳定持久化,适合数据库、分布式中间件等场景。Q: 什么是 Job 和 CronJob?有什么作用?A:Job 用于处理一次性的批处理任务,确保任务成功执行完成。CronJob 则基于 Cron 表达式实现定时任务,用于周期性执行备份、清理、报表等工作。