有状态的控制器有以下几个特点

稳定,独特的网络标识符。
稳定,持久的存储。
有序,优雅的部署和扩展。
有序的自动滚动更新。

使用限制

StatefulSet是1.9之前的beta资源,在1.5之前的任何Kubernetes版本中都没有。
给定Pod的存储必须由PV根据请求进行配置storage class,或者由管理员预先配置。
删除和/或缩放StatefulSet将不会删除与StatefulSet关联的卷。这样做是为了确保数据安全,这通常比自动清除所有相关的StatefulSet资源更有价值。
StatefulSets目前要求HEADLESS负责Pod的网络身份。您有责任创建此服务。
删除StatefulSet时,StatefulSets不提供对pod终止的任何保证。要在StatefulSet中实现pod的有序和正常终止,可以在删除之前将StatefulSet缩减为0

组件

名为nginx的无头服务用于控制网络域。
StatefulSet,名为web,有一个Spec,表明nginx容器的3个副本将在唯一的Pod中启动。
该volumeClaimTemplates将使用提供稳定的存储PersistentVolumes由PersistentVolume置备供应。

下面我们来简单创建一个redis的state服务(未作主从配置)

首先要创建三个可用pv 供其使用  每个node节点都要安装nfs工具否则会卡住

[root@master pvc]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv-test- 5Gi RWO Recycle Available slow 5s
pv-test- 5Gi RWO Recycle Available slow 5s
pv-test- 5Gi RWO Recycle Available slow 5s
[root@master pvc]# cat pv.ymal
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-test-
namespace: default
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
nfs:
path: /kube_pv
server: 10.24.2.125
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-test-
namespace: default
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
nfs:
path: /kube_pv
server: 10.24.2.125
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-test-
namespace: default
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Recycle
storageClassName: slow
nfs:
path: /kube_pv
server: 10.24.2.125

启动stateful

[root@master stateful]# cat  redis-state.ymal
apiVersion: v1
kind: Service
metadata:
name: redis-state-svc
namespace: default
spec:
selector:
app: redis
clusterIP: "None"
ports:
- port:
name: redis
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis-state
spec:
serviceName: redis-state-svc
replicas:
selector:
matchLabels:
app: redis
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redis:-alpine
ports:
- containerPort:
name: redis
volumeMounts:
- name: redis-data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: redis-data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: "slow"
volumeMode: Filesystem
resources:
requests:
storage: 2Gi

statefu 会根据副本数量启动的有编号的pod,并在更新或者删除的时候顺序操作。

这里应注意一点我们的redis镜像中默认启动过程中会对/data 目录进行chown 但是在nfs中这里需要对应设置很不便利

14.statefulset服务的更多相关文章

  1. 14 微服务电商【黑马乐优商城】:day01-springboot(理论篇)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) :day01-springboot(Thyme ...

  2. 14 微服务电商【黑马乐优商城】:day06-使用nginx反向代理并掌握cors解决跨域

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  3. 14 微服务电商【黑马乐优商城】:day06-了解vue-router和webpack的使用

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  4. 14 微服务电商【黑马乐优商城】:day04-ES6语法入门

    day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一)  :day02-springcloud(理论篇二)  :day ...

  5. 14 微服务电商【黑马乐优商城】:day04-项目搭建(二)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  6. 14 微服务电商【黑马乐优商城】:day04-项目搭建(一)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  7. 14 微服务电商【黑马乐优商城】:day03-springcloud(Zuul网关)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  8. 14 微服务电商【黑马乐优商城】:day03-springcloud(Hystix,Feign)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

  9. 14 微服务电商【黑马乐优商城】:day02-springcloud(理论篇四:配置Robbin负载均衡)

    本项目的笔记和资料的Download,请点击这一句话自行获取. day01-springboot(理论篇) :day01-springboot(实践篇) day02-springcloud(理论篇一) ...

随机推荐

  1. 从String.valueOf(null)说起

    同学在群问String.valueOf(null)返回啥,我看了下源码,返回"null"啊,   public static String valueOf(Object obj) ...

  2. Docker资源限制与Cgroups

    一.Linux control groups 简介     Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如 ...

  3. console 命令进行 JS 调试的灵活用法

    1.console.log() 占位符 console.log 支持的占位符包括:字符(%s).整数(%d或%i).浮点数(%f)和对象(%o): console.log('字符串: %s, 整数: ...

  4. 解决Android Studio 错误方法

    https://blog.csdn.net/lang523493505/article/details/82914253 https://blog.csdn.net/qq_23599965/artic ...

  5. C\S 架构 DNS服务器 交换机 路由器

    ------------------------只有不快的斧,没有劈不开的柴;只有想不到的人,没有做不到的事.想干总会有办法,不想干总会有理由!# -------------------------- ...

  6. SQL Server(2000,2005,2008):恢复/回滚时间比预期长(译)

    我已经讨论了各种确定恢复状态的方法,但是本周我参与了一个围绕回滚的有趣讨论.交易已经运行了14个小时,然后发出了KILL SPID.SPID进入回滚,并发生2天和4小时. 自然的问题是为什么不14小时 ...

  7. Day15 Python基础之logging模块(十三)

    参考源:http://www.cnblogs.com/yuanchenqi/articles/5732581.html logging模块 (****重点***) 一 (简单应用) import lo ...

  8. Redis客户端断开重连功能要点

    Redis客户端: Java基于Jedis开发 C#基于StackExchange开发 C++基于acl开发 首先确保在主从模式下,客户端能分辨主从节点,自动连接正确的客户端,这样只要有一个节点可用, ...

  9. 【问题解决方案】之 cmd 窗口问题汇总

    cmd窗口C盘切不到其他盘的解决方案: 1.切换盘符,直接键入其他盘,如:>>D: (回车) 2.强行切换>>cd /d D: 或者 >>pushd C:

  10. asp.net mvc 自定义全局过滤器 验证用户是否登录

    一般具有用户模块的系统都需要对用户是否登录进行验证,如果用户登录了就可以继续操作,否则退回用户的登录页面 对于这样的需求我们可以通过自定义一个独立的方法来完成验证的操作,但是这样代码的重复率就大大提高 ...