首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Statefulset实战 2

上一部分我们分享到,Statefulset 部署应用,我们需要完成这些资源的创建: 制作应用程序和镜像 编写 Service 编写 Statefulset 指定 pod 模板及挂载 我们已经完成前面...2 部分,若还有疑问的可以看上上一部分的文章 编写 Statefulset 清单 现在可以来专注的编写 Statefulset 资源了 编写 Statefulset 资源其实也比较简单,注意三大部分...: Statefulset 自身的基本信息 指定好 serviceName 及 pod 的模板,且配置好挂载路径 指定好持久化卷声明的模板 statefulset.yaml apiVersion: apps.../v1 kind: StatefulSet metadata: name: sta-kubia spec: serviceName: sta-kubia replicas: 2 selector...sta-kubia-1 是在 sta-kubia-0 完全启动好,状态变成 Running 状态的时候才开始创建容器的 这是 statefulset 自身的机制,会去一个一个的创建 pod,创建 pod

16010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Statefulset部署应用

    Statefulset 资源 Statefulset 也是和 ReplicaSet 一样的属于 K8S 中的一种资源,可以管理 pod 的,但是 Statefulset 是可以专门定制一类应用,并且这些应用每一个实例都是不可替代的...,可以说是独一无二 正因为 ReplicaSet 无法解决上述的问题,Statefulset 就来帮忙解决了,那么我们来看一下 Statefulset 为什么能解决,我们可以来对比一波 ReplicaSet...创建出来的 pod 是类似于这样的名称,后缀都是随机的 咱们 Statefulset 创建出来的 pod 名字是这样的,后缀都是有序的索引 对于 Statefulset 这样设计 pod 的名字,...的时候就不一样了,我们从 Statefulset 减少 1 个副本数,相应的会减少一个 pod,我们再增加 1 个副本数的时候,Statefulset 便也会增加 1 个 pod 有趣的是,新增的这个...的状态,才会进行处理下一个 pod 这个就是 Statefulset 的 at most-one 语义,这样是为了避免同样名称的 pod 产生冲突,在 Statefulset 中,会杜绝这种情况 Statefulset

    14920

    StatefulSet灰度发布

    在Kubernetes中,我们可以使用StatefulSet来实现灰度发布。StatefulSet通过控制副本数量和Pod的名称来保证有序的更新和扩展。...下面是一个基于StatefulSet的灰度发布示例:假设我们有一个名为web的StatefulSet,它有3个副本,使用的是RollingUpdate更新策略,版本号为v1,现在我们想要发布新版本的应用程序...在这个 StatefulSet 中,我们有一个名为“nginx”的容器,这个容器运行了一个 Nginx Web 服务器。...每个 Pod 的 HTML 内容都存储在一个名为“www”的 PVC(Persistent Volume Claim)中,而这个 PVC 是在 StatefulSet 的 YAML 文件中定义的。...当我们想要进行灰度发布时,我们可以通过 StatefulSet 的 RollingUpdate 更新策略来实现。

    81410

    kubernetes之StatefulSet

    StatefulSet k8s的statefulset在1.5之后才引入的,1.5之前用的是petset,关于petset在之前的老版本的paas开发中用的就是petset,petset和statefulset...statefulset有状态应用副本集 PetSet -> StatefulSet 1.文档且唯一的网络标识符 2.稳定且持久的存储 3.有序,平滑的部署和扩展 4.有序,平滑的删除和终止...5.有序的滚动更新 三个组件: headless service StatefulSet volumeClaimTemplate statefulset、volume、pvc、pv之间的关系 volume...可以通过pod中volume关联中的persistentVolumeClaim关联pvc statefulset statefulset就是对应的存储的真正消费者,关联pv的方式用pvc,在你容器中的volumeMount...源码中也是一样的处理),而在方式二中我们是以volume的形式去引用的pvc,statefulset的controller在创建statefulset的时候不会去创建对应的pvc,如果发现对应的pvc不存在

    89630

    Statefulset 实战 3

    上一部分我们说到如何使用 Statefulset 部署有状态的应用,Statefulset 可以做到部署的 每一个 pod 能够独立的拥有一个持久卷声明和持久卷 之前我们 用 Statefulset...由于 Statefulset 自身管理的副本数是 2 个,通过标签发现环境中少了一个 pod,因此 Statefulset 会立马创建一个和刚才少的那个一模一样的 pod 通过我们查看 pod 的名称和索引值是我们所期望的...字段即可 修改副本数之后,通过如下命令查看相应资源情况 kubectl get statefulset kubectl edit statefulset sta-kubia kubectl get...Statefulset 说,我说到做到,之前给你说是啥样子的,现在我就会做成啥样子给你看,还不错吧 图解上述案例 如图,分为 3 步骤,该图是用来表示我们手动或者由于异常删除了一个 pod,此时 Statefulset...,有没有发现 Statefulset 和 Deployment 有一个共同点,那就是 Statefulset 删除 pod 的时候,不会去删除卷,Deployment 在滚动升级的时候,不会删除 RS

    12810

    statefulset controller 源码分析

    Statefulset 的基本功能 statefulset 旨在与有状态的应用及分布式系统一起使用,statefulset 中的每个 pod 拥有一个唯一的身份标识,并且所有 pod 名都是按照 {0....本文会主要分析 statefulset controller 的设计与实现,在分析源码前先介绍一下 statefulset 的基本使用。...如果 statefulset 的 .spec.updateStrategy.type 字段被设置为 OnDelete,在更新 statefulset 时,statefulset controller 将不会自动更新其...rollout undo statefulset web --to-revision=5 因为 statefulset 的使用对象是有状态服务,大部分有状态副本集都会用到持久存储,statefulset...删除 statefulset 同时支持级联和非级联删除。使用非级联方式删除 statefulset 时,statefulset 的 pod 不会被删除。

    92320

    Kubernetes中StatefulSet介绍

    Kubernetes中提供了一个StatefulSet控制器来管理有状态的应用,本文就介绍StatefulSet的应用,解决以下几个问题: 如何创建StatefulSet StatefulSet如何管理...Pods 如何删除StatefulSet 如何对StatefulSet进行扩容 如何更新StatefulSet中的Pods 1....StatefulSet 是什么 StatefulSet是Kubernetes提供的管理有状态应用的负载管理控制器API。在Pods管理的基础上,保证Pods的顺序和一致性。...与Deployment一样,StatefulSet也是使用容器的Spec来创建Pod,与之不同StatefulSet创建的Pods在生命周期中会保持持久的标记(例如Pod Name)。...删除 StatefulSet StatefulSet支持级连删除和非级连删除,在非级连删除模式下,仅删除StatefulSet不删除Pod,级连删除则全部删除。

    1.7K40

    Kubernetes StatefulSet 实现原理

    1、StatefulSet的设计原理 首先我们先来了解下Kubernetes的一个概念:有状态服务与无状态服务。...2、StatefulSet将有状态应用抽象为两种情况 拓扑状态。这种情况意味着,应用的多个实例之间不是完全对等的关系。这些应用实例,必须按照某些顺序启动,比如应用的主节点 A 要先于从节点 B 启动。...3、StatefulSet 的核心功能 StatefulSet 的核心功能,就是通过某种方式记录这些状态,然后在 Pod 被重新创建时,能够为新 Pod 恢复这些状态。...稳定的域名 selector: app: stateful-tomcat --- apiVersion: apps/v1 kind: StatefulSet #控制器。...稳定的域名 selector: app: stateful-tomcat --- apiVersion: apps/v1 kind: StatefulSet #控制器。

    1.1K10

    kubernetes的StatefulSet介绍

    我们将使用StatefulSet来管理这个集群,并确保每个节点有唯一的网络标识符和存储。创建StatefulSet首先,我们需要创建一个StatefulSet对象来管理我们的数据库集群。...apiVersion:StatefulSet的kind:资源对象类型为StatefulSet。metadata.name:StatefulSet的名称为“database-cluster”。...验证StatefulSet现在,我们可以使用kubectl命令验证我们的StatefulSet是否正确运行。...扩展StatefulSet现在,如果我们需要扩展我们的数据库集群,只需要更新StatefulSet的replicas字段即可。...删除StatefulSet如果我们不再需要我们的数据库集群,我们可以使用以下命令删除StatefulSet及其相关的Pod和服务:$ kubectl delete statefulset,service

    67550

    statefulset controller 源码分析

    Statefulset 的基本功能 statefulset 旨在与有状态的应用及分布式系统一起使用,statefulset 中的每个 pod 拥有一个唯一的身份标识,并且所有 pod 名都是按照 {0....本文会主要分析 statefulset controller 的设计与实现,在分析源码前先介绍一下 statefulset 的基本使用。...如果 statefulset 的 .spec.updateStrategy.type 字段被设置为 OnDelete,在更新 statefulset 时,statefulset controller 将不会自动更新其...rollout undo statefulset web --to-revision=5 因为 statefulset 的使用对象是有状态服务,大部分有状态副本集都会用到持久存储,statefulset...使用非级联方式删除 statefulset 时,statefulset 的 pod 不会被删除。使用级联删除时,statefulset 和它关联的 pod 都会被删除。

    1.2K10

    kubernetes-StatefulSet介绍

    其中一种类型的控制器是StatefulSet,它可以管理有状态的应用程序。概念StatefulSet是Kubernetes的一个控制器,它用于管理有状态的应用程序。...StatefulSet保证有状态的应用程序在Pod重新调度、扩容和缩容时能够保持其标识和稳定性。StatefulSet与Deployment的主要区别在于,它维护了每个Pod的稳定标识和有序部署。...每个Pod都有一个唯一的标识符,这个标识符是基于StatefulSet的名称和Pod的索引来计算的。例如,StatefulSet的名称为“web”,Pod的索引为0,则Pod的标识符为“web-0”。...StatefulSet可以确保在Pod重新调度、扩容和缩容时,每个Pod都保持其标识和稳定性,从而保证应用程序的可靠性和稳定性。另外,StatefulSet还支持有序部署。...我们使用了一个名为“mysql”的Service对象,它将用于将网络流量路由到StatefulSet中的Pod。StatefulSet的副本数为3,表示我们需要运行3个Pod来运行MySQL应用程序。

    29430

    StatefulSet 和 Deployment 区别

    pod宕掉重启数据丢失,那么使用pv/pvc就可以了; 3.如果要打通app之间的通信,而又不需要对外暴露,使用headlessService即可; 4.如果需要使用service的负载均衡,不要使用StatefulSet...6.能不用StatefulSet,就不要用 只能用StatefulSet: 最近在微软的aks平台上部署服务,由于Deployment在scale的时候需要动态申请volume,采取使用volumeClaimTemplates...属性的方式来申请,当前Deployment对象(1.15)不支持这一属性,只有StatefulSet才有,因此不得不使用后者。...注意: 如果使用StatefulSet,spec.serviceName需要指向headlessServiceName,且不能省略指定步骤,官方文档要求headlessService必须在创建StatefulSet...之所以要指定一个headlessService,是因为admin可以给StatefulSet创建多个、多种类型的service,k8s不知道要用哪个service的名称当作集群内域名的一部分。

    66530

    StatefulSet资源控制器

    一、statefulset介绍 StatefulSet 是为了解决有状态服务的问题而设计的资源控制器。...匹配 Pod name ( 网络标识 ) 的模式为:(statefulset名称)-​(序号),比如上面的示例:web-0,web-1,web-2 StatefulSet 为每个 Pod 副本创建了一个...域名来通信而非 Pod IP,因为当Pod所在Node发生故障时, Pod 会被飘移到其它 Node 上,Pod IP 会发生变化,但是 Pod 域名不会有变化 图片 删除 web-0 后查看: ​ StatefulSet...的启停顺序 有序部署:部署StatefulSet时,如果有多个Pod副本,它们会被顺序地创建(从0到N-1)并且,在下一个Pod运行之前所有之前的Pod必须都是Running和Ready状态。...三、StatefulSet使用场景 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于 PVC 来实现。

    44710

    StatefulSet更新策略示例

    我们将使用之前创建的 StatefulSet 资源 example,它包含 3 个 Pod,每个 Pod 中都运行一个简单的 HTTP 服务器。为了演示更新过程,我们将更新 Pod 中的容器映像版本。...RollingUpdate 策略首先,让我们使用 RollingUpdate 策略更新 example StatefulSet 资源。...假设我们已经将容器映像更新到版本 v2,并将其更新到 StatefulSet 中,使用以下命令:$ kubectl set image statefulset/example app=example:v2...下面给出一个StatefulSet更新策略的示例:假设我们有一个名为web的StatefulSet,它有3个副本,使用的是RollingUpdate更新策略,版本号为v1,现在我们想要更新它的镜像版本为...我们可以通过修改StatefulSet的spec字段中的updateStrategy来达到这个目的。

    41220
    领券