k8s中的工作负载是什么,都有哪几种类型的工作负载

我用最通俗、最贴合你环境、一看就懂 的方式,一次性把 K8s 工作负载(Workload) 讲透!

先回答最核心:什么是工作负载

一句话大白话

工作负载 = 让 K8s 帮你"托管运行程序"的方式

你告诉 K8s:

  • 我要运行几个副本
  • 挂了要不要自动重启
  • 需不需要固定名字/固定IP
  • 是不是每个机器都要跑一个

K8s 提供5 种标准工作负载,对应不同业务场景。


K8s 有哪 5 种工作负载?(必须记住)

我按你最常用 → 最少用排序:

1)Deployment(最常用、无状态)

适合:微服务、API、前端、Nginx、vLLM 大模型推理

  • 随便扩缩容
  • 挂了自动重启
  • 不保存数据
  • 名字随机
  • 随便调度到任何节点

你 90% 的业务都用这个!

2)StatefulSet(有状态)

适合:MySQL、Redis、Kafka、ES、ZooKeeper

  • 固定名字
  • 固定 DNS
  • 固定存储 PVC
  • 有序启动、有序删除

有数据、有身份的服务用它。

3)DaemonSet(每个节点跑 1 个)

适合:监控采集、日志采集、节点代理

比如你环境里的:

  • otel-agent
  • fluentbit
  • node-exporter
  • kube-proxy

特点:集群加一个节点,自动多一个 Pod;删节点,自动少一个。

4)Job(一次性任务)

适合:数据导出、备份、清洗、离线计算

  • 运行完就退出
  • 不长期运行
  • 成功完成就停止

5)CronJob(定时任务)

适合:每天备份、每小时报表、定时清理

  • 按时间自动执行 Job
  • 类似 Linux crontab

用你自己的环境举例子(你一看就懂)

复制代码
Deployment → 你的 vllm-qwen(大模型推理)
DaemonSet → otel-agent、fluentbit(每个节点都跑)
StatefulSet → Kafka、ES、MySQL
Job → 数据备份
CronJob → 每天凌晨清理日志

超级简单记忆法

长期运行、无状态 → Deployment

存数据、固定身份 → StatefulSet

每个机器必须跑一个 → DaemonSet

跑一次就结束 → Job

定时跑 → CronJob


最后一句最关键(面试必问)

工作负载 = K8s 管理 Pod 的不同"运行模式"

  • Deployment:托管无状态服务
  • StatefulSet:托管有状态服务
  • DaemonSet:托管节点全局组件
  • Job/CronJob:托管一次性/定时任务

总结(你只要记住这 5 个)

  1. Deployment
  2. StatefulSet
  3. DaemonSet
  4. Job
  5. CronJob
相关推荐
阿里云云原生4 小时前
香港站【企业 AI Agent 工程化实战专场】来啦,邀您7月9日见!
云原生·agent
阿里云云原生7 小时前
研发域与运维域的“数字握手”:通过 Agentic Skills 实现 DevOps 全链路自动化
云原生
运维开发故事2 天前
基于 Arthas 的多集群在线诊断系统设计与实现
kubernetes
Patrick_Wilson4 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
阿里云云原生4 天前
AI 开发新常态:当 Cursor、Claude、Codex 并行,如何统一管理散落的 Skill 资产?
云原生·ai编程
探索云原生4 天前
K8s 1.36 这个 GA 特性,把 initContainer 拉模型的 hack 干掉了
ai·云原生·kubernetes
云恒要逆袭5 天前
运行你的第一个Docker容器
后端·docker·容器
Java之美5 天前
从edge-trigger到level-trigger,谈谈 Kubernetes controller 的开发范式
云原生
阿里云云原生5 天前
深度解构:当 Append-only 的 SLS 遇上 Update/Delete,是如何实现设计权衡的?
云原生