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. 在Ubuntu上安装Jenkins

    先决条件 安装Java SDK sudo apt-get install openjdk-8-jdk # sudo apt-get install openjdk-7-jdk 早些系统可以安装 第1步 ...

  2. 吴恩达课后作业学习1-week4-homework-multi-hidden-layer -2

    参考:https://blog.csdn.net/u013733326/article/details/79767169 希望大家直接到上面的网址去查看代码,下面是本人的笔记 实现多层神经网络 1.准 ...

  3. 吴恩达课后作业学习2-week1-2正则化

    参考:https://blog.csdn.net/u013733326/article/details/79847918 希望大家直接到上面的网址去查看代码,下面是本人的笔记 4.正则化 1)加载数据 ...

  4. IDEA+提示“Cannot resolve symbol XXXX”

    问题描述:鼠标放置下图中红色包上提示“Cannot resolve symbol XXXX”信息 解决: File->Invalidate Caches/Restart 清除缓存并重启 idea

  5. js 原生ajax实现

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. luogu p1652 圆

    题目部分 题目描述 给出N个圆,保证任意两个圆都相离,然后给出两个点(x1,y1).(x2,y2),保证均不在某个圆上,要从点(x1,y1)到(x2,y2)画条曲线,问这条曲线最少穿过多少次圆的边界? ...

  7. python内建的命名空间研究

    python内建的命名空间研究 说明: python内置模块的命名空间.python在启动的时候会自动为我们载入很多内置的函数.类,比如 dict,list,type,print,这些都位于 __bu ...

  8. 在Bootstrap开发中解决Tab标签页切换图表显示问题

    在做响应式页面的时候,往往需要考虑更多尺寸设备的界面兼容性,一般不能写死像素,以便能够使得界面元素能够根据设备的不同进行动态调整,但往往有时候还是碰到一些问题,如Tab标签第一页面正常显示,但是切换其 ...

  9. Spring+SpringMVC+Mybatis框架整合流程

    一:基本步骤 新建Maven项目,导入相关依赖.(推荐) ————–Mybatis配置 —————- 新建entity包,并根据数据库(表)新建相关实体类. 新建dao包,并根据业务创建必要的mapp ...

  10. 渗透测试_利用Burp爆破用户名与密码

    burp 全称 Burp Suite, 是用于攻击web 应用程序的集成平台.它包含了许多工具,可以抓包可以爆破也可以扫描漏洞. 主要组件如下: Proxy——是一个拦截HTTP/S的代理服务器,作为 ...