k8s中deployment与statefulset的异同
在聊Operator之前,先聊聊无状态vs有状态。大家可能已知道,所谓无状态:“每一次请求都不依赖历史数据,也无数据持久化需求,扩容简单,即扩即用”。 说人话就是“只是个传声筒,左耳进右耳出,不往脑子里去。 就算复制N个传声筒,其工作内容也是完全一致的”。所谓有状态:“依赖历史数据,且具有数据持久化需求,扩容后续工作复杂”。 数据库为有状态的典型,若复制出N个数据库,就涉及master/slave
·
在聊Operator之前,先聊聊无状态vs有状态。
大家可能已知道,
- 所谓无状态:“每一次请求都不依赖历史数据,也无数据持久化需求,扩容简单,即扩即用”。 说人话就是“只是个传声筒,左耳进右耳出,不往脑子里去。 就算复制N个传声筒,其工作内容也是完全一致的”。
- 所谓有状态:“依赖历史数据,且具有数据持久化需求,扩容后续工作复杂”。 数据库为有状态的典型,若复制出N个数据库,就涉及master/slave角色分担,底层数据同步的工作。
那么在k8s中,在2种工作负载的调度有何异同?
【相同】
- 均以container以落地形式
- 均支持增加replica(副本)横向扩展
- 均支持挂载存储
【不同】
- 无状态:
- 副本无序随机命名,销毁后重新生成命名
- 并行扩容,并行缩容
- 有状态:
- 副本以0,1,2有序命名,销毁后名称不变,可通过访问副本名保持访问。
- 串行有序扩容,顺序为0,1,2。 串行有序缩容,顺序反之。
更多推荐
已为社区贡献4条内容
所有评论(0)