zoukankan      html  css  js  c++  java
  • 14.statefulset服务

    有状态的控制器有以下几个特点

    稳定,独特的网络标识符。
    稳定,持久的存储。
    有序,优雅的部署和扩展。
    有序的自动滚动更新。

    使用限制

    StatefulSet是1.9之前的beta资源,在1.5之前的任何Kubernetes版本中都没有。
    给定Pod的存储必须由PV根据请求进行配置storage class,或者由管理员预先配置。
    删除和/或缩放StatefulSet将不会删除与StatefulSet关联的卷。这样做是为了确保数据安全,这通常比自动清除所有相关的StatefulSet资源更有价值。
    StatefulSets目前要求HEADLESS负责Pod的网络身份。您有责任创建此服务。
    删除StatefulSet时,StatefulSets不提供对pod终止的任何保证。要在StatefulSet中实现pod的有序和正常终止,可以在删除之前将StatefulSet缩减为0

    组件

    名为nginx的无头服务用于控制网络域。
    StatefulSet,名为web,有一个Spec,表明nginx容器的3个副本将在唯一的Pod中启动。
    该volumeClaimTemplates将使用提供稳定的存储PersistentVolumes由PersistentVolume置备供应。

    下面我们来简单创建一个redis的state服务(未作主从配置)

    首先要创建三个可用pv 供其使用  每个node节点都要安装nfs工具否则会卡住

    [root@master pvc]# kubectl get pv
    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    pv-test-1   5Gi        RWO            Recycle          Available           slow                    5s
    pv-test-2   5Gi        RWO            Recycle          Available           slow                    5s
    pv-test-3   5Gi        RWO            Recycle          Available           slow                    5s
    [root@master pvc]# cat pv.ymal 
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-test-1
      namespace: default
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      storageClassName: slow
      nfs:
        path: /kube_pv
        server: 10.24.2.125
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-test-2
      namespace: default
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      storageClassName: slow
      nfs:
        path: /kube_pv
        server: 10.24.2.125
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-test-3
      namespace: default
    spec:
      capacity:
        storage: 5Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Recycle
      storageClassName: slow
      nfs:
        path: /kube_pv
        server: 10.24.2.125

    启动stateful

    [root@master stateful]# cat  redis-state.ymal 
    apiVersion: v1
    kind: Service
    metadata:
      name: redis-state-svc
      namespace: default
    spec:
      selector:
        app: redis
      clusterIP: "None"
      ports:
      - port: 6379
        name: redis
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: redis-state
    spec:
      serviceName: redis-state-svc
      replicas: 3
      selector:
        matchLabels:
          app: redis
      template:
        metadata:
           labels:
             app: redis
        spec:
          containers:
            - name: redis
              image: redis:4-alpine
              ports:
              - containerPort: 6379
                name: redis
              volumeMounts:
              - name: redis-data
                mountPath: /data
      volumeClaimTemplates:
        - metadata:
            name: redis-data
          spec:
            accessModes: [ "ReadWriteOnce" ]
            storageClassName: "slow"
            volumeMode: Filesystem
            resources:
              requests:
                storage: 2Gi

    statefu 会根据副本数量启动的有编号的pod,并在更新或者删除的时候顺序操作。

     这里应注意一点我们的redis镜像中默认启动过程中会对/data 目录进行chown 但是在nfs中这里需要对应设置很不便利

  • 相关阅读:
    [BZOJ1193][HNOI2006]马步距离 大范围贪心小范围爆搜
    [BZOJ2223][BZOJ3524][Poi2014]Couriers 主席树
    [BZOJ1069][SCOI2007]最大土地面积 凸包+旋转卡壳
    旋转卡壳 求凸多边形中面积最大的四边形
    [BZOJ2815][ZJOI2012]灾难 灭绝树+拓扑排序+lca
    [BZOJ2599][IOI2011]Race 点分治
    [BZOJ1455]罗马游戏 左偏树+并查集
    [BZOJ1295][SCOI2009]最长距离 最短路+枚举
    [LintCode] Climbing Stairs
    [Codeforces] MultiSet
  • 原文地址:https://www.cnblogs.com/leleyao/p/10502416.html
Copyright © 2011-2022 走看看