kubernetes StatefulSet介绍
一、有状态应用
对于数据存储类应用,它的多个实例,往往都会在本地磁盘保存一份数据。
导致这些实例一旦被杀掉,即便重建出来,实例与数据之间的对应关系也已经丢失,从而导致应用创建失败。
这种实例之间有不对等关系,以及实例对外部数据有依赖关系的应用,称为“有状态应用”。
二、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的过程分析:
- 首先,当你把一个Pod,比如web-0删除之后,这个Pod对应的PV和PVC并不会被删除,而这个Volume中写入的数据,也依然存储在远程存储服务中。
- 此时,StatefulSet控制器发现,一个名叫web-0的Pod消失了。所以控制器会重新创建一个新的、名字还是叫做web-0的Pod,来进行调谐。
- 并且这个新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介绍相关推荐
- Kubernetes中StatefulSet介绍
原文链接:Kubernetes中StatefulSet介绍 StatefulSet 是Kubernetes1.9版本中稳定的特性,本文使用的环境为 Kubernetes 1.11.如何搭建环境可以参考 ...
- 容器编排技术 -- Kubernetes StatefulSet基本使用
容器编排技术 -- Kubernetes StatefulSet基本使用 1 Objectives 2 Before you begin 2.1 顺序创建 Pod 3 Pods in a Statef ...
- kubernetes基础介绍及kubectl常用命令
kubernetes基础介绍及kubectl常用命令 k8s的pod分类 自主式pod 控制器管理的pod 核心主键 HPA service 网络模型 同节点Pod之间的通信 不同节点上的Pod通信 ...
- Kubernetes StatefulSet源码分析
2019独角兽企业重金招聘Python工程师标准>>> Author: xidianwangtao@gmail.com,Based on Kubernetes 1.9 摘要:Kube ...
- Kubernetes—StatefulSet部署有状态应用详解(二十四)
关注微信公众号:CodingTechWork,一起学习进步. 引言 我们都知道在k8s集群中,Deployment是用来部署无状态的服务,那有状态的服务是用什么资源对象来部署呢?无状态和有状态服务 ...
- kubernetes 入门介绍
这里写目录标题 1. kubernetes 入门介绍 1.1. 发展历程 1.2. 竞争对手 1.3. k8s 概述 1.4. k8s 功能 1.4.1. 自动装箱 1.4.2. 自我修复 (自愈能力 ...
- 浅析Kubernetes StatefulSet
StatefulSet和Deployment的区别 "Deployment用于部署无状态服务,StatefulSet用来部署有状态服务". 具体的,什么场景需要使用Stateful ...
- kubernetes组件介绍
目录 1.前言 2.k8s简介 3.master 3.1 kubernetes Scheduler 简介 3.2 Controller Manager简介 4.Node 1.前言 为什么要用 Kube ...
- Kubernetes CSI 介绍及使用
CSI 介绍及使用 和 Flexvolume 类似,CSI 也是为第三方存储提供数据卷实现的抽象接口. 有了 Flexvolume,为何还要 CSI 呢? Flexvolume 只是给 kuberne ...
- 云原生-Kubernetes Pod 介绍
Pod 直译是豆荚,可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起 就是豆荚(一个 Pod).在 k8s 中我们不会直接操作容器,而是把容器包装成 Pod 再进行管 理. 一. Po ...
最新文章
- AngularJS 学习笔记 - $http.post 跟后台交互
- 阿里云服务器tomcat配置https
- html文档图标恢复,恢复HTM HTML图标方法
- C-free在编写代码的过程中遇到方向键失灵,回车键失灵,换行失灵,但是可以正常输入的解决办法!!!!!
- 豆瓣app签名sig
- dw网页制作的基本步骤_dreamweaver制作网页详细步骤(设计网站首页)
- Transmission搭建BT下载服务器
- ✨✨✨【C语言】带你用最短的时间刷题(附解题思路、具体代码)不断更新(二)✨✨✨
- ant design Vue 纯前端实现分页
- c++ IP地址离线查询
- java支持多继承吗
- pytorch——VGG网络搭建
- LK 打印log控制
- python学习笔记(七):运算符和流程控制
- Mock工具wiremock-py
- Java SE 基本介绍上
- java基础之数据类型
- 标准化和归一化 超全详解
- ZenCart中Dropship与wholesale模块设置
- 解决博客群发问题的实用Seo工具
热门文章
- 自定义nagios监控mogilefs存储节点脚本
- 1.1 计算机网络组成与分类
- 读python源码--对象模型
- (新年快乐)ABP理论学习之本地化(2016第一篇)
- bootstrap中的动态加载出来的图片轮播中的li标签中的class=active的动态添加移除...
- 比较IE6的不同之处,与IE8 IE11 比较
- HTTP Error 404 - File or Directory not found caused by ISAPI filter of Sharepoint
- java课设单链式存储心得报告_队列的链式存储方式的实现(Java语言描述)
- linux储存文件格式,linux中的.local文件是什么类型的文件?
- python和pytorch关系_pytorch 模拟关系拟合——回归实例