StatefulSet:

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

2、稳点且持久的存储

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

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

5、有序的滚动更新

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

##需要建好pv存储


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


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

##查看

[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不会被删除

 

#上面粘贴的格式有误

构建pv与StatefulSet

#创建目录
mkdir /data/{v1,v2,v3,v4,v5} -p
#安装nfs
yum install -y nfs-utils
#更改所有者
chown -R nfsnobody.nfsnobody /data/
#配置nfs文件
[root@k8s-m yaml]# cat /etc/exports
/data/v1 172.31.0.0/20(rw,sync)
/data/v2 172.31.0.0/20(rw,sync)
/data/v3 172.31.0.0/20(rw,sync)
/data/v4 172.31.0.0/20(rw,sync)
/data/v5 172.31.0.0/20(rw,sync)
#启动nfs
systemctl start nfs
#查看挂载资源
[root@k8s-m yaml]# showmount -e 127.0.0.1
Export list for 127.0.0.1:
/data/v5 172.31.0.0/20
/data/v4 172.31.0.0/20
/data/v3 172.31.0.0/20
/data/v2 172.31.0.0/20
/data/v1 172.31.0.0/20 #创建pv
[root@k8s-m yaml]# cat mypv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv01
spec:
nfs:
path: /data/v1
server: k8s-m
accessModes: ["ReadWriteMany","ReadWriteOnce"]
capacity:
storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv02
spec:
nfs:
path: /data/v2
server: k8s-m
accessModes: ["ReadWriteMany"]
capacity:
storage: 2Gi #导入
kubectl apply -f mypv.yaml
#创建statefulset
[root@k8s-m yaml]# cat mystatefulset.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
ports:
- port: 80
name: web
clusterIP: None
selector:
app: nginx
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: web
spec:
serviceName: "nginx"
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
name: web
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates:
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 2Gi #导入
kubectl apply -f mystatefulset.yaml
#查看
[root@k8s-m yaml]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
www-web-0 Bound pv01 2Gi RWO,RWX 5s
[root@k8s-m yaml]# kubectl get statefulset
NAME READY AGE
web 1/1 20s
[root@k8s-m yaml]# kubectl get pod
NAME READY STATUS RESTARTS AGE
myapp-deploy-59fddd9797-6px2d 1/1 Running 0 117m
myapp-deploy-59fddd9797-scvdl 1/1 Running 0 117m
myapp-deploy-59fddd9797-zrk95 1/1 Running 0 117m
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. 【移动端】单位em相关资料

    https://www.cnblogs.com/koubazhuanshu/p/6985331.html https://www.w3cplus.com/css/px-to-em 不建议使用 作者:s ...

  2. 【移动端】移动端字体单位font-size选择px还是rem

    对于只需要适配少部分手机设备,且分辨率对页面影响不大的,使用px即可对于需要适配各种移动设备,使用rem,例如只需要适配iphone和iPad等分辨率差别比较挺大的设备 html{font-size: ...

  3. class文件魔数CAFEBABE的由来

    https://blog.csdn.net/ustcyy91/article/details/78462378 https://blog.csdn.net/renfufei/article/detai ...

  4. GitHub存储库泄露了API令牌和加密密钥

    导读 北卡罗莱纳州立大学(NCSU)学者的一项研究表明,一些GitHub存储库泄漏API令牌和密码密钥.研究人员分析了分布在数百万存储库中的10亿多个GitHub文件.研究人员使用GitHub搜索AP ...

  5. Java IO(五)——字符流进阶及BufferedWriter、BufferedReader

    一.字符流和字节流的区别 拿一下上一篇文章的例子: package com.demo.io; import java.io.File; import java.io.FileReader; impor ...

  6. [Spark][Flume]Flume 启动例子

    Flume 启动例子: flume-ng agent --conf /etc/flume-ng/conf --conf-file /etc/flume-ng/conf/flume.conf --nam ...

  7. Java执行JavaScript脚本破解encodeInp()加密

    一:背景 在模拟登录某网站时遇到了用户名和密码被JS进行加密提交的问题,如图: 二:解决方法 1.我们首先需要获得该JS加密函数,一般如下: conwork.js var keyStr = " ...

  8. 破解爱奇艺优酷等Vip视频

    现在网络上兴起卖低价Vip会员的,博主在这里介绍一个破解软件,不需要登录,找到视频播放页就可以观看! 软件下载地址:http://zyzpp.cn/ 1.下载软件安装后打开: 2.比如我们要看爱奇艺的 ...

  9. python二:数据类型举例练习--小白博客

    一.#字符串 res = 'hello,world' 1.#字符串切片取值:******* print(res[0:5]) 顾头不顾尾,取下标0-4的字符 print(res[0:-1:2]) 步长为 ...

  10. 二十一、当锚点遇到fixed(margin和padding)

    当锚点点击跳转的时候,如果上方有fixed,锚点跳转会默认跳转到top为0的地方,有一部分就被遮挡了 解决方法:(像素值随便给的) 给锚点跳转到的具体内容加padding-top:-50px:marg ...