Kubernetes 架构
概述
Kubernetes 是一个开源的容器编排平台,最初由 Google 基于其内部 Borg 系统的经验设计而成。作为云原生计算基金会(CNCF)的毕业项目,Kubernetes 已成为容器编排的事实标准,提供了生产级的容器集群管理和应用部署能力。
核心特性
Kubernetes 提供以下核心特性:
- 声明式配置:通过 YAML 定义期望状态,系统自动维护实际状态与期望状态一致
- 自动化编排:Pod 调度、故障恢复、滚动更新、自动扩缩容
- 服务发现与负载均衡:内置 DNS 和服务抽象,支持多种负载均衡策略
- 存储编排:支持多种存储后端,提供持久化存储抽象
- 配置和密钥管理:统一的配置和敏感信息管理机制
- 多租户支持:命名空间隔离、RBAC 权限控制、资源配额管理
Borg 系统简介
Borg 是 Google 内部运行超过 15 年的大规模集群管理系统,管理着数十万个应用跨越数千个集群。它为 Kubernetes 的设计提供了宝贵的实践经验和理论基础。

Borg 核心组件
- BorgMaster:集群大脑,负责状态管理和决策制定,使用 Paxos 协议保证一致性
- Scheduler:智能调度器,基于资源需求和约束条件进行任务分配
- Borglet:节点代理,管理容器生命周期和资源监控
- borgcfg:声明式配置工具,定义应用的期望状态
Kubernetes 架构概览
Kubernetes 继承了 Borg 的核心设计理念,同时在开放性、可扩展性和社区生态方面实现了重大突破。
整体架构

设计原则
- API 驱动:所有操作通过 RESTful API 完成
- 声明式:描述期望状态而非执行步骤
- 控制器模式:通过控制循环保持状态一致性
- 可扩展性:支持插件化架构和自定义资源
核心组件详解
控制平面(Control Plane)
控制平面是 Kubernetes 的决策中心,负责管理集群状态和协调各种操作。
kube-apiserver
- 功能:提供 Kubernetes API 的唯一入口
- 职责:身份验证、授权、准入控制、API 版本管理
- 特点:无状态、水平可扩展、支持多种认证机制
etcd
- 功能:分布式键值存储,集群状态的唯一数据源
- 特点:强一致性、高可用、支持 Watch 机制
- 重要性:etcd 是集群的"真相源",其健康状态直接影响集群可用性
kube-controller-manager
- 功能:运行各种控制器,实现声明式配置的核心逻辑
- 内置控制器:
- Node Controller:节点状态管理
- Replication Controller:副本数量控制
- Endpoints Controller:服务端点管理
- Service Account & Token Controller:认证令牌管理
kube-scheduler
- 功能:为新创建的 Pod 选择合适的节点
- 调度算法:预选(Filtering)+ 优选(Scoring)
- 可扩展性:支持调度框架和多调度器
工作节点(Worker Node)
工作节点负责运行应用容器和处理网络流量。
kubelet
- 功能:节点代理,管理 Pod 生命周期
- 职责:
- 容器运行时管理(通过 CRI)
- 存储卷管理(通过 CSI)
- 网络配置(通过 CNI)
- 健康检查和监控
kube-proxy
- 功能:网络代理,实现 Service 的流量转发
- 模式:
- iptables:基于 iptables 规则(默认)
- IPVS:基于 IPVS 负载均衡(高性能)
- userspace:用户空间代理(已弃用)
容器运行时(Container Runtime)
- 接口:Container Runtime Interface (CRI)
- 主流实现:
- containerd:CNCF 毕业项目,轻量级
- CRI-O:专为 Kubernetes 设计
- Docker Engine:通过 dockershim 支持(已弃用)
网络架构
网络模型
Kubernetes 采用扁平化网络模型:
- 每个 Pod 有独立的 IP 地址
- Pod 间可直接通信,无需 NAT
- Node 和 Pod 间可直接通信
- 容器看到的 IP 与其他容器看到的一致
网络组件
CNI (Container Network Interface)
- 主流插件:
- Calico:基于 BGP 的网络方案
- Flannel:简单的 overlay 网络
- Cilium:基于 eBPF 的高性能网络
- Weave:易于部署的网络方案
Service 类型
- ClusterIP:集群内部访问
- NodePort:通过节点端口暴露服务
- LoadBalancer:云提供商负载均衡器
- ExternalName:DNS 别名映射
Ingress
- 功能:HTTP/HTTPS 流量的负载均衡和路由
- 控制器:NGINX Ingress Controller、Traefik、Istio Gateway
存储架构
存储抽象
Volume
- EmptyDir:Pod 临时存储
- HostPath:挂载宿主机路径
- ConfigMap/Secret:配置和密钥挂载
- PersistentVolume:持久化存储抽象
CSI (Container Storage Interface)
- 作用:标准化存储插件接口
- 支持:块存储、文件存储、对象存储
- 生态:AWS EBS、GCE PD、Azure Disk、Ceph、GlusterFS
存储类
- 动态供应:StorageClass 定义存储属性
- 回收策略:Retain、Delete、Recycle
- 访问模式:ReadWriteOnce、ReadOnlyMany、ReadWriteMany
架构视图
高层架构

