Kubernets之部署方式

Kubernets的有状态部署

StatefulSet是Kubernets中的有状态部署,其特点是:

  • 数据存储持久化,通过PVC实现
  • 网络地址稳定:重启Pod其PodName和主机名不会改变,通过Headless Service实现
  • 有序部署/删除:前一个Pod运行成功,后续的Pod才能启动,而在删除时,也是有序的进行操作(比如Nginx - Apache - Mysql,启动会先启动Mysql,等待Mysql启动后才会启动Apache,同理删除时也会先删除Nginx,然后再删除Apache),通过Init Containers实现
  • 有序伸缩:同上

Kubernets中的无状态部署

  • ReplicationController:确保应用副本保持在指定的数量,新版本下一般不建议使用
  • ReplicaSet:和RC类似,但支持集合操作,比如对大量容器进行操作
  • Deployment:自动管理了RS,目前一般都建议使用这种方式,支持滚动更新(先创建新版本,再删除旧版本),注意,Deployment并不关心Pod的创建,而是通过操作RS的方式去实现对Pod的操作

其中,Deployment的滚动更新流程为:

  1. 首先Deployment会创建一个新的RS(以下旧RS称RS1,新RS称RS2)
  2. 在RS2中创建新版本的Pod
  3. 删除RS1中的旧版本Pod(注意,旧的RS1并不会被删除,只是暂时停用,以保证可以回滚数据)
上一篇:Kubernetes-Pod介绍(四)-Deployment


下一篇:client-go实战之三:Clientset