【Kubernetes】(七) 控制器2

一、DaemonSet:节点级守护进程控制器

  1. 核心定义DaemonSet 是确保集群中全部(或指定)节点上,各运行一个 Pod 副本的控制器。当新节点加入集群时,自动为其创建 Pod;节点移除时,自动回收 Pod,是节点级守护进程的标准部署方案。2. 典型使用场景集群监控:在每个节点部署监控 Agent(如 Prometheus Node Exporter)日志采集:部署日志收集器(如 Fluentd),采集节点容器日志集群守护:部署节点安全、网络插件(如 Calico、Flannel)存储管理:部署分布式存储节点 Agent3. 核心特性节点生命周期绑定:Pod 随节点创建 / 销毁自动同步支持节点亲和性,仅在指定节点运行 Pod删除 DaemonSet 会自动清理其创建的所有 Pod
    二、StatefulSet:有状态应用的专属控制器
  2. 核心定义StatefulSet 是管理有状态应用负载的控制器,与 Deployment 最大的区别是:为每个 Pod 维护永久不变的粘性 ID,Pod 不可相互替换,即使重新调度,Pod 名称、网络标识、存储绑定关系始终稳定。2. 核心适用场景稳定的唯一网络标识(如域名、主机名)稳定的持久化存储(如 MySQL、Redis 集群)有序的部署、扩缩容与滚动更新有状态中间件(如 Kafka、Elasticsearch、ZooKeeper)
  3. 实战示例创建 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 表达式实现定时任务,用于周期性执行备份、清理、报表等工作。
相关推荐
2401_840192273 分钟前
k8s的crd、operator、cr分别是什么?
运维·分布式·kubernetes·prometheus
草木深雨纷纷4 分钟前
mt管理器手机版下载2026最新版更新下载分享
linux·运维·网络·智能手机
扛枪的书生6 分钟前
ELK 学习总结
linux
OYangxf19 分钟前
对TinyRedis中主从复制的理解
运维·服务器
Irene199122 分钟前
大数据开发面试常问的 Linux 命令 总结
大数据·linux
銳昊城22 分钟前
项目六: 配置与管理DNS服务器(2) C2
运维·服务器
辰尘_星启27 分钟前
【Linux】Python Socket编程指南
linux·python·socket·系统·通信
搞科研的小刘选手1 小时前
【天津市电源学会主办】第七届能源电力与自动化工程国际学术会议(ICEPAE 2026)
运维·自动化·能源·电力·电气·控制工程·节能
恋奴娇1 小时前
ubuntu 25 突破pipewire 不能以root帐号运行 系统没有声音输入输出设备
linux·运维·ubuntu