首页 > 其他分享 >K8S之StatefulSet控制器

K8S之StatefulSet控制器

时间:2022-10-19 16:33:55浏览次数:76  
标签:状态 控制器 StatefulSet 应用 Pod K8S 资源

无状态应用进程客户端的每次连接均可独立地处理,一次请求和响应即构成一个完整的事务,它们不受已完成的连接或现有其他连接的影响,且意外中断或关闭时仅需要重新建立连接即可,因而,无状态应用的Pod对象可随时由其他由同一模板创建的Pod平滑替代,这也正是Deployment控制器编排应用的方式。

在云原生应用的体系里有两组常用的近义词:第一组是无状态(stateless)、牲畜(cattle)、无名(nameless)和可丢弃(disposable),它们都可用于表述无状态应用;另一组是有状态(stateful)、宠物(pet)、具名(having name)和不可丢弃(non-disposable),它们都可用于表示有状态应用。

Kubernetes系统使用专用的StatefulSet控制器编排有状态应用。StatefulSet表示一组具有唯一持久身份和稳定主机名的Pod对象,任何指定该类型Pod的状态信息和其他弹性数据都存放在与该StatefulSet相关联的永久性磁盘存储空间中。StatefulSet旨在部署有状态应用和集群化应用,这些应用会将数据保存到永久性存储空间,它适合部署Kafka、MySQL、Redis、ZooKeeper以及其他需要唯一持久身份和稳定主机名的应用。

一个典型的、完整可用的StatefulSet资源通常由两个组件构成:Headless ServiceStatefulSet资源Headless Service用于为各Pod资源固定、唯一的标识符生成可解析的DNS资源记录,StatefulSet用于编排Pod对象,并借助volumeClaimTemplate以静态或动态的PV供给方式为各Pod资源提供专有且固定的存储资源。

与Deployment略有不同的是,StatefulSet对应用规模的扩容意味着按索引顺序增加更多的Pod资源,而缩容则表示按逆序依次删除索引号最大的Pod资源,直到规模数量满足目标设定值为止。需要特别说明的,多数有状态应用都不支持规模性安全、快速的缩减操作,因此StatefulSet控制器不支持并行缩容机制,而是要严格遵守一次仅能终止一个Pod资源的法则,以免导致数据讹误。这通常也意味着,存在错误且未恢复的Pod资源时,StatefulSet资源会拒绝启动缩容操作。

StatefulSet资源的滚动更新还支持分区(partition)机制,用户可基于某个用于分区的索引号对Pod资源进行分区,所有大于等于此索引号的Pod对象会被滚动更新,而小于此索引号的则不会被更新,而且,即便在此期间该范围内的某Pod对象被删除,它也一样会被基于旧版本的Pod模板重建。若给定的分区号大于副本数量,意味着不存在大于此分区号的Pod资源索引号,因此,所有的Pod对象均不会被更新,这对于期望暂存发布、金丝雀发布或分段发布来说是有用的设定。

Operator就是一个开发规范和SDK,它合理地利用Kubernetes API的CRD功能扩展出二级抽象,又巧妙地回归到Kubernetes的“控制器”逻辑,从而提供了一个有状态应用的实现接口,用户可利用它开发专用于管理某个特定有状态应用的运维控制器,并按需回馈给社区。

标签:状态,控制器,StatefulSet,应用,Pod,K8S,资源
From: https://blog.51cto.com/key3feng/5775956

相关文章

  • 实验6:开源控制器实践——RYU
    一、实验目的1.能够独立部署RYU控制器;2.能够理解RYU控制器实现软件定义的集线器原理;3.能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Deskto......
  • 实验6:开源控制器实践——RYU
    一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktopamd6......
  • 【Kubernetes】K8s笔记(九):DaemonSet 守护进程集
    目录0.Deployment有哪些不足1.使用YAML描述DaemonSet对象2.在Kubernetes里使用DaemonSet3.Taint和Toleration4.静态PodkubernetesDaemonSetdocs0.Dep......
  • 实验6:开源控制器实践——RYU
    一、实验目的1、能够独立部署RYU控制器;2.能够理解RYU控制器实现软件定义的集线器原理;3.能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Des......
  • K8S二进制搭建问题云集
    一、故障描述Errorfromserver:Get"https://k8s-node01:10250/containerLogs/kube-system/calico-node-98cv6/calico-node":x509:certificatesignedbyunknownaut......
  • K8S statefulset
       StatefulSet详解kubectlexplainsts.spec:主要字段解释replicas:副本数selector:那个pod是由自己管理的serviceName:必须关联到一个无头服务商template:定义pod模......
  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU一、实验目的1.能够独立部署RYU控制器;2.能够理解RYU控制器实现软件定义的集线器原理;3.能够理解RYU控制器实现软件定义的交换机原理。二、......
  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU(一)基础要求1.建立拓扑并接连RYU控制器,并通过RYU的图形界面查看网络拓扑。2.运行当中的L2Switch,在目标主机使用tcpdump验证L2Switch。......
  • Limit讨论,K8s 使用 CPU Limit 后,服务响应变成龟速...
    你应当小心设定k8s中负载的CPUlimit,太小的值会给你的程序带来额外的、无意义的延迟,太大的值会带来过大的爆炸半径,削弱集群的整体稳定性。 1.request和limitk8s的......
  • K8S 故障排错新手段:kubectl debug 实战
    K8SINTERNAL系列容器编排之争在Kubernetes一统天下局面形成后,K8S成为了云原生时代的新一代操作系统。K8S让一切变得简单了,但自身逐渐变得越来越复杂。【K8SInternals......