StatefulSet:

1、稳点且唯一的网络标识符

2、稳点且持久的存储

3、有序、平滑的部署和扩展

4、有序、平滑的删除和终止

5、有序的滚动更新

三个组件组成:headless(无头服务)    service、StatefuSet、voluneClaimTemplate(存储卷申请模板)

##需要建好pv存储

  1.  

apiVersion: v1
kind: Service
metadata:
name: myapp-svc
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: myapp
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-statefulset
spec:
serviceName: myapp-svc
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: mystat-pod
image: ikubernetes/myapp:v1
ports:
- containerPort: 80
name: web
volumeMounts:
- name: myappdata
mountPath: /usr/share/nginx/html
volumeClaimTemplates: ##会动态创建pvc
- metadata:
name: myappdata
spec:
accessModes: ["ReadWriteOnce"]
# storageClassName: "gluster-dybanic"
resources:
requests:
storage: 2Gi

  1.  

[root@k8s-m ~]# kubectl apply -f srtateful-demo.yaml
service/myapp-svc created
statefulset.apps/my-statefulset created

  1. ##查看

[root@k8s-m ~]# kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv01 2Gi RWO,RWX Retain Bound default/myappdata-my-statefulset-0 2d
pv02 5Gi RWO,RWX Retain Available 2d
pv03 10Gi RWO,RWX Retain Bound default/mypvc 2d
pv04 20Gi RWO,RWX Retain Available 2d
[root@k8s-m ~]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
myappdata-my-statefulset-0 Bound pv01 2Gi RWO,RWX 3m
mypvc Bound pv03 10Gi RWO,RWX 2d
[root@k8s-m ~]# kubectl get sts
NAME DESIRED CURRENT AGE
my-statefulset 1 1 3m

##删除pod的话,pvc不会被删除

  1.  

#上面粘贴的格式有误

构建pv与StatefulSet

  1. #创建目录
  2. mkdir /data/{v1,v2,v3,v4,v5} -p
  3. #安装nfs
  4. yum install -y nfs-utils
  5. #更改所有者
  6. chown -R nfsnobody.nfsnobody /data/
  7. #配置nfs文件
  8. [root@k8s-m yaml]# cat /etc/exports
  9. /data/v1 172.31.0.0/20(rw,sync)
  10. /data/v2 172.31.0.0/20(rw,sync)
  11. /data/v3 172.31.0.0/20(rw,sync)
  12. /data/v4 172.31.0.0/20(rw,sync)
  13. /data/v5 172.31.0.0/20(rw,sync)
  14. #启动nfs
  15. systemctl start nfs
  16. #查看挂载资源
  17. [root@k8s-m yaml]# showmount -e 127.0.0.1
  18. Export list for 127.0.0.1:
  19. /data/v5 172.31.0.0/20
  20. /data/v4 172.31.0.0/20
  21. /data/v3 172.31.0.0/20
  22. /data/v2 172.31.0.0/20
  23. /data/v1 172.31.0.0/20
  24.  
  25. #创建pv
  26. [root@k8s-m yaml]# cat mypv.yaml
  27. apiVersion: v1
  28. kind: PersistentVolume
  29. metadata:
  30. name: pv01
  31. spec:
  32. nfs:
  33. path: /data/v1
  34. server: k8s-m
  35. accessModes: ["ReadWriteMany","ReadWriteOnce"]
  36. capacity:
  37. storage: 2Gi
  38. ---
  39. apiVersion: v1
  40. kind: PersistentVolume
  41. metadata:
  42. name: pv02
  43. spec:
  44. nfs:
  45. path: /data/v2
  46. server: k8s-m
  47. accessModes: ["ReadWriteMany"]
  48. capacity:
  49. storage: 2Gi
  50.  
  51. #导入
  52. kubectl apply -f mypv.yaml
  53. #创建statefulset
  54. [root@k8s-m yaml]# cat mystatefulset.yaml
  55. apiVersion: v1
  56. kind: Service
  57. metadata:
  58. name: nginx
  59. labels:
  60. app: nginx
  61. spec:
  62. ports:
  63. - port: 80
  64. name: web
  65. clusterIP: None
  66. selector:
  67. app: nginx
  68. ---
  69. apiVersion: apps/v1beta1
  70. kind: StatefulSet
  71. metadata:
  72. name: web
  73. spec:
  74. serviceName: "nginx"
  75. replicas: 1
  76. template:
  77. metadata:
  78. labels:
  79. app: nginx
  80. spec:
  81. containers:
  82. - name: nginx
  83. image: nginx:alpine
  84. ports:
  85. - containerPort: 80
  86. name: web
  87. volumeMounts:
  88. - name: www
  89. mountPath: /usr/share/nginx/html
  90. volumeClaimTemplates:
  91. - metadata:
  92. name: www
  93. spec:
  94. accessModes: [ "ReadWriteOnce" ]
  95. resources:
  96. requests:
  97. storage: 2Gi
  98.  
  99. #导入
  100. kubectl apply -f mystatefulset.yaml
  101. #查看
  102. [root@k8s-m yaml]# kubectl get pvc
  103. NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
  104. www-web-0 Bound pv01 2Gi RWO,RWX 5s
  105. [root@k8s-m yaml]# kubectl get statefulset
  106. NAME READY AGE
  107. web 1/1 20s
  108. [root@k8s-m yaml]# kubectl get pod
  109. NAME READY STATUS RESTARTS AGE
  110. myapp-deploy-59fddd9797-6px2d 1/1 Running 0 117m
  111. myapp-deploy-59fddd9797-scvdl 1/1 Running 0 117m
  112. myapp-deploy-59fddd9797-zrk95 1/1 Running 0 117m
  113. web-0 1/1 Running 0 24s

  

