云原生学习笔记(二) 合并篇章

142 阅读11分钟

第二篇:云原生、微服务与 DevOps —— 相互交织的三位一体

在现代应用的构建流程中,“架构设计”、“团队协作”与“部署运维”从未如此紧密结合。云原生不仅是一种技术趋势,更是一种文化转型,而它背后站着两个强力支柱:微服务与 DevOps。


一、微服务与云原生的关系:架构是基础

微服务(Microservices)是一种将大型应用拆解成多个小型、独立服务的架构方式,每个服务:

  • 聚焦于单一业务能力
  • 独立开发、部署与扩展
  • 通过 API 与其他服务通信

而云原生正是以微服务为核心架构理念的实践平台。

✔ 微服务解决了什么问题?

问题微服务解决方式
单体系统过大,难以维护按业务拆分,服务独立、边界清晰
开发依赖复杂,多人协作困难各服务独立开发、部署、发布
任一变更需全量发布单个服务独立上线,降低风险

✅ 微服务让云原生架构具备了“可演化性”:每一个服务都可以独立扩展、重写甚至替换。


二、DevOps 与云原生的协同:文化 + 工具的闭环

DevOps 是一种跨越开发与运维之间壁垒的文化理念和实践体系,其目标是:

“让代码从开发者的键盘,快速、安全、稳定地进入生产环境。”

而云原生正是 DevOps 最理想的落地场景,它强调:

  • 快速构建(Build)
  • 自动测试(Test)
  • 无缝部署(Deploy)
  • 智能监控(Operate)

📌 云原生如何支持 DevOps?

DevOps 实践云原生支撑技术
自动化测试与构建GitLab CI / GitHub Actions / Jenkins
环境一致性Docker 容器构建 + 镜像仓库
自动部署与回滚Kubernetes + Helm / ArgoCD
实时监控与告警Prometheus + Grafana

三、敏捷开发与持续交付的技术闭环

敏捷开发(Agile)提出短周期迭代 + 持续反馈,而 DevOps 和云原生为它提供了技术地基。

🌀 快速发布的全链路流程:

  1. 开发提交代码 → 触发 CI 管道
  2. 代码自动测试 → 安全扫描 + 单元测试
  3. 构建镜像 → 推送至私有/公有仓库
  4. 自动部署 → Kubernetes 接管发布
  5. 部署完成后监控运行状态 → 异常自动回滚或报警

传统的手动流程通常涉及多个角色、审批、运维协作,整个流程可能花费 数小时或数天

而云原生 + DevOps 的流程可以缩短到分钟级别,并实现发布全自动、可追踪、可回滚。


四、实践对比:从“手工上线”到“一键发布”

项目阶段传统部署流程(单体 + FTP)云原生部署流程(微服务 + CI/CD)
打包开发手动打包 / 运维配置环境自动构建 Docker 镜像,环境一致
发布运维远程上传 jar 包 / 配置 / 重启服务CI/CD 自动部署到 Kubernetes 集群
测试QA 人工测试自动化测试集成于流水线
回滚运维恢复备份手动替换回滚只需更改镜像标签,K8s 还原上个版本
风险配置出错、依赖丢失、版本不一致流程规范化、可观测、标准化
耗时半天到一天5~10 分钟内全流程完成

五、实际案例:从“1 天上线”到“10 分钟上线”的进化

假设某电商团队过去每次上线流程如下:

  1. 研发打包发给运维
  2. 运维上传服务器并备份旧版本
  3. 修改配置、重启服务
  4. QA 验证是否成功
  5. 上线期间流量波动或中断

整个流程平均耗时:1~2 天

升级到云原生架构后:

  • 代码提交即触发自动构建
  • 构建镜像 + 自动测试 + 自动部署
  • Kubernetes 支持分批滚动更新 + 容器健康探针监控

只需1 次提交 + 1 次审批,10 分钟内完成上线,不影响用户使用。


✅ 总结

云原生、微服务和 DevOps 是现代应用的“三驾马车”,它们协同支撑起快速迭代、稳定部署和高可用性的工程能力。

  • 微服务:构建灵活、松耦合的系统架构
  • DevOps:打通开发与运维,实现持续交付
  • 云原生:将二者理念通过容器化与自动化部署落地执行

