K8s 真的适合小型公司吗
先说结论:大多数小型公司,不需要 K8s。但”需不需要”和”该不该学”是两回事。
先算一笔账
一个小公司,业务量是多少?日活几千,QPS 峰值几百,两三个核心服务,一台 8C16G 的机器跑得绰绰有余。这时候上 K8s,你要付出什么:
- 人力成本:懂 K8s 的工程师薪资溢价明显,而且一个人还不保险
- 学习成本:Pod、Deployment、Service、Ingress、StorageClass、Helm、CRD……概念清单可以列一页
- 运维成本:控制平面自身的高可用、证书轮换、版本升级、etcd 备份,每一项都是坑
- 沉没成本:一旦深度绑定,回退的代价比上的时候更大
你的业务故障,99% 发生在应用层——代码 bug、数据库慢查询、缓存击穿。K8s 解决的是那一头:机器挂了、流量暴涨、发布频繁。小公司的痛点,往往不在这一头。
什么时候是真的需要
不谈信仰,谈信号。出现以下情况,再考虑不迟:
- 服务数量超过运维人力 —— 20 个微服务靠 shell 脚本发布,已经管不过来了
- 发布频率高到人工成为瓶颈 —— 每天多次发布,回滚要求分钟级
- 流量有明显波峰波谷 —— 白天 10 倍于夜间的量,弹性伸缩能省真金白银
- 团队已经有人懂 —— 学习成本趋近于零,只付运维成本
- 多环境交付是刚需 —— 客户私有化部署,需要一套标准交付物
注意最后一条。如果你的产品是 To B 私有化交付,K8s(或 K3s)作为交付底座,价值会突然变大——这是很多小公司”被迫”上 K8s 的真实原因。
小公司的替代方案
在真正需要之前,这些方案性价比高得多:
- 单机 Docker Compose —— 一台机器,一个
docker-compose.yml,版本控制里躺着全部架构 - 托管容器服务 —— 云厂商的轻量容器服务(如阿里云 SAE、腾讯云 Elastic Service),免控制平面运维
- PaaS —— 交给平台,你只管推代码
架构的第一原则不是先进,是匹配。团队五个人,架构复杂度就该是五个人能驾驭的水平。
但我还是建议你学
这是另一笔账。K8s 已经是事实标准,它的思想——声明式 API、控制器模式、不可变基础设施——正在渗透到所有基础设施领域。学了 K8s 再看数据库运维、消息队列、服务网格,很多概念是通的。
学习路径建议:本地 Kind 起个集群,把自己的一个Side Project 部署上去,走一遍镜像构建、发布、扩缩容、回滚。不必为了学而把公司生产环境当实验田——这是我一直反对的。
结论
K8s 是好东西,但好东西不等于合适的东西。小型公司的技术选型,先问三个问题:
- 现在的痛点是什么?
- 这个方案解决它吗?
- 我们养得起它吗?
三个问题都答不上来,就先把手头的事做好。等技术债务真的到来了,你自然会知道——那时候再上,一点都不晚。