zoukankan      html  css  js  c++  java
  • 8.StatefulSet控制器

    Operator:由CoreOS封装组织提供

    Cattle,pet

    StatefulSet详解:https://blog.51cto.com/newfly/2140004

    应用状态

    应用状态:应用组件完成工作(即执行任务)时所需的数据。应用的行为预期执行行为所需的数据是完全分离的,就可以认为是无状态的。

    有状态应用:多个功能不同的实例有依赖和启动先后关系。

    无状态应用:实例间互相不依赖,请求包含了响应端需求的全部信息。

    容器应用可能的状态:持久化状态 配置状态 会话状态 连接状态 集群状态

     一、StatefulSet控制器

    StatefulSet控制器:有状态应用副本集(PetSet ==>StatefulSet )

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

    2、 稳定且持久的存储

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

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

    5、 有序的滚动更新

    三个组件:

           Headless Service、StatefulSet Controller、volumeClaimTemplate

    每个pod应该有自己专用的存储卷,因为分布式集群系统,每个节点的数据都是不一样的,如果是同一个存储卷,数据可能会被覆盖。

    基于pod模板来创建Pod是不适用于StatefulSet的,因为pod模板中都是使用的同一个存储卷。

    [kubelet@master volumes]$ kubectl explain statefulset.spec
    [kubelet@master yaml]$ kubectl explain statefulset.spec. volumeClaimTemplates 
    # volumeClaimTemplates会自动去创建pvc,并请求满足条件的pv绑定(pv需手动创建)

    二、示例

    StatefulSet 示例:

    创建StatefulSet控制器时,顺序创建,会自动去创建PVC;删除StatefulSet控制器时,倒序删除,不会自动删除PVC。

    Pod的每一个名称都是固定的,并且可以被解析的。

    (myapp-0.myapp.default.svc.cluster.local  -- >

    POD_NAME.HEADLESS_SVC_NAME.NAMESPACE. svc.cluster.local)

    扩容和缩容:

    [kubelet@master ~]$ kubectl scale sts myapp --replicas=4 
    [kubelet@master ~]$ kubectl patch sts myapp -p '{"spec":{"replicas":3}}'

    更新:(金丝雀canary发布)

    [kubelet@master ~]$ kubectl explain sts.spec.updateStrategy
    [kubelet@master ~]$ kubectl explain sts.spec.updateStrategy.rollingUpdate
           Partition  # 分区更新,指的是一个对应的更新的边界,如果为5,则编号>=5的pod会被更新
    # 编号大于等于3的pod在更新时会被更新。
    [kubelet@master ~]$ kubectl patch sts myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":3}}}}'
    [kubelet@master ~]$ kubectl set image sts/myapp myapp=ikubernetes/myapp:v2

    [kubelet@master ~]$ kubectl get pod myapp-3 -o yaml   # v2
    [kubelet@master ~]$ kubectl get pod myapp-2 -o yaml   # v1
    # 此时只有myapp-3这个pod为v2版本,其他依旧是v1版本。
    [kubelet@master ~]$ kubectl patch sts myapp -p '{"spec":{"updateStrategy":{"rollingUpdate":{"partition":0}}}}'
    此时,剩余pod会依次更新。

    K8S上管理有状态的应用很复杂!!!!

  • 相关阅读:
    poj 2411 Mondriaan's Dream 骨牌铺放 状压dp
    zoj 3471 Most Powerful (有向图)最大生成树 状压dp
    poj 2280 Islands and Bridges 哈密尔顿路 状压dp
    hdu 3001 Travelling 经过所有点(最多两次)的最短路径 三进制状压dp
    poj 3311 Hie with the Pie 经过所有点(可重)的最短路径 floyd + 状压dp
    poj 1185 炮兵阵地 状压dp
    poj 3254 Corn Fields 状压dp入门
    loj 6278 6279 数列分块入门 2 3
    VIM记事——大小写转换
    DKIM支持样本上传做检测的网站
  • 原文地址:https://www.cnblogs.com/cmxu/p/12240136.html
Copyright © 2011-2022 走看看