8.StatefulSet控制器

Operator:由CoreOS封装组织提供

Cattle,pet

StatefulSet详解:https://blog.51cto.com/newfly/2140004

一、StatefulSet控制器

StatefulSet控制器:有状态应用副本集(PetSet ==>StatefulSet )

1、 稳定且唯一的网络标识符

2、 稳定且持久的存储

3、 有序、平滑地部署和扩展

4、 有序、平滑地终止和删除

5、 有序的滚动更新

三个组件:

Headless Service、StatefulSet Controller、volumeClaimTemplate

每个pod应该有自己专用的存储卷,因为分布式集群系统,每个节点的数据都是不一样的,如果是同一个存储卷,数据可能会被覆盖。

基于pod模板来创建Pod是不适用于StatefulSet的,因为pod模板中都是使用的同一个存储卷。

[[email protected] volumes]$ kubectl explain statefulset.spec
[[email protected] yaml]$ kubectl explain statefulset.spec. volumeClaimTemplates
# volumeClaimTemplates会自动去创建pvc,并请求满足条件的pv绑定(pv需手动创建)

二、示例

StatefulSet 示例:

创建StatefulSet控制器时,顺序创建,会自动去创建PVC;删除StatefulSet控制器时,倒序删除,不会自动删除PVC。

Pod的每一个名称都是固定的,并且可以被解析的。

(myapp-0.myapp.default.svc.cluster.local  -- >

POD_NAME.HEADLESS_SVC_NAME.NAMESPACE. svc.cluster.local)

扩容和缩容:

[[email protected] ~]$ kubectl scale sts myapp --replicas=4
[[email protected] ~]$ kubectl patch sts myapp -p ‘{"spec":{"replicas":3}}‘

更新:(金丝雀canary发布)

[[email protected] ~]$ kubectl explain sts.spec.updateStrategy
[[email protected] ~]$ kubectl explain sts.spec.updateStrategy.rollingUpdate
       Partition  # 分区更新,指的是一个对应的更新的边界,如果为5,则编号>=5的pod会被更新
# 编号大于等于3的pod在更新时会被更新。
[[email protected] ~]$ kubectl patch sts myapp -p ‘{"spec":{"updateStrategy":{"rollingUpdate":{"partition":3}}}}‘
[[email protected] ~]$ kubectl set image sts/myapp myapp=ikubernetes/myapp:v2

[[email protected] ~]$ kubectl get pod myapp-3 -o yaml   # v2
[[email protected] ~]$ kubectl get pod myapp-2 -o yaml   # v1
# 此时只有myapp-3这个pod为v2版本,其他依旧是v1版本。
[[email protected] ~]$ kubectl patch sts myapp -p ‘{"spec":{"updateStrategy":{"rollingUpdate":{"partition":0}}}}‘
此时,剩余pod会依次更新。

K8S上管理有状态的应用很复杂!!!!

原文地址:https://www.cnblogs.com/cmxu/p/12240136.html

时间: 2024-07-29 09:10:39

8.StatefulSet控制器的相关文章

Kubernetes之StatefulSet控制器

目录 Kubernetes之StatefulSet控制器 简介 StatefulSet使用 滚动更新 扩展伸缩 更新策略和版本升级 Kubernetes之StatefulSet控制器 简介 StatefulSet 作为 Controller 为 Pod 提供唯?的标识. 它可以保证部署和 scale 的顺序. StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为?状态服务?设计) , 其应?场景包括: 稳定的持久化存储, 即Pod重新调度后还是

Kubernetes之(十四)StatefulSet控制器

目录 Kubernetes之(十四)StatefulSet控制器 简介 StatefulSet使用 滚动更新 扩展伸缩 更新策略和版本升级 Kubernetes之(十四)StatefulSet控制器 简介 StatefulSet 作为 Controller 为 Pod 提供唯?的标识. 它可以保证部署和 scale 的顺序. StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为?状态服务?设计) , 其应?场景包括: 稳定的持久化存储, 即Po

kubernetes学习控制器之StatefulSet控制器

StatefulSet介绍 一.StatefulSet概述StatefulSet是用来管理stateful(有状态)应用的StatefulSet管理Pod时,确保Pod有一个按序增长的ID与Deployment最大的不同是StatefulSet始终将一系列不变的名字分配给Pod.这些Pod从一个模板创建,但是并不能相互替换二.StatefulSet使用场景对于有如下要求的应用程序,StatefulSet非常适用需要稳定.唯一的网络标识(dnsname)每个Pod始终对应各自的存储路径(Persi

kubernetes之StatefulSet详解

概述 RC.Deployment.DaemonSetStatefulSet都是面向无状态的服务,它们所管理的Pod的IP.名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL.MongoDB集群等.StatefulSet本质上是Deployment的一种变体,它是t是为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识,还必须要用到共享存储,在v1.9版本中

kubernetes关于statefulset的理解

概述RC.Deployment.DaemonSet都是面向无状态的服务,它们所管理的Pod的IP.名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的服务,比如MySQL.MongoDB集群等.StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态服务的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识(hostname),还必须要用到共享

k8s的pod控制器

pod控制器 二.ReplicaSet控制器 三.Deployment控制器 Replicas(副本数量): Selector(选择器): Pod Template(Pod模板): strategy(更新策略): revisionHistoryLimit(历史版本记录): rollbackTo: progressDeadlineSeconds: paused: 3.Deployment更新升级 4.Deployment扩容 5.修改滚动更新策略 6.金丝雀发布 7.Deployment版本回退

kubernetes statefulset

概述 在应用程序中我们有两类,一种是有状态一种是无状态.此前一直演示的是deployment管理的应用,比如nginx或者我们自己定义的myapp它们都属于无状态应用. 而对于有状态应用,比如redis,mysql,还有etcd,还有zookeeper等等需要存数据的都属于有状态.它们不光有所谓的节点之分,每一个对应的pod还有角色之分,有的是主节点,有的是从节点.而后,从节点不光有所谓的从之分可能还有先后次序之分,我们不同的分布式系统它们的运维管理,逻辑和运维操作过程是不相同的,因此没有办法把

k8s之StatefulSet

StatefulSet(状态集) 1,什么是StatefulSet ?StatefulSet又叫PetSet(之前的名称),它和RS,RC,Deployment等一样,都是pod控制器.StatefulSet是为了解决有状态服务的问题(对应于deoloyment和RS,RC,ReplicaSet都是为无状态服务而设计的). 什么是无状态服务?在生产环境中,pod的名称是随机的,扩缩容的是时候没有规律,每一个pod都可以被新生成的pod代替. 2,StatefulSet的应用场景包括: 稳定的持久

从零开始入门 K8s | 有状态应用编排 - StatefulSet

作者 | 酒祝? 阿里巴巴技术专家 本文整理自<CNCF x Alibaba 云原生技术公开课>第 22 讲. 关注"阿里巴巴云原生"公众号,回复关键词"入门",即可下载从零入门 K8s 系列文章 PPT. 导读:有状态应用的部署交付向来都是应用运维领域的难点之一,常见的有状态需求如在磁盘持久化状态.每个机器需要独立且稳定的网络标识.发布顺序确定性等.针对这类问题 Kubernetes 提供了 StatefulSet 控制器,作为帮助有状态应用部署和在