是否有必要用 K8S

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

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

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

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

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

19719 次点击
所在节点    Kubernetes
109 条回复
securityCoding
2021-06-03 10:47:22 +08:00
@jack778 有专门的私有镜像仓库,配合 ci 做到推送更新很简单
AlexEzio
2021-06-03 10:47:49 +08:00
@beryl 恩,我这里表述有点问题。实际我说的就是私有化中,用 k8s 交付服务这种场景。
据我个人经验,私有化如果有服务需要依托于 k8s 交付,客户最起码项目预算应该是百万以上,而且基本都是金融,银行,互联网公司这种不差钱的居多,有自已运维团队。
不过话说回来,如果是这种客户,那落地用什么架构,用什么技术,就不是你们说了算,而是客户说了算。
小项目,用 docker+ansible 轻装上阵, 快速部署加回款验收才是王道,整那些花里胡哨的没用, 对老板来说,项目成不成功,只看回款和金额, 不是看你用了多牛 b 的技术。
当然,想借项目来锻炼自己技术也是可以的, 我也试过 k8s 交付服务, 但是相信我,人总是趋利避害的,事少一点不好嘛~
rrfeng
2021-06-03 10:48:04 +08:00
@beryl 存储就放弃吧,小规模上 k8s 没意义反而带来更多麻烦。至于多台机器部署有很多现成的方案,ansible/saltstack 都很容易。甚至上了 docker 之后可以直接中控机上远程 docker api 去部署。

你这个场景 k8s 只有一种方案适合:你们所有客户共享一个 k8s 集群,统一在你们的中心管控,这样得到的效率提升确实高,只要给机器部署下 kubelet,其他都是一套了。
th00000
2021-06-03 10:48:45 +08:00
K8S 太重度了, 上 HashiCorp 的 Nomad 也是一样的, 复杂度一下就下来了, 需求还能实现
GitHub 也是用的这个组件
AlexEzio
2021-06-03 10:50:44 +08:00
@beryl 私有化场景,k8s 和 docker 一把梭这种比起来,标准化一致(k8s 同样也是利用容器技术来实现运行时的标准化),效率天差地别。 部署一套 k8s,和部署 docker daemon,那就是一天和几分钟的区别。
beryl
2021-06-03 10:59:51 +08:00
@AlexEzio 不是为了锻炼技术,也不一定非要用 K8S, 出发点还是为了项目和产品更容易交付
beryl
2021-06-03 11:03:56 +08:00
@AlexEzio 另外自己的感觉也是 K8S 太重,我理解的重是:
K8S 环境搭建起来,学习成本较大

但是如果有专门的人做过这套,搭建起来之后,用这个去编排、交付产品是不是方便?

另外请教下,如果现在用 docker-compose, 后面有人力和动机后,再迁移到 K8S 成本大么
killerv
2021-06-03 11:06:07 +08:00
我感觉自己部署 k8s 完全没必要,直接使用云厂商成熟的 k8s 解决方案,工程师不应该关注底层系统维护,应该更关注自己的业务。
k8s 带来的收益是很明显的:容器技术带来的降低资源占用、简化项目部署、高可用、环境一致性等等。
不太建议中间件、数据库用容器跑,监控、容灾需要很大成本,这类最好还是使用云产品。
Illusionary
2021-06-03 11:20:08 +08:00
外包搞什么 K8S,Tomcat 就完事了。
tandaly
2021-06-03 11:20:38 +08:00
纯 k8s 搞下来挺复杂,目前用 rancher 管理 k8s 集群
AlexEzio
2021-06-03 11:57:02 +08:00
@beryl k8s 学习成本大,维护成本也高。如果有专人做 k8s,搭建,维护啥的,那肯定会方便一些,helm chat 加上写好的 yaml 梭就行了。 但是这个专人成本也会高,风险也很大,如果这个人走了,后续集群更新,漏洞修复,证书更新啥的,都是麻烦事。
docker 编排,和 k8s 编排,迁移成本就是在各类资源 yaml 或 helm chat 编写上, 对开发来讲是无感的。

