【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 表达式实现定时任务,用于周期性执行备份、清理、报表等工作。
相关推荐
阿里云云原生10 小时前
深度解构:当 Append-only 的 SLS 遇上 Update/Delete,是如何实现设计权衡的?
云原生
Web3探索者12 小时前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo14 小时前
Linux系统中网线与USB网络共享冲突
linux
荣--16 小时前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森17 小时前
动手实战学 Docker — 从零到集群编排完全指南
运维
Java之美18 小时前
一次k8s升级引发的DevicePlugin注册失败
云原生·kubernetes
秋播18 小时前
nerdctl推送rancher本地镜像到harbor
云原生
Avan_菜菜1 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
阿里云云原生2 天前
告别冗长链路!Kafka × Table Bucket 实现开放表格式零 ETL 实时入湖
云原生·kafka