分享交流
合作共赢!

Kubernetes/K8S基础使用方法总结【二十八】——Deployment和StatusfulSet的区别和选择

一、简介

Kubernetes目前常用的三种管理pod的控制器主要是DaemonSet、Deployment、StatefulSets,DaemonSet和Deployment对一般用户来说比较容易理解和使用。

而对于StatefulSet的了解和使用相对来说可能会模糊一点,下面主要围绕StatefulSet和Deployment对比和使用选择做一简单的介绍。

二、对比

Deployment

众所周知,在Kubernetes的定义中,Deployment属于无状态应用,其主要特点是管理的pod的名字是由ReplicatSet随机生成的,所挂载的Volume是多个Pod共享的。

StatefulSets

通过此文档 Kubernetes/K8S基础使用方法总结【九】——Pod控制器StatefulSet 我们可以了解到StatefulSet的主要特点,而这些特点正是Deployment所不具备的,这也就是他们之间主要的差异。

Kubernetes官方介绍

举例(mysql)说明

通过以下示例,我们就更容易看出他们的差异,该使用哪个控制器管理器也更容易做出选择。

正常情况下,我们可以部署replicaset为1的mysql实例提供服务,但是为了预防事故发生,我们希望一个高可用的Mysql在后端提供数据读写服务。假如我们需要1个master节点和2个slave节点,那么我们就需要部署mysql的replicaSet为3,如此,这个高可用的mysql从启动流程来看就必须满足以下几点要求。

  1. 先配置master节点然后slave节点
  2. 从master节点复制数据到slave-1
  3. 在master节点中配置并启用slave-1
  4. 等待slave-1节点可用
  5. 从master节点复制数据到slave-2
  6. 在master节点中配置并启用slave-2
  7. 在slave节点上配置master信息

三、选择

通过以上对比,我们很容易看出选择Deployment还是StatefulSet主要取决于应用程序本身。例如:

  • 如果应用程序需要一个高可用的或分布式的存储服务,选择StatefulSet来管理pod,但需要自己充分管理好每个pod所挂载的指定的存储卷,减少事故发生的情况。
  • 如果应用程序对存储要求没有太高,选择Deployment是最好的选择,因为存储可以是多Pod共享的,不需要对多个存储卷做复杂的维护和管理,只需要保证存储卷的安全稳定即可。
赞(0) 打赏
未经允许不得转载:琼杰笔记 » Kubernetes/K8S基础使用方法总结【二十八】——Deployment和StatusfulSet的区别和选择

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