Kubernetes 可创建工作负载的资源类型 完整详解
你想了解的是 Kubernetes 中所有用于创建和管理工作负载(Workload) 的资源类型,K8s 对「工作负载」有官方明确定义 :工作负载是 Kubernetes 中用于表示并运行容器化应用实例的 API 资源的总称,核心目的是:创建容器 Pod、调度 Pod 到节点、保障 Pod 按预期运行(扩缩容 / 自愈 / 更新)、管理 Pod 生命周期。
✅ 一、K8s 官方「标准原生、稳定可用」的工作负载资源(共 8 类,全部 GA 稳定版,必掌握)
这是 Kubernetes 内核自带、完全标准化、生产环境可直接使用的核心工作负载资源 ,也是你提到的 Deployment、DaemonSet 所属的范畴,这 8 类是真正能「创建工作负载」的核心资源,按「使用频率 + 重要性」排序,每类都标注核心特性 + 用途,方便你区分:
1. Pod (核心基础,最底层工作负载)
- 核心特性:K8s 中最小的可调度部署单元 ,是所有上层工作负载的「基石」,所有其他工作负载本质都是封装并管理 Pod。
- 核心用途:运行一个或多个紧密协作的容器(共享网络 / 存储),Pod 是原子性的,删除 / 重建即销毁旧实例。
- 注意:生产中极少直接创建裸 Pod,因为裸 Pod 被删除 / 节点宕机后不会自动重建,所有业务都通过上层工作负载管理 Pod。
2. Deployment (最常用,无状态应用首选)
- 核心特性:无状态应用的标准工作负载 ,基于
ReplicaSet封装,支持声明式更新、滚动升级、版本回滚、扩缩容、自愈。 - 核心用途:部署无状态服务(比如微服务、Web 服务、API 服务、前端应用),不需要固定的网络标识、不需要持久化的存储关联、Pod 实例完全等价。
- 典型场景:90% 的业务服务都用 Deployment 部署。
3. StatefulSet (有状态应用专属)
- 核心特性:有状态应用的标准工作负载 ,解决 Deployment 无法满足的「有状态需求」,支持:固定的 Pod 名称 / 主机名、固定的 DNS 域名、有序的创建 / 删除 / 扩缩容、有序的滚动更新、持久化存储与 Pod 绑定(PVC 随 Pod 生命周期)。
- 核心用途:部署有状态服务,实例之间有依赖、需要持久化数据、需要固定标识。
- 典型场景:数据库(MySQL/PostgreSQL)、中间件(Redis 集群 / ZooKeeper/Kafka/Elasticsearch)、分布式存储(Ceph)等。
4. DaemonSet (节点守护进程,每节点必跑一个)
- 核心特性:确保集群中「所有(或指定)节点上都运行且仅运行一个该 Pod 实例」,节点新增时自动在新节点创建 Pod,节点删除时自动清理 Pod,支持滚动更新 / 回滚。
- 核心用途:部署节点级的守护进程 / 代理服务,必须在每个节点部署的服务。
- 典型场景:日志收集(Fluentd/Filebeat)、监控采集(Node Exporter)、网络插件(Calico/Flannel 的节点代理)、存储插件(CSI 节点驱动)等。
5. Job (一次性任务,执行完即结束)
- 核心特性:运行「一次性、非持续性」的任务 ,创建一个或多个 Pod,确保任务成功完成一次后就终止,Pod 执行成功后不会重启,失败可重试。
- 核心用途:处理批处理任务、数据迁移、数据备份、一次性计算、初始化任务等「做完就停」的业务。
- 关键特点:任务完成 → Pod 变为
Completed状态,不会被重建。
6. CronJob (定时任务 / 周期性任务)
- 核心特性:基于时间调度的 Job ,相当于 K8s 中的「Linux Crontab」,支持按固定时间 / 周期性规则创建并执行 Job 任务,可配置执行规则、并发策略、任务保留策略。
- 核心用途:部署定时批处理、定时备份、定时清理日志、定时数据同步等周期性任务。
- 语法:和 Linux Crontab 完全兼容(
分 时 日 月 周),比如0 3 * * *表示每天凌晨 3 点执行。
7. ReplicaSet (副本集,Deployment 的底层依赖)
- 核心特性:保证集群中始终运行指定数量的 Pod 副本,实现 Pod 的扩缩容、自愈(Pod 挂了自动重建),是 Deployment 的「底层实现组件」。
- 核心用途:极少直接手动创建,因为 ReplicaSet 只负责「保副本」,不支持版本回滚、滚动更新策略配置,Deployment 完全封装了 ReplicaSet 的能力并做了增强。
- 关系:Deployment → 管理 ReplicaSet → 管理 Pod,所有 Deployment 的 Pod 都是由其关联的 ReplicaSet 创建的。
8. ReplicationController (旧版副本控制器,已被淘汰)
- 核心特性:K8s 最早期的副本管理资源,功能和 ReplicaSet 几乎一致,都是保 Pod 副本数。
- 核心用途:已被 ReplicaSet 完全替代,不推荐在生产中使用,仅用于兼容老旧集群。
- 区别:ReplicaSet 支持更灵活的
标签选择器(Label Selector),而 ReplicationController 只支持简单的标签匹配。