Kubernetes 全景概览:生态系统与核心架构
1. 诞生背景
Kubernetes(简称 K8s)由 Google 于 2014 年开源,脱胎于 Google 内部运行超过 15 年的大规模容器编排系统 Borg。随着 Docker 的兴起,容器化应用的部署、扩缩容、故障恢复等运维问题日益突出,Kubernetes 应运而生,成为云原生时代的操作系统。
“Kubernetes 不是一个 PaaS,而是一个构建 PaaS 的平台。”
2. 核心设计哲学
2.1 声明式 API(Declarative API)
用户描述期望状态(Desired State),Kubernetes 负责将**当前状态(Current State)**收敛到期望状态。这是 K8s 最核心的设计理念。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25
|
2.2 控制器模式(Controller Pattern)
每个控制器持续运行一个调谐循环(Reconcile Loop):
1
| 观察(Observe)→ 分析差异(Diff)→ 执行动作(Act)→ 循环
|
2.3 一切皆资源(Everything is a Resource)
K8s 通过统一的 REST API 管理所有资源对象,支持自定义资源(CRD),极大扩展了平台能力。
3. 整体架构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| ┌─────────────────────────────────────────────────────────┐ │ Control Plane(控制平面) │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ │ │ API │ │ etcd │ │Scheduler │ │ CCM │ │ │ │ Server │ │ │ │ │ │ │ │ │ └──────────┘ └──────────┘ └──────────┘ └────────┘ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Controller Manager(控制器管理器) │ │ │ └──────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ API ┌─────────────────────────────────────────────────────────┐ │ Worker Node(工作节点) │ │ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │ │ │ kubelet │ │kube-proxy│ │ Container Runtime │ │ │ └──────────┘ └──────────┘ │ (containerd/CRI-O) │ │ │ └──────────────────────┘ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Pods(应用负载) │ │ │ └──────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘
|
4. 核心组件一览
| 组件 |
所在位置 |
核心职责 |
| kube-apiserver |
Control Plane |
统一入口,REST API 网关 |
| etcd |
Control Plane |
分布式 KV 存储,集群状态数据库 |
| kube-scheduler |
Control Plane |
Pod 调度决策 |
| kube-controller-manager |
Control Plane |
运行所有内置控制器 |
| cloud-controller-manager |
Control Plane |
对接云厂商 API |
| kubelet |
Worker Node |
节点代理,管理 Pod 生命周期 |
| kube-proxy |
Worker Node |
网络规则维护,Service 实现 |
| Container Runtime |
Worker Node |
实际运行容器(containerd) |
5. 云原生生态全景
1 2 3 4 5 6 7 8 9 10 11 12
| ┌─────────────────────────────────────────────────────────────┐ │ CNCF 生态 │ │ │ │ 编排层:Kubernetes / Helm / Kustomize │ │ 运行时:containerd / CRI-O / gVisor │ │ 网络: Calico / Cilium / Flannel / Istio │ │ 存储: Rook / Longhorn / CSI Drivers │ │ 监控: Prometheus / Grafana / Jaeger / OpenTelemetry │ │ CI/CD: ArgoCD / Tekton / Flux │ │ 安全: OPA/Gatekeeper / Falco / cert-manager │ │ 服务网格:Istio / Linkerd / Consul Connect │ └─────────────────────────────────────────────────────────────┘
|
6. 核心概念速览
工作负载资源
- Pod:最小调度单元,一组共享网络/存储的容器
- Deployment:无状态应用管理,支持滚动更新
- StatefulSet:有状态应用,稳定网络标识和存储
- DaemonSet:每节点运行一个 Pod(日志、监控 Agent)
- Job / CronJob:批处理和定时任务
服务发现与网络
- Service:稳定的虚拟 IP,负载均衡到 Pod
- Ingress:HTTP/HTTPS 路由规则
- NetworkPolicy:网络访问控制策略
配置与存储
- ConfigMap:非敏感配置数据
- Secret:敏感数据(密码、Token)
- PersistentVolume / PVC:持久化存储抽象
集群管理
- Namespace:资源隔离的逻辑分区
- RBAC:基于角色的访问控制
- ResourceQuota / LimitRange:资源配额管理
7. 学习路径建议
1 2
| 基础概念 → 核心组件原理 → 网络模型 → 存储体系 → 调度机制 → 安全体系 → 可观测性 → 运维实践
|
后续文章将逐一深入每个核心组件的底层原理与运维实践。