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)或团队。
Kubernetes核心架构图 控制平面 API Server Scheduler Controller Manager etcd 工作节点1 kubelet kube-proxy Pod A Pod B 工作节点2 kubelet kube-proxy Pod C Pod D API Server 是唯一入口,Scheduler 负责调度,Controller Manager 维持期望状态,etcd 存储集群数据

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)都可能被控制器自动纠正回期望状态。理解这一点对灾备场景下的拓扑留痕至关重要——留痕数据必须反映控制器视角的期望拓扑,而非临时手动变更。
声明式API工作流程 用户/CI/CD API Server etcd Controller Reconciliation Loop(持续调谐) 用户提交期望状态 → API Server 写入 etcd → Controller 持续调谐直至实际状态匹配期望状态

2.5 四大基石的关系总结

容器化提供运行环境,Kubernetes提供编排调度,微服务架构定义应用拆分方式,声明式API统一操作范式。四者共同构成云原生应用的“操作系统”与“编程模型”。

课程关联提示:在后续的灾备缓存命中巡检与灰度批次拓扑留痕中,我们将频繁使用以下映射:
  • Pod → 缓存工作节点实例
  • Deployment → 灰度批次版本管理
  • Service → 缓存访问入口
  • 声明式API → 拓扑期望状态与巡检基线