它们不是可选项,而是必须合体使用才能真正释放现代云基础设施的价值。


第三篇:CNCF 是谁?它管理着怎样的“云原生帝国”?

Kubernetes 不是孤岛,Prometheus 也不是单打独斗。它们都是云原生技术“宇宙”的一部分,而这片星辰大海背后的引力中心,就是 CNCF(Cloud Native Computing Foundation)


一、CNCF 是什么?它从哪里来?

CNCF,全称 Cloud Native Computing Foundation,是由 Linux 基金会于 2015 年发起成立的一个开源基金会,宗旨是:

“建立和支持可扩展、高效、现代的开源云原生技术生态。”

它接管和孵化了大量开源项目,包括我们耳熟能详的:

  • Kubernetes(容器编排)
  • Prometheus(监控)
  • Envoy(服务代理)
  • Helm(包管理)
  • OpenTelemetry(可观测性)

✔ CNCF 的使命

CNCF 不开发项目,而是通过:

  • 中立治理:防止项目被单一公司控制
  • 孵化扶持:提供资金、人力、测试等基础设施
  • 社区建设:举办 KubeCon、Meetup、技术分享等活动

目标是构建一个开放、繁荣且可持续发展的云原生技术社区


二、CNCF 生态体系:云原生“帝国”的核心与羽翼

CNCF 将项目划分为三大等级:

等级定义说明示例项目
毕业项目技术成熟,社区活跃,被广泛应用Kubernetes, Prometheus, Envoy
孵化项目发展中,具有潜力,已初步应用OpenTelemetry, Dapr, Argo
沙箱项目初期阶段,实验性项目KubeVela, WasmEdge, Krustlet

🧩 核心项目介绍

类别项目名简要说明
容器运行时containerd轻量级容器运行引擎,K8s 默认运行时之一
数据存储etcd分布式 Key-Value 存储,K8s 配置中心
编排管理Kubernetes云原生“操作系统”,调度容器集群的核心引擎
监控告警Prometheus云原生监控标准,支持指标采集与告警
服务通信EnvoyL7 代理,服务网格(Istio)中的关键组件
包管理HelmK8s 的“apt-get”,支持 Chart 模板部署
可观测性OpenTelemetry标准化日志、指标、追踪的采集和导出

这些项目共同构成了一个“生产可用”的云原生技术栈。


三、CNCF Landscape:一张图为何如此复杂?

CNCF Landscape转存失败,建议直接上传图片文件

CNCF Landscape 是一张展示整个云原生生态的地图,收录了所有项目、公司、工具、解决方案,包含近千个图标。

主要分层如下:

  1. Provisioning(基础设施):IaaS、裸金属、K8s 安装器
  2. Runtime(运行时):容器、函数、WASM
  3. Orchestration & Management(调度与管理)
  4. Observability & Analysis(可观测性)
  5. App Definition & Dev(应用定义与开发工具)
  6. Platform(平台类产品,如 OpenShift、Rancher)

🔍 Landscape 阅读技巧:

  • 左上角为核心项目,越往右下越边缘/小众
  • 颜色区分项目状态:毕业(蓝)、孵化(绿)、沙箱(灰)
  • 可点击进入官网了解每个项目的 Star 数、公司支持情况

建议初学者不要试图“全吃”,而应聚焦 5~8 个核心项目深入学习。


四、初学者如何选项目入门?

不要被 Landscape 吓退,学习路线建议如下:

✅ 云原生入门项目组合(推荐):

学习目标推荐项目理由
部署与管理容器Docker → Kubernetes先学容器,再学编排
应用包管理Helm简化复杂 YAML 部署
系统监控与告警Prometheus + Grafana标准监控组合
服务通信与代理Envoy / Istio(进阶)学习服务网格基础
日志 & 追踪OpenTelemetry构建可观测性的三大支柱之一

📌 学习建议:

  • 不追求广度,先深入掌握核心项目
  • 可从 CNCF 官方 Projects 页面 找项目文档与实践案例
  • 关注 KubeCon 大会、CNCF Webinars、GitHub Star 趋势把握动态

