[CKAD] 掌控Kubernetes工作负载的四大Pod控制器全面总结

大家好!今天我将为大家完美总结Kubernetes工作负载管理的核心——四大Pod控制器

不仅仅是简单地启动Pod,为每种情况选择最优工具是云安全和基础设施设计的起点。大约15分钟,您就可以掌握实践工作和考试(CKAD)所需的所有核心知识。


📑 目录

  1. 概述:为什么要使用控制器? (Desired State)
  2. Deployment:无状态(Stateless)应用程序的王者
  3. StatefulSet:有状态(Stateful)专业户的管理者
  4. DaemonSet:守护所有节点的哨兵
  5. Job & CronJob:短小精悍的批处理高手
  6. [附录] 控制器选择指南及实战技巧

0. 概述:为什么要使用控制器? 🤔

在Kubernetes中,Pod是随时可能消亡的消耗品。正如讲师所强调的,我们不会手动逐个管理Pod。相反,我们向控制器声明“我期望的状态(Desired State)”,然后控制器会监控当前状态并维持该状态。


1. Deployment:无状态(Stateless)应用程序的王者 👑

这是最常用的控制器。它针对无状态应用程序进行了优化,例如Web服务器或API服务器,这些应用程序的Pod之间无需相互区分。

  • 主要功能: 自我修复(Self-healing)、扩缩容、滚动更新和回滚。
  • 核心资源: 内部创建ReplicaSet以维护Pod的数量。

💡 实战代码 (YAML)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:1.21

2. StatefulSet:有状态(Stateful)专业户的管理者 🏛️

Pod需要唯一的名称和持久化数据时使用,例如数据库(MySQL, MongoDB)或消息队列(Kafka)。

  • 主要功能: 为Pod分配顺序索引(pod-0, pod-1)、稳定的网络标识符(与Headless Service联动)、单独的卷分配(volumeClaimTemplates)。
  • 区别: 与Deployment不同,即使Pod重启,其名称和关联的卷也会保持不变。

3. DaemonSet:守护所有节点的哨兵 🛡️

当需要在集群内所有(或满足特定条件的)节点上精确地运行一个Pod时使用。

  • 用途: 日志收集器(Fluentd)、监控代理(Prometheus Node Exporter)、网络插件。
  • 特点: 新节点添加时自动部署Pod,节点删除时Pod也随之移除。

4. Job & CronJob:批处理高手 🏃‍♂️⏰

管理那些不是24小时运行的服务,而是特定任务完成后自行终止的作业

  • Job: 一次性任务(例如:数据迁移、批处理报告生成)。成功完成后终止Pod。
  • CronJob: 在预定时间重复执行的任务(例如:每天凌晨3点etcd备份)。

💡 实战代码 (CronJob)

apiVersion: batch/v1
kind: CronJob
metadata:
  name: nightly-backup
spec:
  schedule: "0 3 * * *" # 每天凌晨3点
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: busybox
            command: ["sh", "-c", "echo Backup Complete!"]
          restartPolicy: OnFailure

📊 控制器一览比较

控制器 主要用途 Pod标识符 数据保留
Deployment Web服务器, API (无状态) 随机哈希 易失性
StatefulSet DB, 分布式系统 (有状态) 唯一索引 (0, 1, 2) 持久性 (PVC映射)
DaemonSet 日志/监控代理 节点固定 节点依赖
Job/CronJob 备份, 批处理 一次性/重复 结果保存后终止

Tags: Kubernetes, CKAD, Deployment, StatefulSet, DaemonSet, Job, CronJob, 云基础设施, 认证准备, Pod控制器


Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注