经常看到有人需要把数据库、Redis 等各种中间件 和 文件处理程序之类 的放在 K8S 里面部署。
我现在学的还浅,对我来说 K8S 主要是一个服务编排工具,如果放进去了一个有状态应用,就失去了 K8S 很多编排的特性,运维成本也会上升。
感觉搞个单独的服务器用 Docker 装不更加香吗?

经常看到有人需要把数据库、Redis 等各种中间件 和 文件处理程序之类 的放在 K8S 里面部署。
我现在学的还浅,对我来说 K8S 主要是一个服务编排工具,如果放进去了一个有状态应用,就失去了 K8S 很多编排的特性,运维成本也会上升。
感觉搞个单独的服务器用 Docker 装不更加香吗?
1 rrfeng May 9, 2020 statefulset 了解一下,可以组合多种角色一键部署、滚动升级啥的。 |
2 binbinyouliiii OP @rrfeng #1 statefulset 我知道,可是这种有状态的不就只能落死节点了 |
![]() | 3 asilin May 9, 2020 如果没有分布式存储,就相当于落死节点了。 但如果有 Ceph 存储集群等用来做 PVC 存储,则就可以在任意节点漂移了,相当于 staleless 。 |
4 tolerance May 9, 2020 服务器很多的时候,多少有点作用 |
5 binbinyouliiii OP |
6 lhx2008 May 9, 2020 via Android 最大的优点就是弹性部署,快速重建,快速伸缩,然后一般都是 CRD 来控制了,statefulset 那种意思不大。 |
7 binbinyouliiii OP @lhx2008 #6 数据肯定需要持久化的,弹性和伸缩不会搞丢数据吗? |
8 lhx2008 May 9, 2020 via Android @binbinyouliiii 持久化是 CEPH 这种提供,弹性伸缩就是加节点,比如原来一主一从变成一主两从,或者六节点三切片变成十二节点六个切片。新节点加入就会联系旧节点同步数据的。 |
9 namelosw May 11, 2020 你自己管理 Stateful 集群更难,伸缩都要自己搞,ip,网络什么的很麻烦。比如 Cassandra 之类的。 数据库这种 cluster 一般还好,一般也不经常部署,扔 Kubernetes 外面也行,但是经常加节点的时候还是 Statefulset 好用,Kubernetes shutdown 的时候也会按顺序 graceful shutdown,自己弄不小心就会丢数据。 最需要 Statefulset 的是 Akka 之类的这种,你的应用是 stateful 的,经常部署经常伸缩,扔 Kubernetes 外面管理起来很头疼。Statefulset 能自己起名字自己管理,手动弄全要自己配。 比如说你考虑重写一个魔兽世界这种东西,一个巨型地图十万人,状态不仅要在内存,还得跨机器,每台机器存一片地图和玩家。基本这种需求写出来的代码就要用 Statefulset 。 |