
自建K8s真的比物理机省钱吗?托管K8s那笔“集群管理费”到底值不值?
今天咱们就坐下来,把账本摊开,一笔一笔算清楚。
01 上容器能省钱?这是最大的误解
先说句扎心的话:容器本身不省钱,省钱的从来都是合理的资源规划。
很多人以为容器“轻量”,所以比虚拟机省资源。这话只对了一半。容器确实比虚拟机少了一层Guest OS,但Kubernetes为了调度这些容器,自己要吃掉不少资源:
一个高可用的K8s集群,至少需要3台master节点(etcd、api-server、scheduler、controller-manager)
还要加几台worker节点跑你的业务
监控、日志、网络插件、Ingress Controller,哪个不得占资源?
小规模下,这些控制平面的开销占比极高。你跑10个Pod,可能先得养3台空转的master。
所以上容器能不能省钱,关键看规模。规模不到,不仅不省,反而更贵。
02 第一笔账:资源成本
先看服务器本身的钱。
自建K8s的成本模型:
你需要自己买服务器(或云主机)搭集群。假设跑一个中等规模的应用,50个Pod,每个Pod平均2核4GB:
worker节点:按1台跑10个Pod算,需要5台8核32GB的机器
master节点:高可用要3台4核8GB的机器(etcd很吃内存)
总成本:8台机器 × 月租(按云厂商按需实例算,约2000元/台)= 1.6万元/月
这是纯服务器成本。如果买预留实例,能便宜30%-50%,但需要预付。
托管K8s的成本模型:
云厂商的托管K8s(如EKS、AKS、ACK)会收一笔集群管理费:
AWS EKS:每个集群0.1美元/小时 × 3 master(实际是收控制平面费,不是按节点收),约合人民币50元/天,1500元/月
加上worker节点的钱:和自建一样,5台8核32GB = 1万元/月
总成本:1.15万元/月
看到没?同样规格,托管K8s反而便宜了4500元/月。因为云厂商帮你养了那3台master,你不用自己出钱了。
反常识结论:小规模下,托管比自建便宜。
03 第二笔账:人力成本
但资源账只是明面上的。真正的大头,往往是你看不见的人力。
自建K8s的人力账:
搭集群:一个人折腾一周,能把集群跑起来就不错了
修etcd:etcd一挂,整个集群瘫痪。多少人半夜爬起来救过etcd?
版本升级:K8s一年发三个大版本,升不升?升了可能不兼容,不升又有安全漏洞
故障处理:节点NotReady、CNI网络不通、DNS解析失败——每样都得有人会修
按一个运维工程师月薪2万算,自建K8s至少占用0.5个人的精力,折合1万元/月。这还算少的,很多小公司其实是全职在填坑。
托管K8s的人力账:
控制平面云厂商管,你只需要关心worker节点和应用
升级?点一下按钮的事(虽然也可能有坑,但少很多)
etcd备份恢复?云厂商的事
人力成本可以降到0.1个人,折合2000元/月。
把人力算进去再看:
自建K8s:1.6万(资源)+ 1万(人力)= 2.6万元/月
托管K8s:1.15万(资源)+ 0.2万(人力)= 1.35万元/月
差距拉大到1.25万元/月。托管几乎是自建的一半。
04 盈亏平衡点在哪?
当然,规模上去之后,账会变。
我找几个做过迁移的朋友要了数据,大概画了条曲线:
< 10节点:托管明显便宜(省一个人力就够了)
10-30节点:两者接近(自建规模效应开始体现)
30-50节点:自建开始反超(人力被摊薄,资源成本优势显现)
> 50节点:自建便宜20%-30%(但需要至少2人专门维护)
为什么?因为自建的控制平面成本是固定的。你那3台master,管10个节点也是3台,管100个节点也是3台。规模越大,摊到每个节点的成本越低。
而托管的集群管理费是按集群收的,规模大了,这笔钱一直交着,就显得贵了。
05 第三笔账:退出成本
这是最容易被忽略的账。
假设你选了某云的托管K8s,跑了三年,深度集成了他们的服务:
用ALB/NLB做Ingress
用云盘做持久化存储
用他们家的日志服务、监控服务
三年后你想迁到别的云,或者迁回自建,会发现:
Ingress配置要重写
存储卷要迁移数据
监控历史全丢
团队得重新学习另一套生态
这笔退出成本,轻则几十万人力,重则业务中断。财务上叫“转换成本”,技术圈叫“厂商锁定”。
自建K8s虽然累,但核心能力在你手里。今天跑在腾讯云,明天搬到阿里云,底层虽然变,但K8s API是一样的。你的知识和经验可以带着走。
06 所以到底该怎么选?
不是一概而论,而是看你的情况:
选托管K8s,如果:
团队少于5人,没人专门搞基础设施
规模不大(<30节点)
希望快速上线,不想折腾集群
愿意接受一定的厂商锁定
选自建K8s,如果:
有专职的运维/基础设施团队
规模较大(>30节点),成本敏感
对数据主权、网络有特殊要求
想积累核心的容器化能力,不愿被绑定
还有一个中间路线: 用云厂商的托管K8s,但尽量只用标准K8s能力,少用生态绑定强的服务。这样既享受了托管的省心,又保留了未来迁走的可能性。
07 算到最后,发现不是钱的事
跟几个CTO聊完,发现最后决定往往不是钱。
有个朋友说得挺实在:
“我选托管,不是因为它便宜,是因为我不想半夜三点被etcd的告警吵醒。我的命比那点钱值钱。”
另一个说:
“我选自建,是因为我们业务对数据敏感,必须跑在自己能完全掌控的环境里。贵点就贵点,睡得着觉。”
所以这笔账,算到最后,算的是你愿意用多少钱,换多少安心,换多少控制权。
最后给你一个简单的自测清单
准备上容器之前,问自己三个问题:
我们有多大的规模?(<30节点,托管划算;>30节点,自建划算)
我们有几个人?(少于3人,托管保命;多于5人,可以自建试试)
我们能接受被绑在某一朵云上吗?(不能,就选自建或用标准K8s能力)
把这三个问题答案写下来,你大概就知道怎么选了。