AI 助教问 AI 助教
东方瑞通 · CKA

StatefulSet控制器

StatefulSet 管理有状态应用,为每个 Pod 提供稳定唯一的网络标识(如 pod-0、pod-1)与持久存储,保证有序部署与有序伸缩。

考点精讲

  1. StatefulSet 专为有状态应用设计,与无状态的 Deployment 形成对照。它给每个 Pod 分配稳定且唯一的网络标识(名称按「StatefulSet名-序号」编排,如 mysql-0、mysql-1)和独立的持久存储,并保证有序的部署与伸缩(按序号顺序创建、逆序删除、缩容从序号最大者开始)。要实现稳定网络标识,通常需要配合 Headless Service(clusterIP: None)提供 DNS 解析。典型适用场景是数据库、消息队列等需要持久化状态和固定身份的应用。要注意 StatefulSet 本身并不自动保证数据持久化,仍需为每个 Pod 配置 PVC 来挂载持久卷。

记忆技巧

StatefulSet 管有状态,Deployment 管无状态
名字带序号:mysql-0、mysql-1

常见误区

  • 用 Deployment 部署数据库导致数据/标识丢失
  • 漏配 Headless Service 导致网络标识不稳定
  • 以为 StatefulSet 自动保证数据持久化(还需 PVC)

真题思路

  • 【示例】本页题目为教学模拟题,非真题,仅用于讲解答题思路 下列哪种应用最适合用 StatefulSet 部署?
    无状态的 Web 前端 需要稳定网络标识和持久存储的数据库 每个节点跑一个的监控代理 一次性数据批处理任务
    答案:B
    解析:数据库等有状态应用需要稳定标识与持久存储,用 StatefulSet;无状态前端用 Deployment,监控代理用 DaemonSet,批处理用 Job。

常见问题

Q:StatefulSet 和 Deployment 怎么选

A:有状态、需稳定标识与持久存储的应用用 StatefulSet,无状态应用用 Deployment。

Q:StatefulSet 一定要配 Headless Service 吗

A:需要稳定网络标识时通常要配,靠它提供稳定 DNS。

Q:StatefulSet 会自动持久化数据吗

A:不会,还需为每个 Pod 配 PVC 挂载持久卷。

相关知识

教材出处:第8章 Kubernetes常用的控制器 StatefulSet控制器

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