是否有必要用 K8S
source link: https://www.v2ex.com/t/780960
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
公司是做 ToB 私有化部署,预估每个月有 5-10 个项目,产品加上中间件 大约十几个进程,有专门的交付同学,需要交付部署。现在方案是采用 docker 容器方式,准备上 K8S 。
但是老板今天质疑为什么要上 K8S,主要是两点:
- 多了 K8S, 部署的时候服务资源就要多占用,毕竟 K8S 本身也需要资源
- K8S 能够带来哪些显著收益
这两个问题也是自己在纠结的,同时也在想 K8S 能够带来什么,交付更快?
第 1 条附言 · 6 小时 5 分钟前
也不一定非要说服老板用 K8S
站在自己的角度也是哪个对产品对公司更实际用,就用哪个
plko345 19 小时 41 分钟前 via Android
napsterwu 19 小时 22 分钟前 via iPhone
calmzhu 19 小时 0 分钟前 via Android
k8s 的定义是云操作系统,不是基础硬件设施。操作系统上开发应用总比裸机方便。
1.CD 持续部署,k8s 自带机制可以省很多事情。比如蓝绿部署减少当机时间;测试开发过程中防止单个应用部署失败造成其他人工作中断。
2.多个环境的频繁创建维护,甚至动态部署一套全新的应用。
3. 配置以及密码的集中管理和密码的定期轮换
4. 可视化展示交互需求。比如获取应用状态信息。k8s 本身 api 交互就比 docker compose 方便
beryl 18 小时 52 分钟前
我能想到的一点是,如果不用 K8S 部署,我们需要规划每台机器的需要 部署什么类型服务,然后再分别在每天机器上去启动部署脚本
然后机器之间还需要更改配置去调试,以及每次代码还需要改动中间件的配置
不知道这个算不算我们当前场景,依赖 K8S 的优势
calmzhu 18 小时 27 分钟前 via Android
12101111 18 小时 21 分钟前
Pod 数量一般两位数, 一位数就高射炮打蚊子了,三位数没有 CPU 带的动, 至于是十几个还是几十个,那就看 CPU 和内存配置了
djoiwhud 17 小时 17 分钟前 via Android 5
应届生:什么新,什么高大上,怎么搞。毕竟只看一下博客写高大上的技术心里没底。搞黄了企业可以再找工作 double 一下。
老员工:什么简单稳定用什么,毕竟瞎搞公司黄了要找工作。
mooyo 16 小时 43 分钟前
目前的发版流程方便么?
常规发布是无损的么?
上了 k8s 以后还能比较方便的对不同服务进行扩缩容,也可以考虑下这些是不是你们现在的痛点。
mooyo 16 小时 41 分钟前
dayeye2006199 15 小时 30 分钟前
如果你们交付都在一台机器上,只是想用容器,推荐 docker-compose ;
如果你们需要在私有网络内多机部署,推荐轻量级 k3s
如果你们在公有云上部署,推荐云厂商提供的 managed k8s
k8s 的一些好处:
* 持续交付速度比较快,原生支持 zero downtime 部署
* 原生支持配置中心
* 周边生态比较丰富,如果需要动态服务伸缩,监控,日志等服务,都有比较成熟的周边产品
但推荐至少团队里面得有一个老司机对这块比较熟悉,否则至少得做一下 POC,一下直接上生产环境,在 deadline 的逼迫下会比较挣扎。
kennylam777 12 小时 9 分钟前
雖然 k8s master 節點也是資源,但三台 4GB RAM+的機器面對業務來說不是錢吧。要不就上 EKS 一類的 managed k8s 。
xuanbg 9 小时 58 分钟前
如果是动态范围不是很大的,需要随时自动横向扩展 /收缩的,k8s 就完全没有必要了。增加无谓的复杂度,提高运维的工作量。直接 docker run 也不是不行。反正我的经验是,只要脚本写好,就是一个命令的事情,要什么 k8s 。
jorneyr 7 小时 58 分钟前
defunct9 7 小时 37 分钟前
sangs 7 小时 6 分钟前 2
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 了
windghoul 6 小时 32 分钟前
AlexEzio 6 小时 29 分钟前 3
就你目前所说的信息,完全没有必要上 k8s.
k8s 的优势在私有化部署中并不明显,因为运维成本高,而且不可控,不是所有客户都玩得转 k8s, 而且你评估下一个客户一个 k8s 的维护量?
私有化部署最重要的两点:
1. 部署效率与标准化(决定了交付速度,现金流的稳定)
2. 可维护性(决定了后续的维护成本)
在这两点上,k8s 私有化都只有缺点。
k8s 的优势在于应用的 zero downtime,扩容,发布,cicd, 这些私有化都不需要,私有化更新的频率,可能是一个月,基于半年,一年一次。
你这种场景,我之前也设计过部署方案,就是一套 docker-compose 搞定(我司当时是 12 个左右的 image)。定义好 docker entrypoint, 配置变量放在 env 文件里,初始化时脚本替换一下,加下 docker 自带的容器发现,很容易几分钟之内就部署好一套标准的环境出来。
配合上 ansible, 自己二开的 compose 配置平台, 能轻松实现部署,监控,预警,自动发布的效果。
另外,k8s 私有化是什么场景? 都是针对金融,银行机构,做容器平台私有化,像 daocloud, 青云这种,都有相关的业务,一个项目就是上亿,这种都需要客户自己有专业的运维,开发团队的。
beryl 6 小时 27 分钟前
但是最终交付是集群交付,做服务划分(编排),没台机器都要部署,也是非常费力的。
basefas 6 小时 22 分钟前
beryl 6 小时 21 分钟前
snail00 6 小时 15 分钟前
本身服务就是 docker 部署, 上 k8s 业务上改动不大, 主要是 k8s 的集群如何部署, 裸机部署 k8s 集群, 必须得个能 hold 住的运维, 公有云部署的集群小问题比较多, 可以综合成本看看
AlexEzio 6 小时 14 分钟前
据我个人经验,私有化如果有服务需要依托于 k8s 交付,客户最起码项目预算应该是百万以上,而且基本都是金融,银行,互联网公司这种不差钱的居多,有自已运维团队。
不过话说回来,如果是这种客户,那落地用什么架构,用什么技术,就不是你们说了算,而是客户说了算。
小项目,用 docker+ansible 轻装上阵, 快速部署加回款验收才是王道,整那些花里胡哨的没用, 对老板来说,项目成不成功,只看回款和金额, 不是看你用了多牛 b 的技术。
当然,想借项目来锻炼自己技术也是可以的, 我也试过 k8s 交付服务, 但是相信我,人总是趋利避害的,事少一点不好嘛~
rrfeng 6 小时 14 分钟前
你这个场景 k8s 只有一种方案适合:你们所有客户共享一个 k8s 集群,统一在你们的中心管控,这样得到的效率提升确实高,只要给机器部署下 kubelet,其他都是一套了。
AlexEzio 6 小时 11 分钟前
beryl 5 小时 58 分钟前
K8S 环境搭建起来,学习成本较大
但是如果有专门的人做过这套,搭建起来之后,用这个去编排、交付产品是不是方便?
另外请教下,如果现在用 docker-compose, 后面有人力和动机后,再迁移到 K8S 成本大么
killerv 5 小时 56 分钟前
k8s 带来的收益是很明显的:容器技术带来的降低资源占用、简化项目部署、高可用、环境一致性等等。
不太建议中间件、数据库用容器跑,监控、容灾需要很大成本,这类最好还是使用云产品。
AlexEzio 5 小时 5 分钟前
docker 编排,和 k8s 编排,迁移成本就是在各类资源 yaml 或 helm chat 编写上, 对开发来讲是无感的。
说下我目前交付的场景:
1. POC 部署, 直接 docker-compose 一把梭,一台机器搞定,就是演示核心功能
2. 测试,UAT,生产部署: 用 ansible + 源码编译的形式, 中间件能复用客户的,就复用客户的,这样只需要专注于自己的业务这块。这种适用于有自己技术团队的客户,ansible 多机部署非常方便,设计好 playbook, 设计好 role 的复用就可以了。我目前都是这种方式为主,规模从几台,到几十台不等都 okay.
3. k8s 部署, 这种都是客户自己有上云需求,会要求你去对接他们 cicd, k8s, 成本就是前期的上云适配, 后续维护除了版本更新,其他都是客户自己负责。 这种方式比较小,客户很少有完善和成熟的云原生维护体系。
4. 小众的 paas 平台适配, 这种就更少了。基本前两种为主。
私有化这块,没有什么一成不变的交付方式,尤其是大客户这一块,会经常有定制,对接需要。
还是根据你们自己的情况,去制定一个效率和维护都兼顾的一种交付方式,先小步跑起来。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK