部署与云原生
部署演进的主线:从“在一台机器上跑”到“声明式地管一群容器”。面试主线:云原生是什么、容器为什么是基石、K8s 怎么编排。
部署演进
| 时代 | 形态 | 问题 |
|---|---|---|
| 物理机 | 一台机器一个应用 | 资源浪费、环境隔离 |
| 虚拟机 | 虚机隔离 | 重(GB 级 OS) |
| 容器 | 进程级隔离 | 轻、一致,编排难 |
| 编排(K8s) | 声明式管理容器 | 解决规模化 |
云原生是什么
- CNCF 定义:容器化 + 微服务 + 声明式 API + 不可变基础设施
- 核心词:容器(打包标准)、编排(自动调度)、不可变(不修只换)、声明式(要什么状态,不要怎么做)
云原生三件套: 容器 → 编排 → 交付
本分类地图
- Docker:镜像、容器、网络(基石)
- K8s 核心:Pod、Deployment、Service(主模型)
- K8s 进阶:HPA、Ingress、存储、StatefulSet
- CI/CD:流水线、GitOps
- 发布策略:蓝绿、金丝雀、滚动
面试定位
- 后端岗考 K8s 频率逐年上升:Pod/Deployment/Service 三件套必答
- 加分:探针、HPA、发布策略(能讲清原理 + 场景)
- 部署题常和系统设计结合(水平扩展、无状态,见系统设计篇)
面试追问
- 容器和虚拟机? 容器进程级隔离(共享内核,MB 级),虚拟机硬件级隔离(GB 级)。容器快但隔离弱
- 云原生核心? 容器化 + 编排 + 声明式 + 不可变。K8s 是事实标准
- 不可变基础设施? 不修运行中的实例,重新构建替换。可复现、可回滚
- 声明式和命令式? 声明“要什么状态”(K8s 对账),命令式“执行什么操作”。声明式是云原生核心
- 为什么要 K8s? 单机 Docker 管不过来:调度、自愈、扩缩、服务发现。规模化编排