云计算从入门到云原生:一篇文章吃透虚拟化、容器化、IaC与编排
本文是我在《Cloud Computing》课程的完整学习笔记的二次整理,涵盖从云计算基础概念,到虚拟化、容器化、Dockerfile / Compose 应用级 IaC、Docker Swarm 编排的全套知识体系。文章按照"概念 → 原理 → 实验 → 云端映射 → 考点"的顺序组织,既适合作为期末复习的速查手册,也适合作为云原生入门的系统化路线图。
0. 写在前面:为什么要系统学云计算?
我在做 LLM-enhanced IC design verification 研究的过程中越来越深刻地体会到:没有云计算的底座,现代 AI、EDA、CI/CD、私有大模型部署几乎都无从谈起。从 SGLang + LiteLLM 的私有部署,到 LangGraph 工作流的容器编排,再到 RAG 知识库的对象存储,全部都建立在虚拟化、容器化和编排这三大支柱之上。
所以这门课与其说是"考试课",不如说是程序员的"工业基础知识"。本文将以一条主线把它们串起来:
传统 IT → 虚拟化 → IaaS → 容器化 → PaaS → 应用级 IaC → 容器编排 → 云原生下面进入正题。
1. 云计算到底是什么?
1.1 NIST 官方定义
Cloud computing is a model for enabling on-demand network access to a shared pool of configurable computing resources that can be rapidly provisioned and released with minimal management effort or service provider interaction.
翻成人话就是:通过网络按需访问一个共享的、可配置的计算资源池,资源可以被快速创建、扩展、释放,用户无需直接管理底层物理基础设施。
更通俗的说法是:“用别人的计算机”——虽然不完整,但抓住了灵魂。
1.2 云提供哪些资源?
通过 AWS、Azure、GCP 等平台,可以以服务形式获得:
- 计算:EC2 / Azure VM / Compute Engine
- 存储:S3 / Blob / Cloud Storage
- 数据库:RDS / Cosmos DB / Cloud SQL
- 网络:VPC / VNet / Cloud Networking
- Serverless:Lambda / Functions / Cloud Run
- AI / 分析 / 监控等托管服务
1.3 传统 IT 痛在哪里?——Alice 书店的故事
课程里一个经典案例:Alice 经营一家书店,业务扩大后她需要处理服务器、数据库、防火墙、VPN、负载均衡、高可用、备份……最终她发现:
自己已经在经营一家 IT 公司,而不是书店。
云计算的核心价值之一,就是把这些 IT 重负从业务方剥离出去。
2. 云计算的六大核心价值
2.1 Scalability 可扩展性
系统能根据负载变化调整资源,分为两种思路:
| 维度 | Vertical Scaling 垂直扩展 | Horizontal Scaling 水平扩展 |
|---|---|---|
| 做法 | 给单机加 CPU / RAM / 磁盘 | 增加机器/实例数量 |
| 例子 | 2 vCPU → 8 vCPU | 1 个 Web 节点 → 10 个 |
| 优点 | 简单、改动小 | 容错强、云原生友好 |
| 缺点 | 有硬件上限、单点风险 | 需要分布式架构和负载均衡 |
云原生倾向于水平扩展,因为它天然适配 Load Balancer、Auto Scaling、容器编排。
2.2 Elasticity 弹性
弹性强调"按需自动伸缩":圣诞节流量上涨自动 scale up,节后自动 scale down。这避免了"为峰值流量长期支付高成本"。
2.3 Pay-as-you-go 按需付费
类比电网:不自建发电厂,按用电量付费。云让企业的成本模型从 CAPEX(资本支出,一次性买硬件)转向 OPEX(运营支出,按使用量付费)。
2.4 Availability 可用性
通常用 uptime 百分比衡量:
| 可用性 | 年停机时间约 |
|---|---|
| 99% | 3.65 天 |
| 99.9% | 8.76 小时 |
| 99.99% | 52.6 分钟 |
| 99.999% | 5.26 分钟(“五个九”) |
提升手段:多实例、负载均衡、多可用区、自动故障转移、健康检查、数据复制。
2.5 Resilience 韧性
系统从故障中自动恢复的能力。后面 Docker Swarm 的 self-healing 就是典型例子:容器挂了自动重启、节点宕了任务自动迁移。
2.6 Agility 敏捷性
云让"创建环境、试错、回滚"成本极低,是 DevOps 与 CI/CD 文化的底座。
3. 云计算的六大风险
容易被忽视,但考试和实际项目都会问:
- Internet Dependency:依赖稳定网络,需要多 ISP / 专线 / 离线缓存
- Security Concerns:错误配置、API Key 泄露、容器逃逸、镜像漏洞
- Vendor Lock-in:过度依赖某厂商专有 API,迁移困难——用 K8s、PostgreSQL、Docker 这类开源标准是常见对策
- Cost Management:忘关 VM、日志爆炸、数据出站流量贵
- Compliance:GDPR / HIPAA / ISO 27001 / 数据驻留
- Data Privacy:分类、加密、匿名化、审计、生命周期管理
4. 云部署模型:云"在哪里"?
部署模型回答的是Where & Who owns it。
4.1 Public Cloud 公有云
第三方厂商运营,多租户共享。代表:AWS、Azure、GCP、阿里云、腾讯云。
- 优点:弹性强、服务丰富、低门槛、OPEX
- 缺点:控制力弱、合规复杂、有锁定风险
4.2 Private Cloud 私有云
仅供一个组织使用,可以自建(VMware、OpenStack)或托管(Azure Stack、OpenShift)。
- 优点:控制强、隔离好、合规友好
- 缺点:成本高、扩展受限、运维重
4.3 Hybrid Cloud 混合云
关键点:不是"既用公有云又用私有云"那么简单,而是要让它们作为统一系统协同工作。需要 VPN / Direct Connect / ExpressRoute、统一 IAM、统一监控。
4.4 Multi-cloud 多云
同时使用多个公有云(AWS + GCP + Azure)。注意与 Hybrid 的区别:
Hybrid = 私有 + 公有 Multi-cloud = 多个公有云4.5 Community Cloud 社区云
多个有共同合规/任务需求的组织共享(如政府、医疗联盟、研究联合体)。
4.6 On-premises
不是云,是传统 IT 模式。组织自管硬件、网络、电力、冷却。
5. 云服务模型:哪些层"我管"、哪些层"它管"?
5.1 Shared Responsibility Model 共享责任模型
这是最高频考点。下表横向看责任随服务模型上移:
| 层级 | On-prem | IaaS | PaaS | SaaS |
|---|---|---|---|---|
| Application | 用户 | 用户 | 用户 | 提供商 |
| Data | 用户 | 用户 | 用户 | 用户(业务数据) |
| Runtime | 用户 | 用户 | 提供商 | 提供商 |
| Middleware | 用户 | 用户 | 提供商 | 提供商 |
| OS | 用户 | 用户 | 提供商 | 提供商 |
| Virtualization | 用户 | 提供商 | 提供商 | 提供商 |
| Servers / Storage / Networking | 用户 | 提供商 | 提供商 | 提供商 |
一句话记忆:
IaaS:用户管 OS 以上 PaaS:用户管应用 + 数据 SaaS:用户只管使用与业务配置5.2 IaaS
提供虚拟化基础设施。代表:EC2、Azure VM、Compute Engine。适合 lift-and-shift 迁移、legacy、强控制需求。
5.3 PaaS
提供完整应用平台,开发者只关心代码 + 配置。代表:Elastic Beanstalk、App Service、App Engine、Heroku、Cloud Run。适合 Web 应用、API 服务、CI/CD。
5.4 SaaS
完全托管的软件服务。代表:Gmail、Office 365、Slack、Salesforce。
5.5 FaaS / Serverless
只写函数,按事件触发执行。代表:Lambda、Azure Functions、Cloud Functions。适合 Webhook、定时任务、轻量 API、IoT。但要注意冷启动、执行时间限制、调试困难、厂商锁定。
6. 数据中心与虚拟化:云的物理与软件基石
6.1 数据中心 Datacenter
云不是"没有硬件",而是硬件被抽象、自动化、服务化了。数据中心包含服务器、存储、网络、冷却、电力、备电、消防、物理安防。
6.2 Virtualization 虚拟化
一台物理服务器变多台虚拟服务器。每个 VM 拥有自己的 vCPU、虚拟内存、虚拟磁盘、vNIC、独立 kernel 和 OS。
没有虚拟化,云的"按需计算"几乎无法实现。
6.3 Hypervisor 两种类型
| 类型 | 运行位置 | 代表 | 用途 |
|---|---|---|---|
| Type 1(Bare-metal) | 直接跑在硬件上 | ESXi、Hyper-V、KVM、Xen | 生产、云平台 |
| Type 2(Hosted) | 跑在宿主 OS 上 | VirtualBox、VMware Workstation | 学习、开发、测试 |
Lab 1 用的 VirtualBox 属于 Type 2。
6.4 虚拟化的优缺点
优点:提升利用率、降低硬件成本、隔离性好、支持快照、迁移、灾备、多 OS 共存。
缺点:每个 VM 都带完整 OS,镜像 GB 级、启动慢(秒到分钟)、资源开销大、大规模管理复杂。
这些缺点正是容器化要解决的问题。
7. 容器化:比 VM 更轻、更快、更适合云原生
7.1 容器是什么?
容器共享宿主机内核,只打包应用代码 + Runtime + 依赖 + 配置。这让镜像变成 MB 级、启动变成毫秒级、密度极高。
7.2 Container vs VM 对比表
| 特性 | Container | VM |
|---|---|---|
| 隔离级别 | OS-level | Hardware-level |
| 启动速度 | 毫秒 | 秒到分钟 |
| 镜像大小 | MB | GB |
| OS | 共享宿主 kernel | 各自带完整 OS |
| 密度 | 极高 | 中等 |
| 可移植性 | 强 | 中等 |
| 适合场景 | 微服务、CI/CD、云原生 | Legacy、强隔离 |
⚠️容器不是 VM 的完全替代。现代云中典型组合是:VM 提供基础设施隔离,容器跑在 VM 上提供应用层敏捷性。
7.3 Docker 核心概念
- Image:只读模板,包含运行应用所需一切
- Container:镜像的运行实例
- Registry:镜像仓库(Docker Hub、ECR、ACR、Artifact Registry)
- Dockerfile:声明式构建镜像
- Volume:持久化数据
- Network:容器间、容器与主机、容器与外网通信
8. Lab 1 实战:VirtualBox 玩转 IaaS
8.1 三类文件:ISO / VDI / OVA
| 文件 | 含义 | 云端对应 |
|---|---|---|
| ISO | OS 安装光盘镜像 | Custom Image / AMI source |
| VDI | VirtualBox 虚拟硬盘 | EBS Volume / Managed Disk / Persistent Disk |
| OVA | 打包好的整个 VM 模板 | AMI / VM Image / Machine Image |
复制 VDI 后常遇到 UUID 冲突,解决:
VBoxManage.exe internalcommands sethduuid"C:\path\VM_Debian_3.vdi"8.2 改 hostname
sudonano/etc/hostname# 改成 lastname-debian-Xsudoreboot8.3 常用 Linux 网络命令
