StatefulSet详解

今天去面试,开头上来就是问StatefulSet, 之前也没怎么用,也专门看了阿里云专题讲的StatefulSet.讲的很详细。

但是怎么说呢,我一直觉得上k8s是做无状态应用比较合适,加上没怎么用所以回答的并不好。问sts的生命周期。

记忆力不好,哎;所以今天把sts好好研究研究;一定要做到烂熟于心。

 --------

  Service是通过iptables ,lvs来做负载均衡。

  如果开发人员想自己控制负载均衡策略,这时就需要使用headless来实现。

 

Headless Service

  headless 去掉clusterIP , 实现了去中心化;通过selector , label selector 将后端的pod列表返回给客户端。

 

 

有状态应用

  节点间的相互查找,

-----------------------

 

StatefulSet会创建3种类型的资源: ControllerRevision , PVC , Pod.

  ControllerRevision: 方便的管理不同版本的template模板。

PVC: 没有写owner ,不会被级联删除。

--------------------------

通过注册informer的Event handler , 控制器收到pod或sts的变化,找到对应的statefulSet放到队列,从队列取出来后,会先 update revision ,也就是先查看拿到的 statefulset template 有没有对应的 controller revision, 如果没有 , 就说明template被跟新过。接着创建一个新版本的 controller revision .

controller 把所有的pod拿出来,对应序号理一遍,在理的过程,如果发现有缺少的pod则会去创建,如果有多余的pod则会去删除。

当pod数量和pod序号符合Replica数量后,Controller会继续看是否需要跟新存量的pod.

Manage pods in order : 是按照序号去查看所有pod是否满足序号。

update in order : 是查看pod的版本是否是期望的版本。

 

 

有状态应用要解决哪几个问题?

1, 每个pod要有唯一的标识(名称,名称不变):headless

2,  pod要和存储绑定;

3,pod间相互访问,查找

4,按固定顺序升级pod 

--------------------------

posted @ 2020-08-04 21:41  ucsgroup  阅读(483)  评论(0)    收藏  举报