说下我目前交付的场景:
1. POC 部署, 直接 docker-compose 一把梭,一台机器搞定,就是演示核心功能
2. 测试,UAT,生产部署: 用 ansible + 源码编译的形式, 中间件能复用客户的,就复用客户的,这样只需要专注于自己的业务这块。这种适用于有自己技术团队的客户,ansible 多机部署非常方便,设计好 playbook, 设计好 role 的复用就可以了。我目前都是这种方式为主,规模从几台,到几十台不等都 okay.
3. k8s 部署, 这种都是客户自己有上云需求,会要求你去对接他们 cicd, k8s, 成本就是前期的上云适配, 后续维护除了版本更新,其他都是客户自己负责。 这种方式比较小,客户很少有完善和成熟的云原生维护体系。
4. 小众的 paas 平台适配, 这种就更少了。基本前两种为主。

私有化这块,没有什么一成不变的交付方式,尤其是大客户这一块,会经常有定制,对接需要。
还是根据你们自己的情况,去制定一个效率和维护都兼顾的一种交付方式,先小步跑起来。
wandehul
2021-06-03 12:00:08 +08:00
我是运维,我现在已经不想去没有 k8s 的公司了,累!
hijoker
2021-06-03 12:04:38 +08:00
你们是做好软件卖给客户? k8s 环境也是你们软件一起提供?还是客户准备 k8s?
xingzhi
2021-06-03 12:05:47 +08:00
你老板反问的问题是对的,尤其是第二点,你自己都没有想清楚有什么显著收益,那为什么就要“准备上 k8s” 呢
ferock
2021-06-03 12:12:53 +08:00
大规模才有需要,小范围没必要
pckillers
2021-06-03 14:58:46 +08:00
@napsterwu 我寻思能叫运维的人难道不会用 ansible 之类的批量部署工具来多机批量执行 docker run 么。。。
tanghanyu
2021-06-03 17:22:45 +08:00
你们私有化交付的话是不太建议的,k8s 的优势体现得没那么明显,运维成本在你们这种场景中反而会被无限放大。前公司是用自研的 k8s 平台打包产品一起卖给客户的,早期产品不稳定的时候是挺麻烦的。
另外 k8s 不是搭建起来就完事了,相应的存储、网络、监控也要搞好,还有很多开发初期根本不知道怎么用,使用成本也是有一些的,毕竟还要去培训推广。
这种场景直接 ansible + docker 我觉得更好,如果是公司内部往 k8s 过渡我倒是觉得比较合适。
liuzhedash
2021-06-03 17:25:02 +08:00
如无必要,勿增实体
libook
2021-06-03 17:26:45 +08:00
都用容器了,说明对这点点的性能损耗应该是能够接受的,K8s 只是做调度和中间件,实际应用还是跑在 Docker 、Podman 之类的容器里的。

不同的项目情况决定是否适合用 K8s,我说说我们的情况吧,K8s 主要解决我们分布式角度的问题,应用很多,每个应用都需要部署多个实例作为集群,然后我们有多台服务器,以往是限定特定几台服务器只能部署特定的应用,用 K8s 可以把这些服务器看做一个计算池,不需要关心集群是如何分布的,也可以按照负载情况动态调整分布,这样能进一步榨干服务器的性能,不会有的机器超负载、有的机器空转。

另外就是微服务化之后,需要使用中间件来保障微服务之间通信的可靠性,比如需要熔断机制来避免雪崩,类似的这种服务与服务之间协作的问题,K8s 提供了大量插件,可以直接用。

最近在看 K8s 的 Secret,可以用 K8s 集中管理应用的配置,比如数据库连接地址、密码秘钥啥的,这是非侵入性的,而且可以统一管控,避免由开发人员泄露。

总之这些都是工具,最好是了解一下 K8s 能干啥,然后看看目前项目流程上是否有痛点可以用 K8s 的这些特性来解决,再评估成本如何,最终就能决定是不是要用了。

我家里自己的服务器也用容器,但只有 2 台机器,所以用的 Portainer,能提高不少便捷性。
bomb77
2021-06-03 17:36:20 +08:00
toB 私有化部署,基本上都在人家内网环境平时你也上不去,上 k8s 基本上是给自己找麻烦啊,又没有持续继承动态增减容量的需求。。。

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

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

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

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

© 2021 V2EX