是否有必要用 K8S

2021-06-02 20:29:40 +08:00
 beryl

公司是做 ToB 私有化部署,预估每个月有 5-10 个项目,产品加上中间件 大约十几个进程,有专门的交付同学,需要交付部署。现在方案是采用 docker 容器方式,准备上 K8S 。

但是老板今天质疑为什么要上 K8S,主要是两点:

  1. 多了 K8S, 部署的时候服务资源就要多占用,毕竟 K8S 本身也需要资源
  2. K8S 能够带来哪些显著收益

这两个问题也是自己在纠结的,同时也在想 K8S 能够带来什么,交付更快?

19717 次点击
所在节点    Kubernetes
109 条回复
jorneyr
2021-06-03 09:03:33 +08:00
只说优点: 对于无状态的 Web 服务,k8s 可以保证服务的高可用,例如进程挂了 k8s 自动给拉起来,否则需要管理员发现进程挂了去手动启动程序。只需要用 yaml 文件在 master 上部署,不需要自己去手动一个一个的到目标机器上部署,部署简单。
fannas
2021-06-03 09:09:50 +08:00
面向老板和薪水实施哈
star7th
2021-06-03 09:16:23 +08:00
私有化部署不是很有必要一定上 k8s 太重了。如果是你们提供公有服务的话,使用 k8s 就十分合适。
defunct9
2021-06-03 09:24:33 +08:00
没有必要
zone10
2021-06-03 09:49:57 +08:00
k8s 节省的是程序员成本, 你在心疼机器成本那就没必要
sangs
2021-06-03 09:56:21 +08:00
巧了, 我也是做交付的 (可以加个好友). 目前在用 k8s. 呃, 一直都是 k8s, 就没用过别的.

k8s 的优势:
[1] 使用 helm chart 一键拉起整套环境 (我们有 30 多个应用)
[2] 可以使用 helm chart 应用商店, 可以
[3] 公私有云下, 都可以直接购买 k8s
[4] k8s 带界面, 可以使用 k8s-dashboard, rancher 或者云服务控制台的界面, 对于研发来说, 更新代码非常迅速
[5] CI/CD 方便, 写完代码, 直接提交到 gitlab, 驱动 jenkins 打包, 直接推送到 k8s 集群

k8s 的劣势:
[1] 维护成本高, 门槛高. 想象一下, master 节点报错了, 你们运维不知道怎么处理, 老板慌不慌. 我们是配有 k8s 专家的, 所以这个问题不是很大
[2] 本身需要资源 至少需要 2 台 4c8g 的. 这个每年得多花 1 万块钱吧. 我们 toB 的都是大客户, 对价格不敏感, 这点钱不算啥

我认为, 10 个应用以内用 docker-compose 吧, 反正简单, 随便搞都行. 10+ (像我们 30+) 应用的, 只能用 k8s 了
dunhanson
2021-06-03 10:17:22 +08:00
懂 k8s 的人应该还好吧,我们公司我自己搭建的,生产环境部分用了 k8s
k8s 的优势就是人家有一整套的流程和规范,扩容回滚什么超级方便
dunhanson
2021-06-03 10:18:04 +08:00
之前我用过 docker compse 真的是难用,自己还要写很多辅助脚本来控制
rrfeng
2021-06-03 10:29:19 +08:00
十几个进程还是算了吧,全部用 docker,(资源隔离和方便部署),稍微整理一下脚本就行了。

如果没有经验的话 k8s 还是很难调教的。
windghoul
2021-06-03 10:29:37 +08:00
docker-compose 那一套文件的维护就很费事,而且多节点之间的网络这些的都是需要考虑的成本
julyclyde
2021-06-03 10:30:29 +08:00
toB 项目,负载量一般没什么波动,弹性伸缩的功能基本上用不到的
不过部署灵活的好处始终存在

我的建议是:只学习不使用
AlexEzio
2021-06-03 10:32:37 +08:00
ToB 交付老油条(4 年经验)来回答:
就你目前所说的信息,完全没有必要上 k8s.
k8s 的优势在私有化部署中并不明显,因为运维成本高,而且不可控,不是所有客户都玩得转 k8s, 而且你评估下一个客户一个 k8s 的维护量?
私有化部署最重要的两点:
1. 部署效率与标准化(决定了交付速度,现金流的稳定)
2. 可维护性(决定了后续的维护成本)
在这两点上,k8s 私有化都只有缺点。
k8s 的优势在于应用的 zero downtime,扩容,发布,cicd, 这些私有化都不需要,私有化更新的频率,可能是一个月,基于半年,一年一次。


你这种场景,我之前也设计过部署方案,就是一套 docker-compose 搞定(我司当时是 12 个左右的 image)。定义好 docker entrypoint, 配置变量放在 env 文件里,初始化时脚本替换一下,加下 docker 自带的容器发现,很容易几分钟之内就部署好一套标准的环境出来。

配合上 ansible, 自己二开的 compose 配置平台, 能轻松实现部署,监控,预警,自动发布的效果。

另外,k8s 私有化是什么场景? 都是针对金融,银行机构,做容器平台私有化,像 daocloud, 青云这种,都有相关的业务,一个项目就是上亿,这种都需要客户自己有专业的运维,开发团队的。
beryl
2021-06-03 10:34:35 +08:00
@rrfeng 可能描述有误,十几个进程是只有十几个模块,包括 Mysql ES Redis 这些。
但是最终交付是集群交付,做服务划分(编排),没台机器都要部署,也是非常费力的。
basefas
2021-06-03 10:35:43 +08:00
赞同 #52 的观点,运维 k8s 的成本远高于使用 k8s 带来的便利
beryl
2021-06-03 10:37:11 +08:00
@sangs 非常感谢,很有帮助, 可以一起聊聊
不过我不是交付,现在还没有找到合适的交付 (-_-
jack778
2021-06-03 10:37:59 +08:00
我想问下这种私有化部署后怎么做更新呢? 是推送更新吗?
basefas
2021-06-03 10:39:44 +08:00
@beryl Mysql 这类有状态项目部署到 k8s 中运维难度更大,没有专家的话完全不建议在生产环境的 k8s 上部署有状态项目,建议 ansible 配合 docker 使用
beryl
2021-06-03 10:41:17 +08:00
@AlexEzio
> 部署效率与标准化(决定了交付速度,现金流的稳定)
这点 K8S 不是优势么

场景和你说的类似,但不是容器平台私有化,而是我们服务依托于 K8S 进行交付,项目金额也没有这么大
securityCoding
2021-06-03 10:45:42 +08:00
k8s 的价值在于标准化,你围绕这点延伸出来说服老板吧
snail00
2021-06-03 10:46:39 +08:00
数据库这类持久化部署不建议在 docker 里跑, 数据恢复是个灾难.
本身服务就是 docker 部署, 上 k8s 业务上改动不大, 主要是 k8s 的集群如何部署, 裸机部署 k8s 集群, 必须得个能 hold 住的运维, 公有云部署的集群小问题比较多, 可以综合成本看看

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

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

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

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

© 2021 V2EX