2019独角兽企业重金招聘Python工程师标准>>>

Kubernetes  StatefulSet

[1] RC、Deployment、DaemonSet都是面向无状态的service,它们所管理的Pod的IP、名字,启停顺序等都是随机的,而StatefulSet是什么?顾名思义,有状态的集合,管理所有有状态的service,比如MySQL、MongoDB集群等。

[2] StatefulSet本质上是Deployment的一种变体,在v1.9版本中已成为GA版本,它为了解决有状态service的问题,它所管理的Pod拥有固定的Pod名称,启停顺序,在StatefulSet中,Pod名字称为网络标识(hostname),还必须要用到共享存储。

[3] 在Deployment中,与之对应的服 - --务是service,而在StatefulSet中与之对应的headless service,headless service,即无头服---务,与service的区别就是它没有Cluster IP,解析它的名称时将返回该Headless Service对应的全部Pod的Endpoint列表。
除此之外,StatefulSet在Headless Service的基础上又为StatefulSet控制的每个Pod副本创建了一个DNS域名。

[4] 通过该配置文件,可看出StatefulSet的三个组成部分:

Headless Service:名为nginx,用来定义Pod网络标识( DNS domain)。
StatefulSet:定义具体应用,名为Nginx,有三个Pod副本,并为每个Pod定义了一个域名。volumeClaimTemplates: 存储卷申请模板,创建PVC,指定pvc名称大小,将自动创建pvc,且pvc必须由存储类供应。

[5] 为什么需要 headless service 无头服务?

在用Deployment时,每一个Pod名称是没有顺序的,是随机字符串,因此是Pod名称是无序的,但是在statefulset中要求必须是有序 ,每一个pod不能被随意取代,pod重建后pod名称还是一样的。而pod IP是变化的,所以是以Pod名称来识别。pod名称是pod唯一性的标识符,必须持久稳定有效。这时候要用到无头服-务,它可以给每个Pod一个唯一的名称 。

[6] 为什么需要volumeClaimTemplate?

对于有状态的副本集都会用到持久存储,对于分布式系统来讲,它的最大特点是数据是不一样的,所以各个节点不能使用同一存储卷,每个节点有自已的专用存储,但是如果在Deployment中的Pod template里定义的存储卷,是所有副本集共用一个存储卷,数据是相同的,因为是基于模板来的 ,而statefulset中每个Pod都要自已的专有存储卷,所以statefulset的存储卷就不能再用Pod模板来创建了,于是statefulSet使用volumeClaimTemplate,称为卷申请模板,它会为每个Pod生成不同的pvc,并绑定pv, 从而实现各pod有专用存储。这就是为什么要用volumeClaimTemplate的原因。

参考:https://blog.51cto.com/newfly/2140004

转载于:https://my.oschina.net/wangyunlong/blog/3042431

Kubernetes-[6]-StatefulSet相关推荐

  1. Kubernetes中StatefulSet介绍

    原文链接:Kubernetes中StatefulSet介绍 StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.11.如何搭建环境可以参考 ...

  2. .NET Core + Kubernetes:StatefulSet

    在 Kubernetes 中,Pod 资源的控制器 Deployment.Replicaset.Daemonset 等常用于管理无状态应用,它们所管理的 Pod 对应的 IP.名字,启停顺序等都是随机 ...

  3. Kubernetes之StatefulSet

    什么是StatefulSet StatefulSet 是Kubernetes中的一种控制器,他解决的什么问题呢?我们知道Deployment是对应用做了一个简化设置,Deployment认为一个应用的 ...

  4. 【云原生 | 从零开始学Kubernetes】二十三、Kubernetes控制器Statefulset

    该篇文章已经被专栏<从零开始学k8s>收录 上一篇文章:kubernetes持久化存储下 点击跳转 Statefulset Statefulset 控制器:概念.原理解读 有状态服务? 无 ...

  5. Kubernetes Deployment控制器(二十)

    前面我们学习了 ReplicaSet 控制器,了解到该控制器是用来维护集群中运行的 Pod 数量的,但是往往在实际操作的时候,我们反而不会去直接使用 RS,而是会使用更上层的控制器,比如我们今天要学习 ...

  6. kubernetes 实现redis-statefulset集群

    Kubernetes 通过statefulset部署redis cluster集群 部署redis集群方式的选择 Statefulset Service&depolyment 对于redis, ...

  7. 译⽂:Top Three Use Cases for Dapr and Kubernetes

    有关译者:陈东海(seachen),⽬前就职于腾讯,同时在社区也是⼀名Dapr Member. 导语:在SDLC(Software Development Lifecycle软件开发⽣命周期中),绝⼤ ...

  8. kubernetes k8s 云原生技术

    云原生 [整理总结自 CNCF × Alibaba 云原生技术公开课] [非全部内容] [图片看不到,可以去gitee上看] 文章目录 云原生 相关定义和概念 技术范畴 两个理论 云原生关键技术点 容 ...

  9. k8s技术预研7--深入掌握Kubernetes Pod

    目录 1.Yaml格式的Pod定义文件完整模板详解 2.Pod的基本用法     2.1 由1个容器组成的Pod示例     2.2 由两个为紧耦合关系的容器打包组成的Pod示例 3.静态Pod    ...

  10. 数据中心基础架构 22 年演进

    01 前言 当今世界正处在信息技术(IT)创新的黄金时代.由机器学习.物联网和大规模可扩展应用支持的云计算.移动应用.大数据分析的巨大力量正在重塑商业和社会的方方面面.而这场IT复兴的中心,则是超大规 ...

最新文章

  1. Flask-Email的相关知识点实现(发送电子邮件)
  2. poj2976(0-1分数规划)
  3. sql 两个表字段不一样合并查询_数据分析进阶--SQL多表查询
  4. GSON反序列化时,字符串被转换成科学记数法的问题处理
  5. bitcount方法详解_Java Long类的bitCount()方法和示例
  6. 数字图像处理与机器视觉光盘资料_机器视觉——数字图像处理知识点总结
  7. 在windows上搭建一个ftp服务器
  8. [设计模式-创建型]单态(Singleton)
  9. 塘沽十三中2021年高考成绩查询,2020天津高考成绩查询
  10. VS2019 + Qt ERROR MSB4181 QtRunwork 返回了false,但未记录错误
  11. 离子交换树脂工艺解决电脑印刷线路板废水镍超标
  12. 网络协议之Netflow与sFlow协议
  13. 数据结构:顺序表的就地逆置
  14. 网管员必知:常用电脑密码破解
  15. 【水题】hzy 和zsl 的生存挑战
  16. 删除文件过一会又回来_内存卡数据删了又自动回来怎么回事
  17. 美联储决策者抨击鸽派观点 美元主导澳元兑美元涨跌?
  18. Html5 获取手机短信号码
  19. Echarts学习之十一:地理坐标系geo
  20. 5个最好的屏幕录像软件

热门文章

  1. web 开发之js---页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法
  2. 巧妙解决AJAX跨域问题
  3. 使用 PSD Validator 在线校验 PSD 文件的质量
  4. Linux(centOS)手动安装删除Apache+MySQL+PHP+Memcached原创无错版
  5. Java的位运算符——与()、非(~)、或(|)、异或(^)
  6. vc编译器编译linux平台拷贝的源码问题
  7. HIBERNATE与 MYBATIS的对比
  8. 带命名空间的XML的dom4j应用转
  9. Android 升级下载 它们的定义Updates 兼容版本
  10. [转]Java输入输出流的使用详细介绍