2. 云原生基础回顾:容器化、Kubernetes核心概念、微服务架构、声明式API
在深入灾备缓存与灰度拓扑留痕之前,必须对齐云原生的四大基石。本章从容器化出发,逐层梳理Kubernetes核心对象、微服务设计范式以及声明式API的工作机制,为后续章节的巡检与拓扑分析建立统一语境。
2.1 容器化:从进程隔离到交付标准
容器化是云原生的最小部署单元。通过Linux Namespace与Cgroups实现资源隔离与限制,容器镜像则成为“一次构建、随处运行”的交付标准。
| 维度 | 传统虚拟机 | 容器 |
|---|---|---|
| 启动时间 | 分钟级 | 毫秒~秒级 |
| 镜像大小 | GB级(含完整OS) | MB~百MB级 |
| 资源密度 | 单机数十实例 | 单机数百~千实例 |
| 隔离粒度 | 硬件级虚拟化 | 操作系统级 |
实践要点:生产环境中容器镜像应遵循“最小化基础镜像 + 多阶段构建”原则,避免将构建工具链带入运行镜像,降低安全攻击面与镜像拉取耗时。
2.2 Kubernetes核心概念:控制平面与工作负载
Kubernetes(K8s)是云原生编排的事实标准。其核心概念围绕控制平面(Control Plane)与工作负载(Workload)展开,所有操作均通过API Server暴露。
- Pod:最小调度单元,一个Pod内可包含1个或多个容器,共享网络栈与存储卷。
- Deployment:声明式管理无状态应用,支持滚动更新、回滚、副本扩缩。
- Service:提供稳定的网络访问入口,通过标签选择器关联后端Pod。
- ConfigMap / Secret:将配置与敏感信息从镜像中剥离,实现环境解耦。
- Namespace:多租户隔离边界,用于划分环境(dev/staging/prod)或团队。
2.3 微服务架构:从单体到分布式自治
微服务架构将单一应用拆分为多个独立部署、独立扩展、独立故障的小型服务。每个服务围绕业务能力构建,拥有自己的数据存储与API边界。
微服务关键特征:
- 业务能力独立:每个服务对应一个限界上下文(Bounded Context)。
- 独立部署:服务可独立发布、回滚,不影响其他服务。
- 去中心化治理:允许不同服务使用不同技术栈(语言、数据库)。
- 弹性与韧性:通过熔断、重试、限流等模式保障局部故障不扩散。
微服务在Kubernetes中的典型映射关系:
| 微服务概念 | Kubernetes实现 |
|---|---|
| 服务实例 | Pod(通常1个Pod = 1个服务实例) |
| 服务发现 | Service + DNS(CoreDNS) |
| 配置管理 | ConfigMap / Secret |
| 流量入口 | Ingress / Gateway API |
| 可观测性 | Metrics Server + Prometheus + Fluentd |
2.4 声明式API:期望状态驱动
声明式API是云原生操作的核心哲学。用户提交期望的最终状态(Desired State),系统持续通过控制器循环(Reconciliation Loop)将实际状态(Actual State)向期望状态靠拢。
# 声明式示例:Deployment YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: cache-worker
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: cache-worker
template:
metadata:
labels:
app: cache-worker
spec:
containers:
- name: worker
image: registry.example.com/cache-worker:v2.1.0
ports:
- containerPort: 8080
resources:
requests:
cpu: "500m"
memory: "512Mi"
limits:
cpu: "1000m"
memory: "1Gi"
常见误区:声明式API不等于“只写一次YAML”。控制器会持续对比etcd中的期望状态与集群实时状态,任何手动修改(如kubectl edit直接改Pod)都可能被控制器自动纠正回期望状态。理解这一点对灾备场景下的拓扑留痕至关重要——留痕数据必须反映控制器视角的期望拓扑,而非临时手动变更。
2.5 四大基石的关系总结
容器化提供运行环境,Kubernetes提供编排调度,微服务架构定义应用拆分方式,声明式API统一操作范式。四者共同构成云原生应用的“操作系统”与“编程模型”。
课程关联提示:在后续的灾备缓存命中巡检与灰度批次拓扑留痕中,我们将频繁使用以下映射:
- Pod → 缓存工作节点实例
- Deployment → 灰度批次版本管理
- Service → 缓存访问入口
- 声明式API → 拓扑期望状态与巡检基线