StatefulSet

摘要:
端口:元数据:app:“gluster dybanic”资源:存储:pv01规范:nfs:k8s maccess模式:

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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Maven命令与pom文件常量Aho下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

什么是Reinforcement Learning

看了看之前写的那篇博客,感觉并没有真的总结清楚DRL是什么,难怪我一直不懂什么是DRL,原来是以前就没学好,所以现在从RL开始了解了解,了解RL之后再去了解DRL。 setup大部分,还是来自原本的博客,加了点注释。reform了一下,懒得再打公式了。 什么是RL 简介 什么是MDP Markov Decision Process MDP基于一种假设...

第五课:部署Ingress服务

14 部署Ingress (master01) 服务反向代理 部署Traefik 2.0版本 14.1 创建traefik-crd.yaml文件 全局生效,不局限于ns,定义kind类型,用于ingress-route.yaml里的kind使用。 mkdir /root/traefik && cd /root/traefik cat >...

ios时间处理

1.获取时间的年,月,日,时,分,秒   1 //"expireDatetime": "2015-07-28 17:29:48.0" <==> 转换 2 NSString *dateStr = [model.expireDatetime substringToIndex:model.expireDatetime.leng...

ARM 汇编的mov操作立即数的疑问

1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别。偶然在网上搜到“faq ARM assembly”,其中描述的几个问题还是值得好好研究一下。 2. 慢慢的发现自己也不再害怕英文的文档了,耐心看至少也能懂个大概。大批经典的文章和书籍都是en文的,所以经常看英文文档是一个非常好的习惯。看看GNU的一些reference manual,...

枚举类的作用

目标:枚举类用于做信息标志和信息分类。   常量做信息标志和分类,虽然也挺好,但是入参不受控制,入参太随性无法严谨。   枚举采用于做信息标志和信息分类,优雅! 小结: 建议以后做信息标志和信息分类采用枚举进行! package 枚举类的使用; /** * @program: javaDemo01->EumuTest * @descriptio...

命令行执行robot framework测试用例

测试套件和测试用例如下图: 1.执行指定目录下的所有suite 执行命令: pybot F:opmsTestCaseTestCase 结果如下:   2.执行指定的suite 执行命令: pybot F:opmsTestCaseTestCase eacher.txt 结果如下:   3.执行suite中的单个要测试用例 语法:pybot --test 用...