zoukankan      html  css  js  c++  java
  • StatefulSet

    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
    

      

  • 相关阅读:
    寒假作业3:简化电梯优化
    线段树2
    线段树1
    数字游戏(二)
    P1352 没有上司的舞会
    加分二叉树
    数字转换
    BLO-Blockade
    树上倍增法求LCA
    种西瓜
  • 原文地址:https://www.cnblogs.com/zhangb8042/p/9608936.html
Copyright © 2011-2022 走看看