Skip to content

Kubernetes 中常见工作负载(Workload)资源的对比表格,包括它们的主要用途、特点和典型使用场景:

资源类型缩写主要用途特点典型场景
Pod-最小部署单元,包含一个或多个容器- 临时性资源,重启后IP可能变化
- 直接管理Pod不推荐(通常用Deployment等高层资源)
调试、单次任务、临时性服务
Deploymentdeploy管理无状态应用的多个Pod副本- 支持滚动更新和回滚
- 自动创建ReplicaSet
- 声明式更新
Web服务、API后端、无状态微服务
StatefulSetsts管理有状态应用(需要持久化存储和稳定标识)- Pod有固定名称和顺序(如web-0, web-1
- 通常搭配PVC使用
- 支持有序扩缩容
数据库(MySQL、MongoDB)、有状态中间件(ZooKeeper、Redis Cluster)
DaemonSetds在集群每个节点(或指定节点)上运行一个Pod副本- 自动跟随节点增减
- 忽略调度限制(如污点)
日志收集(Fluentd)、监控(Node Exporter)、网络插件(Calico、kube-proxy)
Jobjob运行一次性任务(任务完成后Pod终止)- 任务完成后Pod标记为Completed
- 支持并行执行
批处理任务、数据迁移、离线计算
CronJobcj定时运行Job(类似Linux的crontab)- 基于时间调度
- 保留历史Job记录(可配置保留数量)
定期备份、报表生成、定时清理
ReplicaSetrs确保指定数量的Pod副本持续运行(Deployment的底层实现)- 通常由Deployment自动管理
- 手动管理较少
需要直接控制Pod副本数的场景(较少直接使用)
Replication Controllerrc旧版副本控制器(已弃用,被ReplicaSet替代)- 功能与ReplicaSet类似
- 不支持基于标签的选择器更新
旧版Kubernetes兼容(现代集群应使用ReplicaSet)

关键对比项

  1. 有状态 vs 无状态
    StatefulSet:Pod有持久化存储和固定网络标识(如数据库)。
    Deployment:Pod完全可替换(如Web服务)。

  2. 临时性 vs 长期运行
    Job/CronJob:任务完成后退出。
    • 其他资源:持续运行直到手动删除。

  3. 节点覆盖范围
    DaemonSet:每个节点运行1个Pod。
    Deployment/StatefulSet:按需调度Pod到任意节点。

  4. 更新策略
    Deployment:支持滚动更新(RollingUpdate)和回滚。
    StatefulSet:支持有序更新(按Pod顺序逐个更新)。


如何选择?

需求推荐资源
无状态Web服务Deployment
数据库/有状态应用StatefulSet
集群级守护进程DaemonSet
定时任务CronJob
一次性批处理Job
需要直接控制Pod副本数ReplicaSet(罕见)

示例命令

bash
# 创建Deployment
kubectl create deployment nginx --image=nginx --replicas=3

# 查看StatefulSet的Pod(有序编号)
kubectl get pods -l app=my-db

# 手动运行Job
kubectl create job hello --image=busybox -- echo "Hello World"

✨ 网站运行时间: 3年11月15天 ❤️ 道阻且长,行则将至 - 微信号: heikedreamer