【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 表达式实现定时任务,用于周期性执行备份、清理、报表等工作。
相关推荐
WJ.Polar2 小时前
Ansible任务控制
linux·运维·网络·python·ansible
计算机安禾2 小时前
【Linux从入门到精通】第10篇:软件包管理——Linux如何安装与卸载软件
java·linux·运维·服务器·编辑器
zzzyyy5382 小时前
Linux进程控制(2)
linux·服务器
热爱Liunx的丘丘人2 小时前
PlayBook常用的模块编写
linux·服务器·ansible
wellc2 小时前
Nginx作用以及应用场景
运维·nginx
SilentSamsara2 小时前
etcd 运维:数据一致性、备份恢复与性能调优
运维·服务器·数据库·kubernetes·kubectl·k8s·etcd
lclcooky2 小时前
Nginx代理到https地址忽略证书验证配置
运维·nginx·https
青槿吖2 小时前
Feign 微服务远程调用指南:告别手写 RestTemplate
java·redis·后端·spring·微服务·云原生·架构
前端达人2 小时前
第12课:MCP 与 Hooks——给 Claude Code 装上插件和自动化引擎
运维·自动化