StatefulSet的更多相关文章

  1. [Kubernetes]深入理解StatefulSet

    前面我写的一系列博客,如果你能够耐心看到这一篇,那你应该对一个概念就不是太陌生了:Deployment. 为什么提这个概念呢,这就要说到Deployment的一个不足了.Deployment不足以覆盖 ...

  2. kubernetes进阶之六:StatefulSet & DaemonSet

    StatefulSet(有状态): StatefulSet适合持久性的应用程序,有唯一的网络标识符(IP),持久存储,有序的部署,拓展,删除和滚动更新. 在Kubernetes系统中,Pod的管理对象 ...

  3. StatefulSet(一):拓扑状态

    Deployment 实际上并不足以覆盖所有的应用编排问题. 造成这个问题的根本原因,在于 Deployment 对应用做了一个简单化假设. 它认为,一个应用的所有 Pod,是完全一样的.所以,它们互 ...

  4. Kubernetes之StatefulSet

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

  5. 14.statefulset服务

    有状态的控制器有以下几个特点 稳定,独特的网络标识符. 稳定,持久的存储. 有序,优雅的部署和扩展. 有序的自动滚动更新. 使用限制 StatefulSet是1.9之前的beta资源,在1.5之前的任 ...

  6. kubernetes statefulset kafka 部署后, 外部访问超时问题解决

    k8s 内部的kafka要映射到外网,直接把 kafka 通过 expose 把pod 映射成服务,使用nodeport 连接,出现超时问题, 解决思路: 1.  查看zk中,kafka的注册信息,P ...

  7. 用statefulSet 部署持久化的OA(Tomcat)

    1.部署多个副本的OA(Tomcat)集群,其中一个Tomcat的需要加一个定时器,其他代码跟其他的Tomcat的代码一样.需要重启后也还是保持这个状态.代码如下: apiVersion: v1 ki ...

  8. statefulSet 原理理解

    1.  svc(vip)                       --              deployment 2.headless(none)                --     ...

  9. [k8s]k8s配置nfs做后端存储&配置多nginx共享存储&&statefulset配置

    所有节点安装nfs yum install nfs-utils rpcbind -y mkdir -p /ifs/kubernetes echo "/ifs/kubernetes 192.1 ...

随机推荐

  1. UVA12545-Bits Equalizer(思维)

    Problem UVA12545-Bits Equalizer Accept: 821  Submit: 4548Time Limit: 3000 mSec Problem Description I ...

  2. Springboot 实现api校验和登录验证

    https://blog.csdn.net/qq_36085004/article/details/83348144 文章目录 API校验 场景 实现思路 代码 拦截器: 拦截器注册: 登录token ...

  3. ubantu服务器配置ss

    阿里云 ubantu16.0(自带pip) 服务端 $ apt-get install python-pip $ pip install shadowsocks $ vim /etc/shadowso ...

  4. 003_python内置的@staticmethod详解

    python中的staticmethod 主要是方便将外部函数集成到类体中,美化代码结构,重点在不需要类实例化的情况下调用方法(类似java的静态方法) 如果你去掉staticmethod,在方法中加 ...

  5. 吴恩达课后作业学习2-week3-tensorflow learning-1-例子学习

    参考:https://blog.csdn.net/u013733326/article/details/79971488 使用TensorFlow构建你的第一个神经网络 我们将会使用TensorFlo ...

  6. 随机产生1-12的整数 , 根据产生整数输出一下该月份的季节信息(Math.random()和if语句的应用)

    package com.summer.cn; /** * @author Summer *随机产生1-12的整数 , 根据产生整数输出一下该月份的季节信息 */ public class Test04 ...

  7. 安装NVIDIA

    安装NVIDIA显卡驱动 $ ubuntu-drivers devices; $ sudo apt install nvidia-340 (安装指定版本) 重启系统: $ nvidia-smi (查看 ...

  8. AI 积分图

    积分图(Integral Image),可以用于快速计算矩形特征.积分图每个位置(x, y)的值,等于原图对应位置的左上角所有像素点的值之和.因为“积分”在离散情况下就是求和,所以这也是积分图的命名由 ...

  9. 【出错记录】Tomcat非root用户启动无法拥有权限读写文件

    简单记录下,如有必要,将深入补充: 一.非root用户运行Tomcat及原因 由于项目中,为了安全需要,Tomcat将禁止以root形式启动,原因很简单,举个例子,一旦有人恶意将jsp文件透过某个别的 ...

  10. (5)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 熔断降级(Polly)

    一. 什么是熔断降级 熔断就是“保险丝”.当出现某些状况时,切断服务,从而防止应用程序不断地尝试执行可能会失败的操作给系统造成“雪崩”,或者大量的超时等待导致系统卡死. 降级的目的是当某个服务提供者发 ...