你辛苦把应用部署到一台服务器上,配好环境、改好配置。结果流量一上来,这台机器扛不住了;你想加机器,却发现”新机器环境和老的对不上”,又得折腾一遍。更惨的是,这台机器硬盘坏了,所有状态全丢。
这不是你的问题,而是传统”宠物式”部署思路的局限:你把服务器当”宠物”精心照料,一台出问题全家遭殃。而 云原生(Cloud Native) 换了一种思路——把服务器当”牲口”,标准化、可替换、随用随弃,让系统能弹性伸缩、自愈、快速迭代。
这一篇我们先建立云原生的”世界观”,下两篇再落地到 Kubernetes 这个核心引擎。
云原生到底”原生”在哪
“云原生”不是某一项技术,而是一套设计理念 + 技术组合,目标是让应用”为云而生”,充分利用云计算的弹性。CNCF(云原生计算基金会)把它概括为几个核心要素,我们用大白话讲:
1. 容器化(Containerization)
就是我们在 docker-basics 里学的:把应用和依赖打包成标准化镜像,到哪都能一致运行。容器是云原生的”基本粒子”——所有上层能力都建立在它之上。
2. 微服务(Microservices)
把一个庞大的”单体应用”拆成一组小而独立的服务,各自负责一块业务(用户、订单、支付),可以独立开发、部署、扩缩容。好处是”改一个小功能不用全量发版”,坏处是系统变复杂、需要服务治理。
注意:微服务不是银弹。小团队硬上微服务,光运维就能把人累死。云原生不强制微服务,但微服务几乎必然需要云原生能力来支撑。
3. 不可变基础设施(Immutable Infrastructure)
传统做法:服务器出问题时,你 SSH 上去”修一修”(装个包、改个配置)。这叫”可变基础设施”——环境被悄悄改乱,谁也说不清现在到底啥状态。
云原生反其道:基础设施一旦创建就不再修改。要更新?直接销毁旧的、用新镜像起一个新的。环境永远”干净可预期”,回滚就是”换回旧镜像”。这和你写代码”不原地改,而是重新部署一版”是一个道理。
4. 声明式 API(Declarative)
这是云原生最反直觉也最强大的点。传统是命令式:你一步步下令”先建机器、再装软件、再启动”。云原生是声明式:你只写”我最终想要什么状态”(比如”我要 3 个订单服务副本,每个用镜像 X”),系统自己想办法达成并持续维持这个状态。
打个比方:命令式像”你亲自开车去目的地”,声明式像”设好导航说’我要去公司’,车自己开”。如果路上抛锚(某个副本挂了),系统会自动”再起一个”把你拉回目标状态——这就是自愈。
云原生的技术全景(CNCF 生态)
云原生不是只有 Kubernetes。CNCF 维护着一个庞大的”毕业/孵化”项目地图,几个你该混个脸熟的:
- 编排:Kubernetes(容器编排的事实标准,下两篇主角)。
- 服务网格:Istio、Linkerd(处理服务间通信、熔断、鉴权)。
- 可观测性:Prometheus(指标)、Grafana、Jaeger(链路),正好接上我们监控系列。
- 容器运行时:containerd、Docker(早期)。
- 声明式交付:Helm(K8s 的包管理,下下篇会讲)。
你会发现,前面学的 Docker、Prometheus,全都是云原生拼图的一部分。学云原生不是学新东西,而是把已学的能力组织成一套体系。
云原生解决了什么真实痛点
- 弹性伸缩:流量高峰自动加副本,低谷自动减,省钱又抗压。
- 高可用自愈:某个实例挂了,系统自动拉起新的,用户无感知。
- 快速发布:配合 CI/CD,新版本分钟级上线、秒级回滚。
- 环境一致:容器 + 不可变基础设施,彻底消灭”我机器上能跑”。
- 资源利用率高:多应用混部在一堆机器上,由编排器统一调度,不再”一台机器只跑一个应用”。
常见认知误区
- “上云 = 云原生”:错。把单体应用原样搬上云服务器,只是”用云的主机”,没用云的能力,不算云原生。
- “云原生就是 Kubernetes”:K8s 是核心但不是全部,没有监控、CI/CD、微服务治理配合,K8s 只是个”高级启动器”。
- “小项目也要云原生”:杀鸡用牛刀。云原生有运维复杂度成本,个人小项目用 Docker + 一台云主机足矣。
- “微服务必须先做”:应先把单体写好、边界清晰,再按需拆分,别一上来就拆。
小测验:看看你掌握了没
- 问题一:声明式和命令式有什么区别?答案:命令式是一步步下令执行,声明式是描述目标状态由系统自动达成并维持(自愈)。
- 问题二:不可变基础设施是什么意思?答案:基础设施创建后不再修改,更新即销毁重建,环境始终干净可预期。
- 问题三:上云就等于云原生吗?答案:不等于,需真正用上容器、弹性、声明式、自愈等云原生能力。
这一篇你该记住的
- 云原生是一套”为云设计”的理念 + 技术组合,核心:容器化、微服务、不可变基础设施、声明式 API。
- 声明式 = “描述想要什么状态”,系统自动达成并自愈,是云原生最强大的思想。
- 不可变基础设施:不原地改,更新即重建,回滚就是换镜像。
- CNCF 生态里 Docker、Prometheus、K8s、Helm 都是拼图;云原生是把已学能力体系化。
- 误区:上云≠云原生、K8s≠全部、小项目不必强上。
理解了世界观,下一篇我们钻进云原生的”发动机”——Kubernetes,搞清楚 Pod、Deployment、Service 这些核心概念到底在管什么。