有状态应用放 K8S 有什么优点吗?

2020-05-09 15:00:40 +08:00
 binbinyouliiii

经常看到有人需要把数据库、Redis 等各种中间件 和 文件处理程序之类 的放在 K8S 里面部署。

我现在学的还浅,对我来说 K8S 主要是一个服务编排工具,如果放进去了一个有状态应用,就失去了 K8S 很多编排的特性,运维成本也会上升。

感觉搞个单独的服务器用 Docker 装不更加香吗?

3807 次点击
所在节点    Kubernetes
9 条回复
rrfeng
2020-05-09 15:24:11 +08:00
statefulset 了解一下,可以组合多种角色一键部署、滚动升级啥的。
binbinyouliiii
2020-05-09 15:28:42 +08:00
@rrfeng #1 statefulset 我知道,可是这种有状态的不就只能落死节点了
asilin
2020-05-09 15:50:06 +08:00
如果没有分布式存储,就相当于落死节点了。
但如果有 Ceph 存储集群等用来做 PVC 存储,则就可以在任意节点漂移了,相当于 staleless 。
tolerance
2020-05-09 15:55:23 +08:00
服务器很多的时候,多少有点作用
binbinyouliiii
2020-05-09 15:58:40 +08:00
@asilin #3 一般这种服务不都是吃 IO,分布式存储再怎么好也是走网络,延迟性能跟不上吧

@tolerance #4 我想问的就是有什么优点
lhx2008
2020-05-09 16:02:56 +08:00
最大的优点就是弹性部署,快速重建,快速伸缩,然后一般都是 CRD 来控制了,statefulset 那种意思不大。
binbinyouliiii
2020-05-09 16:06:17 +08:00
@lhx2008 #6 数据肯定需要持久化的,弹性和伸缩不会搞丢数据吗?
lhx2008
2020-05-09 16:09:08 +08:00
@binbinyouliiii 持久化是 CEPH 这种提供,弹性伸缩就是加节点,比如原来一主一从变成一主两从,或者六节点三切片变成十二节点六个切片。新节点加入就会联系旧节点同步数据的。
namelosw
2020-05-11 21:43:31 +08:00
你自己管理 Stateful 集群更难,伸缩都要自己搞,ip,网络什么的很麻烦。比如 Cassandra 之类的。

数据库这种 cluster 一般还好,一般也不经常部署,扔 Kubernetes 外面也行,但是经常加节点的时候还是 Statefulset 好用,Kubernetes shutdown 的时候也会按顺序 graceful shutdown,自己弄不小心就会丢数据。

最需要 Statefulset 的是 Akka 之类的这种,你的应用是 stateful 的,经常部署经常伸缩,扔 Kubernetes 外面管理起来很头疼。Statefulset 能自己起名字自己管理,手动弄全要自己配。

比如说你考虑重写一个魔兽世界这种东西,一个巨型地图十万人,状态不仅要在内存,还得跨机器,每台机器存一片地图和玩家。基本这种需求写出来的代码就要用 Statefulset 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669999

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX