一、有状态应用

对于数据存储类应用,它的多个实例,往往都会在本地磁盘保存一份数据。

导致这些实例一旦被杀掉,即便重建出来,实例与数据之间的对应关系也已经丢失,从而导致应用创建失败。

这种实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,称为“有状态应用”。

二、StatefulSet

1. 抽象

StatefulSet将应用状态抽象成了两种情况:

  • 拓扑状态。应用实例必须按照某种顺序启动。新创建的Pod必须和原来Pod的网络标识一样
  • 存储状态。应用的多个实例分别绑定了不同存储数据。

2. 特点

  • 稳定的、唯一的网络标识(Pod可以固定IP)。
  • 稳定的、持久的存储。
  • 有序的、优雅的部署和伸缩。
  • 有序的、优雅的删除和停止。
  • 有序的、自动的滚动更新。

3. 工作原理

首先,StatefulSet的控制器直接管理的是Pod。

其次,Kubernetes通过Headless Serrvice,为那些有编号的Pod,在DNS服务器中生成带有同样编号的DNS记录。只要StatefulSet能够保证这些Pod名字中的编号不变,那么Service中类似于web-0.nginx.default.svc.cluster.clocal这样的DNS记录也不会变,这条记录解析出来的Pod的IP地址,随着后端Pod的删除和创建而自动更新。

最后,StatefulSet还会为每一个Pod分配并创建一个同样编号的PVC。这样,kubernetes就可以通过Persistent Volume机制为这个PVC绑定对应的PV,从而保证每一个Pod都拥有一个独立的Volume。

三、StatefulSet和Deployment的区别

“Deployment用于部署无状态服务,StatefulSet用来部署有状态服务”。

四、存储工作原理

当我们进入上述创建的Pod,在/usr/share/nginx/html中写入内容,即使Pod被删除重建,Volume中的内容仍不会丢失。

这是怎么做到的?

StatefulSet控制器恢复Pod的过程分析:

  1. 首先,当你把一个Pod,比如web-0删除之后,这个Pod对应的PV和PVC并不会被删除,而这个Volume中写入的数据,也依然存储在远程存储服务中。
  2. 此时,StatefulSet控制器发现,一个名叫web-0的Pod消失了。所以控制器会重新创建一个新的、名字还是叫做web-0的Pod,来进行调谐。
  3. 并且这个新Pod对象的定义中,它声明使用的PVC的名字,仍是www-web-0。所以这个新的web-0 Pod被创建出来之后,Kubernetes为它查找名叫www-web-0的PVC时,就会将旧Pod遗留的PVC,进而找到和这个PVC绑定在一起的PV

https://www.jianshu.com/p/71c1556b64db

kubernetes StatefulSet介绍相关推荐

  1. Kubernetes中StatefulSet介绍

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

  2. 容器编排技术 -- Kubernetes StatefulSet基本使用

    容器编排技术 -- Kubernetes StatefulSet基本使用 1 Objectives 2 Before you begin 2.1 顺序创建 Pod 3 Pods in a Statef ...

  3. kubernetes基础介绍及kubectl常用命令

    kubernetes基础介绍及kubectl常用命令 k8s的pod分类 自主式pod 控制器管理的pod 核心主键 HPA service 网络模型 同节点Pod之间的通信 不同节点上的Pod通信 ...

  4. Kubernetes StatefulSet源码分析

    2019独角兽企业重金招聘Python工程师标准>>> Author: xidianwangtao@gmail.com,Based on Kubernetes 1.9 摘要:Kube ...

  5. Kubernetes—StatefulSet部署有状态应用详解(二十四)

    关注微信公众号:CodingTechWork,一起学习进步. 引言   我们都知道在k8s集群中,Deployment是用来部署无状态的服务,那有状态的服务是用什么资源对象来部署呢?无状态和有状态服务 ...

  6. kubernetes 入门介绍

    这里写目录标题 1. kubernetes 入门介绍 1.1. 发展历程 1.2. 竞争对手 1.3. k8s 概述 1.4. k8s 功能 1.4.1. 自动装箱 1.4.2. 自我修复 (自愈能力 ...

  7. 浅析Kubernetes StatefulSet

    StatefulSet和Deployment的区别 "Deployment用于部署无状态服务,StatefulSet用来部署有状态服务". 具体的,什么场景需要使用Stateful ...

  8. kubernetes组件介绍

    目录 1.前言 2.k8s简介 3.master 3.1 kubernetes Scheduler 简介 3.2 Controller Manager简介 4.Node 1.前言 为什么要用 Kube ...

  9. Kubernetes CSI 介绍及使用

    CSI 介绍及使用 和 Flexvolume 类似,CSI 也是为第三方存储提供数据卷实现的抽象接口. 有了 Flexvolume,为何还要 CSI 呢? Flexvolume 只是给 kuberne ...

  10. 云原生-Kubernetes Pod 介绍

    Pod 直译是豆荚,可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起 就是豆荚(一个 Pod).在 k8s 中我们不会直接操作容器,而是把容器包装成 Pod 再进行管 理. 一. Po ...

最新文章

  1. AngularJS 学习笔记 - $http.post 跟后台交互
  2. 阿里云服务器tomcat配置https
  3. html文档图标恢复,恢复HTM HTML图标方法
  4. C-free在编写代码的过程中遇到方向键失灵,回车键失灵,换行失灵,但是可以正常输入的解决办法!!!!!
  5. 豆瓣app签名sig
  6. dw网页制作的基本步骤_dreamweaver制作网页详细步骤(设计网站首页)
  7. Transmission搭建BT下载服务器
  8. ✨✨✨【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(二)✨✨✨
  9. ant design Vue 纯前端实现分页
  10. c++ IP地址离线查询
  11. java支持多继承吗
  12. pytorch——VGG网络搭建
  13. LK 打印log控制
  14. python学习笔记(七):运算符和流程控制
  15. Mock工具wiremock-py
  16. Java SE 基本介绍上
  17. java基础之数据类型
  18. 标准化和归一化 超全详解
  19. ZenCart中Dropship与wholesale模块设置
  20. 解决博客群发问题的实用Seo工具

热门文章

  1. 自定义nagios监控mogilefs存储节点脚本
  2. 1.1 计算机网络组成与分类
  3. 读python源码--对象模型
  4. (新年快乐)ABP理论学习之本地化(2016第一篇)
  5. bootstrap中的动态加载出来的图片轮播中的li标签中的class=active的动态添加移除...
  6. 比较IE6的不同之处,与IE8 IE11 比较
  7. HTTP Error 404 - File or Directory not found caused by ISAPI filter of Sharepoint
  8. java课设单链式存储心得报告_队列的链式存储方式的实现(Java语言描述)
  9. linux储存文件格式,linux中的.local文件是什么类型的文件?
  10. python和pytorch关系_pytorch 模拟关系拟合——回归实例