抽象架构

控制平面详图

工作节点详图

分层架构
Kubernetes 采用分层架构设计,从底层基础设施到上层应用形成完整的技术栈。

架构层次
基础设施层
- 计算:虚拟机、物理机、云实例
- 网络:SDN、负载均衡、防火墙
- 存储:块存储、文件存储、对象存储
容器运行时层
- 容器运行时:containerd、CRI-O
- 镜像管理:镜像仓库、镜像安全扫描
- 操作系统:Linux、Windows Server
Kubernetes 核心层
- API Server:统一的 API 入口
- 资源模型:Pod、Service、Deployment 等
- 控制器:声明式配置的实现机制
- 调度器:资源分配和优化
应用编排层
- 工作负载:Deployment、StatefulSet、DaemonSet
- 配置管理:ConfigMap、Secret
- 网络服务:Service、Ingress、NetworkPolicy
- 存储编排:PV、PVC、StorageClass
扩展层
- CRD:自定义资源定义
- Operator:应用特定的运维逻辑
- Admission Controller:准入控制和策略执行
- 调度扩展:自定义调度算法
生态系统层
- 开发工具:Helm、Kustomize、Skaffold
- CI/CD:Jenkins、GitLab CI、Tekton、ArgoCD
- 监控观测:Prometheus、Grafana、Jaeger
- 安全工具:Falco、OPA Gatekeeper、Twistlock
- 服务网格:Istio、Linkerd、Consul Connect
云原生生态
CNCF 生态系统
Kubernetes 作为 CNCF 的核心项目,与众多云原生技术形成完整生态:
应用定义和镜像构建
- Helm:Kubernetes 应用包管理
- Buildpacks:源码到镜像的构建工具
- Docker:容器镜像标准
运行时
- containerd:容器运行时
- gVisor:安全沙箱运行时
- Kata Containers:轻量级虚拟机
编排和管理
- Kubernetes:容器编排平台
- Crossplane:云资源管理
- Argo:GitOps 和工作流
监控和分析
- Prometheus:监控系统
- Grafana:可视化平台
- Jaeger:分布式追踪
服务代理、发现和网格
- Istio:服务网格
- Linkerd:轻量级服务网格
- Consul:服务发现
网络和安全
- Calico:网络和安全策略
- Falco:运行时安全监控
- Open Policy Agent:策略引擎
最佳实践
架构设计原则
- 高可用性:控制平面多副本部署,etcd 集群部署
- 可观测性:完善的监控、日志和追踪体系
- 安全性:最小权限原则、网络策略、镜像安全
- 可扩展性:水平扩展、垂直扩展、集群联邦
- 资源效率:合理的资源配额和限制
生产部署建议
- 控制平面:至少 3 个节点,奇数个 etcd 实例
- 工作节点:根据业务需求弹性扩展
- 网络:选择适合的 CNI 插件
- 存储:规划持久化存储方案
- 监控:部署 Prometheus + Grafana 监控栈
- 备份:定期备份 etcd 数据
本章内容
Kubernetes 的设计理念
本文深入探讨了 Kubernetes 的核心设计理念,包括分层架构、API 设计原则、控制机制设计原则,以及重要的技术概念和 API 对象,帮助读者全面理解 Kubernetes 系统的设计思想和实现机制。
Etcd 解析
深入解析 etcd 在 Kubernetes 中的核心作用,包括分布式存储原理、Raft 共识算法、数据备份恢复、性能优化和安全配置等实践指南。
Kubernetes 中的资源对象
深入了解 Kubernetes 中的各种资源对象类型,包括 Pod、Service、Deployment 等核心概念,以及如何通过 YAML 文件定义和管理这些对象的 spec 和 status。
参考资料
- Borg, Omega, and Kubernetes - ACM Queue
- Large-scale cluster management at Google with Borg
- Kubernetes 官方架构文档
- CNCF Cloud Native Landscape
- Kubernetes 设计文档
这是第一页