千家信息网

kubernets之statefulset

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,StatefulSet是控制器的一种,可以创建独特身份的POD。它提供有序的部署和伸缩。使用statefulset使用限制组成部分pod身份识别保证部署和伸缩使用statefulsetstateful
千家信息网最后更新 2026年11月03日kubernets之statefulset

StatefulSet是控制器的一种,可以创建独特身份的POD。它提供有序的部署和伸缩。

  • 使用statefulset

  • 使用限制

  • 组成部分

  • pod身份识别

  • 保证部署和伸缩

使用statefulset

statefulset对以下应用是有价值的。

  • 稳定、唯一的网络访问地址

  • 稳定、持久的存储

  • 有序、优雅的部署和伸缩

  • 有序。优雅的删除和终止

上述描述中,稳定等同于在POD再次调度之后可以持久。如果应用不需要稳定的认证或有序的部署、删除、伸缩,你可以使用无状态的副本(例如Deployment或ReplicaSet)来部署你的应用,这将更适合无状态应用。

使用限制

  • Statefulset目前为bate版本,在1.5之前在任何发布版中都不可用

  • 类似所有alpha/beta资源,你可以通过apiserver参数--runtime-config禁用Statefulset

  • POD使用的持久化存储可以是基于storage class的动态卷,也可以是预先管理员分配的

  • 删除或缩减Statefulset不会删除分配的volumes。这是为了确保数据安全,数据比自动清除与statefulset关联的资源更重要

  • Statefulset当前需要一个Headless Service提供网络访问地址

  • 目前需要手动完成更新存在Statefulset

组成部分

  • 下面的示例描述Statefulset的组件。

  • 一个名为nginx的Headless Service,用于控制网络访问

  • 名为web的Statefulset,启动三个副本POD

  • volumeClaimTemplates将提供持久化存储

---apiVersion: v1kind: Servicemetadata:    name: nginx    labels:       app: nginxspec:   ports:   - port: 80     name: web   clusterIP: None   selector:     app: nginx---apiVersion: apps/v1beta1kind: StatefulSetmetadata:    name: webspec:    serviceName: "nginx"    replicas: 3    template:        metadata:              labels:                 app: nginx        spec:            terminationGracePeriodSeconds: 10            containers:            - name: nginx               p_w_picpath: gcr.io/google_containers/nginx-slim:0.8               ports:               - containerPort: 80                 name: web               volumeMounts:               - name: www                 mountPath: /usr/share/nginx/html    volumeClaimTemplates:    - metadata:            name: www            annotations:                volume.beta.kubernetes.io/storage-class: anything       spec:           accessModes: [ "ReadWriteOnce" ]           resources:               requests:                   storage: 1Gi

POD身份识别

StatefulSet POD有一个独特的身份识别,由一个序号、一个稳定的网络身份和稳定的存储。身份绑定POD,不管POD被调度到哪个节点上。

1)序号索引

Statefulset有N个实例,每个POD将被分配一个唯一的整数序号,范围在[1,N]。

2)稳定的网络ID

StatefulSet的每个POD的名称是由StatefulSet的名称和Pod序号组成。POD名称的格式为$(statefulset name)-$(ordinal)。上述示例中创建的POD名称为web-0,web-1,web-2。statefulset使用Headless Service控制POD的域名。service域名的格式为$(service name).$(namespace).svc.cluster.local,cluster.local为cluster domain。每个POD创建后会有一个匹配的域名,格式为$(podname).$(service_domain)。下表为示例,描述cluster domain、service name和statefulset name如何相互作用。

Cluster Domain Service (ns/name) StatefulSet (ns/name) StatefulSet Domain Pod DNS Pod Hostname

cluster.local default/nginx default/web nginx.default.svc.cluster.local web-{0..N-1}.nginx.default.svc.cluster.local web-{0..N-1}

cluster.local foo/nginx foo/web nginx.foo.svc.cluster.local web-{0..N-1}.nginx.foo.svc.cluster.local web-{0..N-1}

kube.local foo/nginx foo/web nginx.foo.svc.kube.local web-{0..N-1}.nginx.foo.svc.kube.local web-{0..N-1}

3)稳定的存储

kubernetes为每一个VolumeClaimTemplate创建一个PV。在上述nginx的示例中,每一个POD将获得一个大小为1G的PV。当POD被调度到一个节点上的时候,volumeMounts将通过与之绑定的PVC挂载PV。

说明:与PVC绑定的PV不会因POD或statefulset删除而删除,需要手动执行删除。

保证部署和伸缩

  • 对于statefulset的N个副本,当POD被部署,它们将是有序的,[0..N-1]

  • 当POD被删除,它们将按反向的顺序终止,先终止N-1的POD

  • 在伸缩操作应用到POD之前,必须保证之前所有POD的状态是running且ready。

  • 在POD被终止之前,所有当前序号之后的POD必须完全关闭

StatefulSet不应该指定pod.Spec.TerminationGracePeriodSeconds为0。这种做法是不安全的,强烈劝阻。为进一步解释,请参阅强制删除StatefulSet POD。

上面的nginx例子创建后,三个POD将按web-0 web-1 web-2顺序部署。web-1不会在web-0 running并ready之前部署,web-2直到web-1处于running并ready状态后才会开始部署。web-1 running且ready之后,但web-2还未启动,此时如果web-0故障,web-2将不会被启动,直到web-0成功被重启并达到running且ready的状态。

如果一个用户修改已部署的statefulset,例如replicas=1,web-2会先被终止。web-1将不会终止,直到web-2完全关闭和删除。web-2已经终止并完全关闭,但在web-1终止前,此时如果web-0故障,web-1将不会被终止,直到web-0处于running且ready的状态。


状态 身份 有序 序号 网络 存储 应用 名称 示例 副本 域名 格式 保证 分配 控制 调度 独特 优雅 安全 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 新华互联网科技学校 科技互联网政务服务 互联网科技革命 互联网科技缩写 顺玮阁互联网科技 广西拼得多互联网科技有限公司 互联网科技公司的市场部门 现代科技和互联网有关系吗 银川新华互联网科技职业技术培训学校图片 互联网科技大奖都有哪些公司 中国互联网公司排名锤子科技 佛山市拉法互联网科技有限公司 明优互联网科技有限公司 中国互联网有什么科技 启辰互联网科技 浙南科技城互联网大厦招聘 郑州欣桑互联网科技有限公司 福建互联网展示科技馆设计 北京品多多互联网科技有限公司 美国互联网科技 成都互联网科技公司 兼蜜互联网科技 广州新华互联网科技学校电竞方面 工业互联网等科技实现智能化赋能 2021世界互联网领先科技成果发布 江苏互联网智能科技产品出厂价 杭州科技互联网公司有哪些 广州全民伙伴互联网科技有限公司 互联网 科技节活动 微视频大赛
0