上周有个搞运维的老兄微信上问我:“云原生到底是个什么鬼?跟云计算不是一回事吗?” 我说这问题好,三言两语还真讲不清——但搞懂了,你就能明白为啥现在面试动不动就问你会不会 K8s。

其实啊,最简单的比方:云计算是买了辆车,云原生是学会在高速上飙车,还得配上自动驾驶。你买了服务器(哪怕是虚拟机),那只是有了个硬件基础;云原生是让你把应用拆成几十个微服务,扔进容器里,然后用 K8s 这种编排工具调度它们,随用随扩,坏了自己重启。哎,我第一次接触的时候,觉得这简直像魔法——以前服务器挂了得半夜爬起来重启,现在?它自愈了。可气的是,实施起来坑一点没少。
云计算不就是虚拟化吗?哪来那么多新词
你要是觉得云计算就是“别人帮我管机房”,那也不算错。但云厂商现在卖的可不只是虚拟机。AWS 两百多种服务,一半跟服务器没啥直接关系。比如 Lambda,你根本看不到服务器,上传代码它就能跑——这就是 Serverless,但背后其实还是服务器,只不过你不用管了。说实话,我一开始挺烦这些概念的,感觉就是造词大会。后来有一次我们一个活动高峰,自动扩容 200 个实例,流量跌下来又缩回去,省了 60% 的成本,我才服了。

云原生这词,核心是 CNCF(云原生计算基金会)的定义,但普通人不需要背那个。你只要记住三点:容器化、动态编排、微服务。早期我们把一个应用打包成一个 war 包扔 Tomcat 里,那叫巨石应用。现在拆成订单服务、用户服务、支付服务,各跑各的容器,互相用 API 调用。改一行代码不用整个应用重部署,爽吧?但问题也来了:调用链变长,查个 bug 恨不得把六七个团队的日志翻个遍。我上个月就因为一个网络策略漏配,调了半天,最后发现是 Istio 的锅——气得我连喝了三杯咖啡。
云原生跟 DevOps 又是啥亲戚关系?
有些人老把这俩混为一谈。DevOps 是文化,是方法论,让你开发运维不分家;云原生是技术手段。没有云原生,DevOps 也能搞——比如你用脚本部署,但累死你。有了 K8s + Helm,再加条 CI/CD 流水线,你推代码上去,几分钟后生产就更新了。但说实话,搞这套工具链,学习曲线陡得让人想转行。我一朋友,花了三个月才把 Jenkins 配得勉强能用,结果公司转头换 GitLab CI 了。他当时在群里发了一串省略号……
不过话说回来,云原生最大的价值是让“不可变基础设施”变成现实。以前服务器跑久了,里面装一堆没用的依赖,谁都不敢动,成了“雪花服务器”。现在用容器镜像,跑不起来就直接销毁重建,状态全部外挂到数据库或对象存储。这思路一换,运维思路都变了。你不再 ssh 进容器查问题(虽然有时候还是忍不住),而是看监控、看日志,用 kubectl 命令。有次我司新人 rm 了一个正在运行的 pod,吓坏了,结果 K8s 秒级又拉起来一个,他愣了半天感叹“牛逼”。
那要不要上云原生?我的血泪建议
如果你只是跑个小博客,别折腾。一台 2 核 4G 的云服务器跑个 WordPress,一年几百块,你搞 K8s 集群,master 节点都吃不消。真的,我见过有创业公司,才三五个服务,硬上全套服务网格,成本翻了三倍。老板还奇怪为什么云账单炸了。所以量力而行。但如果你业务波动大,或者团队超过 10 人,那云原生收益开始明显。

还有人问我:多云是不是必须的?避免厂商锁定嘛。我只能说……理想丰满。实际搞过多云可观测性的人都知道,那简直噩梦。每个云厂商的日志、监控、网络策略全不一样,你得维护一套“多活”的抽象层,人力成本陡增。当然,某些场景有价值,比如全球化部署、灾备。但大部分公司一个可用区都没玩明白,就想着跨云容灾,我觉得先睡醒再说。
最后说句实在的:云计算是水电,云原生是智能家居。水电通了,你可以只用灯泡;也可以装全套传感、语音控制。但智能家居也会有 bug,半夜灯突然亮了,你还得起来关。技术选型就是这样,没有银弹。别被厂商 PPT 洗脑,也别固守老方法。试用、评估、小规模落地,才是正道。哦对了,如果你现在才开始学,建议直接从 K8s 和 Terraform 入手,别在虚拟机里浪费太多时间了。
总之——哎,又用了禁用词。算了,就直接说吧:搞懂云原生,不是让你跟风,而是让你在云计算这条路上,从“能用”变成“用好”。就像开车,会踩油门谁都会,但懂漂移的才是高手。
我问答网