云原生学习笔记(一) 云原生与容器技术入门

215 阅读6分钟

🌥️ 一、什么是云原生(Cloud Native)?

“云原生”并不是一项具体技术,而是一套构建和运行现代应用的理念与方法论

CNCF(Cloud Native Computing Foundation)定义: Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds.

关键词解释:

  • 构建与运行现代应用
  • 动态环境:如公有云、私有云、混合云
  • 技术栈支持:容器、服务网格、微服务、不可变基础设施、声明式 API

云原生的由来:从虚拟化到容器化

过去,应用部署通常基于物理机或虚拟机:

  • 物理机部署:资源利用率低,应用耦合强,运维成本高;
  • 虚拟化技术(如 VMware、KVM):提升资源利用率,但启动慢、重量级;
  • 容器化(Docker):轻量、快速启动、资源隔离、便于移植和部署。

云原生的出现,是顺应 DevOps、微服务和自动化部署三浪潮共同演进的结果:

“云原生”不是指某种技术,而是一种“为云而生”的设计理念与工程实践。


🏛️ 二、CNCF 简介

CNCF(Cloud Native Computing Foundation) 是云原生技术的官方维护组织,托管了多个关键开源项目,如:

  • Kubernetes(容器编排)
  • Prometheus(监控)
  • Envoy(服务代理)
  • etcd、gRPC、OpenTelemetry、ArgoCD 等

🌟 三、CNCF 定义与云原生的四大核心能力

Cloud Native 这个词最早由 CNCF(Cloud Native Computing Foundation) 提出。它将“云原生”定义为:

一种使用容器服务网格微服务架构不可变基础设施声明式 API来构建和运行可扩展应用的方法。

核心能力解析:

核心理念解释
弹性(Resilience)应用应具备自我恢复、故障隔离能力,不会因单点故障崩溃全局
可观测(Observability)可监控、可追踪、可告警,支持日志、指标、链路追踪的统一治理
自动化(Automation)包括部署、扩缩容、容错、测试、发布流程的自动化(CI/CD)
可移植(Portability)应用能无缝在不同云平台间迁移运行
可扩展(Scalability)应用应具备根据负载自动扩展或收缩资源的能力

四、“为云而生”的设计哲学:为什么叫“云原生”?

“云原生”不是把传统应用搬到云上,而是根据云计算的特性从头设计架构和流程

传统思维云原生思维
程序安装在固定机器上程序以容器形式运行在任何节点上
手动部署更新自动化 CI/CD、灰度发布
监控依赖系统层日志和图表内建可观测性,微服务链路追踪
垂直扩展:升级服务器水平扩展:复制更多服务实例
异常时人工干预容器自动重启,K8s 自动调度

简而言之:

云原生的设计哲学 = 面向弹性、自动化、动态环境而构建的应用系统。


🔗 五、云原生与微服务、DevOps 的关系

术语简要解释与云原生的关系
微服务将大型应用拆解为多个可独立部署的小服务云原生架构的核心实践方式之一
DevOps开发(Dev)+ 运维(Ops)的协作文化与实践云原生强调自动化、持续交付依赖 DevOps
CI/CD持续集成 / 持续交付/部署云原生推荐声明式、自动化的发布流程

简而言之:

云原生 = 微服务 + DevOps + 自动化工具 + 动态基础设施


🏗️ 六、容器与虚拟机的区别

特性容器(Container)虚拟机(VM)
启动速度秒级分钟级
资源开销更小(共享宿主机内核)较大(需要完整 OS)
隔离性进程级隔离(Namespace + Cgroups)完全隔离(硬件虚拟化)
可移植性高(镜像标准化)相对较差
运维复杂度易于自动化、编排运维、部署更繁琐

结论:容器不是替代虚拟机,而是更加轻量、灵活的部署方式,适合现代云原生应用的快速部署与弹性需求。


⚙️ 七、容器的工作机制简述

容器利用 Linux 的内核特性实现资源隔离:

  • Namespace:实现进程、网络、挂载点、用户等的隔离
  • Cgroups:限制容器使用的 CPU、内存等资源
  • UnionFS(联合文件系统):支持分层构建和快速启动镜像

容器 ≠ 轻量虚拟机,本质是**“运行时沙箱 + 文件系统 + 网络 + 隔离控制”**。


🐳 八、它解决了哪些现实问题?

在传统系统中,你可能遇到:

  • 部署难:配置依赖繁杂,需人手操作
  • 升级慢:要停机,或花费数小时部署
  • 扩展烦:只能靠加服务器,且不可预测
  • 维护贵:故障需人工排查,恢复缓慢

云原生技术提供的典型解决方案包括:

问题云原生如何解决
部署环境不一致使用 Docker 容器镜像标准化部署流程
上线需要人工操作使用 CI/CD 工具自动完成构建、测试、上线流程
高峰期资源吃紧Kubernetes 根据负载自动扩容
故障定位困难借助 Prometheus、Grafana、OpenTelemetry 提高可观测性

九、案例对比:传统电商 vs 云原生电商架构

特征传统电商架构云原生电商架构
系统部署方式单体服务部署在固定服务器多服务容器化部署在 K8s 集群
测试与上线流程手动测试,夜间停机发布自动化测试与灰度发布
扩展方式增加服务器/升级硬件动态水平扩容服务副本
故障处理人工登录排查日志监控告警 + 自恢复容器
运维成本高,团队需 24 小时值守低,借助自动化与观测体系大幅降本

👉 云原生架构不只是技术升级,更是敏捷能力、发布效率与可运维性的质变。


✅ 总结

“云原生”是一种新时代下的应用交付方式,它代表着从代码交付服务交付的转变。

它通过容器化、微服务化和自动化部署等一系列手段,让企业可以:

  • 更快地迭代产品
  • 更稳地应对变化
  • 更轻地运维系统

📌 预告:下一篇内容

👉 《云原生、微服务与 DevOps:三位一体的协同力量》将介绍如何借助微服务拆解应用、如何通过 DevOps 实现快速交付、以及它们与云原生的协同关系。