✅ 总结

CNCF 是现代云原生体系的“孵化器”与“护航人”,它正在构建一个庞大、开放、标准化的技术帝国。在这个帝国中:

  • Kubernetes 是“核心操作系统”
  • Prometheus / Envoy / OpenTelemetry 构成基础设施
  • 还有成百上千个协同项目支持各种场景

理解 CNCF,不是为了记住每个图标,而是建立生态视角

云原生是一个复杂系统,而不是一个工具箱。


第四篇:容器 vs 虚拟机:谁才是更轻量的未来?

在数字化加速的时代,快速上线、弹性扩容、成本控制已成为 IT 系统的“标配需求”。而支撑这一切的技术底座,从“虚拟机”走向“容器”,正在成为云原生发展的关键转折点。


一、虚拟化 vs 容器化:两代技术的演进

我们先来回顾下这场演进:

🧱 第一代:物理机部署

  • 所有服务运行在一台物理机上,资源无法隔离、难以扩展。
  • 应用耦合,更新升级困难。

💻 第二代:虚拟机(VM)

  • 引入 Hypervisor(虚拟机管理程序),可以在一台物理机上虚拟出多个“操作系统”。
  • 每个虚拟机有独立内核,隔离性强,但资源冗余、启动慢、迁移成本高。

📦 第三代:容器化

  • 基于操作系统级虚拟化(Linux Namespace + Cgroups),多个容器共享同一个内核。
  • 体积小、启动快、移植性强、便于自动化运维。

二、核心差异:容器 vs 虚拟机,对比一目了然

特性对比项虚拟机(VM)容器(Container)
启动速度慢(分钟级)快(秒级)
占用资源高(独立操作系统)低(共享内核)
文件体积大(GB 级别)小(MB 级别)
隔离性强(内核级别)中(进程隔离)
移植性差(与虚拟平台耦合)强(跨平台一致运行)
运维自动化较难(需配置 VM + OS + 应用)容易(镜像构建 + CI/CD)
安全性较高(更独立)逐步完善(需加强隔离机制)

三、类比图示:虚拟机 vs 容器,就像“房子 vs 集装箱”

🏠 虚拟机(VM)像盖房子:

  • 每一套都从地基做起:地基(硬件) → 墙体(操作系统) → 室内装修(应用)
  • 结构独立但重成本、动迁难、重复劳动多

📦 容器(Container)像集装箱:

  • 标准统一的“应用打包单元”
  • 快速组装、装车、运输,可在任何码头(云平台)顺利运行
  • 镜像即“内容清单”,易于分发与复用

👉 云原生的基础设施,正是这些可编排、可替换的“集装箱群”


四、容器并非虚拟机的“替代品”,而是更合适的云时代部署方式

很多人误解:容器是虚拟机的升级替代

实际:

  • 虚拟机依然适合需要强隔离、传统系统依赖的场景(如:某些金融合规系统)
  • 容器适用于高并发、频繁交付、弹性伸缩的现代微服务应用

云厂商做法:

  • 大多采用“虚拟机 + 容器”的混合架构:

    • 容器运行在虚拟机中(K8s Node = 云主机)
    • 实现灵活部署,又不牺牲底层安全与隔离性

五、容器为何更适合云原生?

云原生需求容器优势体现
快速弹性扩缩容容器启动秒级,镜像部署一致性高
可移植性强同一个容器镜像可在任何环境中运行
持续交付 / CI/CD容器天然支持 DevOps 流水线
资源精细调度Kubernetes 可按容器粒度分配资源
环境一致性开发环境 = 测试环境 = 生产环境

一句话总结:容器是“云原生应用”的最小可交付单元,也是自动化基础设施的标准接口。


✅ 总结

| 容器不是虚拟机的敌人,而是更适合现代应用的部署模型。它天生契合云原生的理念:轻量、快速、可编排、可扩展。|

未来的 IT 世界,不是“去虚拟机”,而是用 容器提升部署效率,用虚拟机守护底层安全。 这就是“云原生 + 容器化”的真正价值所在。


📌 预告:下一篇内容

👉 **《容器的底层原理:Namespace、Cgroups 与文件系统魔法》**