Kubernetes 架构与生态:从云原生到 AI 原生
来源:Jimmy Song《Kubernetes 基础教程》,基于 K8s v1.31+,在线阅读 涵盖 23 个主题、200+ 篇文章,本文提取核心知识框架。
一、架构:Kubernetes 的骨架
从 Borg 到 K8s。 Google 内部跑了 15 年的 Borg 系统(BorgMaster + Scheduler + Borglet)是 K8s 的原型。
控制面(Control Plane)
- kube-apiserver — 唯一入口,RESTful API,所有操作经此
- etcd — 分布式 KV 存储,集群唯一状态源(使用 Raft 共识)
- kube-scheduler — 监听未调度 Pod,按资源/亲和性/约束分配节点
- kube-controller-manager — 运行各类控制器(Deployment、Node、Namespace 等),通过控制循环维持期望状态
工作节点(Worker Node)
- kubelet — 节点代理,确保 Pod 中容器按 spec 运行
- kube-proxy — 维护 Service 的网络规则(iptables/IPVS)
- 容器运行时 — containerd(主流)、CRI-O、Docker(已弃用)
设计理念
- 声明式 API — 描述"想要什么"而非"做什么",系统自动趋近期望状态
- 控制循环(Reconciliation Loop) — 持续观测 vs 期望,自动修正
- 松耦合 + 可扩展 — 每个组件可独立替换和扩展
二、三大开放接口
K8s 通过 CRI/CNI/CSI 三个接口解耦核心与具体实现:
| 接口 | 解耦什么 | 常见实现 | |------|---------|---------| | CRI(容器运行时接口) | 容器执行 | containerd, CRI-O, gVisor | | CNI(容器网络接口) | Pod 网络 | Flannel, Calico, Cilium | | CSI(容器存储接口) | 持久存储 | 各云厂商 driver, 本地存储 |
三、Pod:最小调度单元
Pod 不是容器,是容器的"沙箱"。 同一 Pod 内容器共享网络命名空间和存储卷。
关键概念
- Init 容器 — 按顺序执行,完成后才启动主容器(用于初始化)
- Pause 容器 — Pod 的"根容器",持有网络命名空间,其他容器加入
- Sidecar 容器 — 辅助容器,与主容器共生命周期(日志采集、代理等)
- 生命周期 — Pending → Running → Succeeded/Failed,支持 PostStart/PreStop Hook
- 探针 — Liveness(存活)、Readiness(就绪)、Startup(启动)三类
- PDB(PodDisruptionBudget) — 保证滚动更新/驱逐时最少可用副本数
QoS 等级
- Guaranteed — CPU/内存都设了 requests=limits(最高优先级)
- Burstable — 至少一个资源设了 requests 或 limits
- BestEffort — 啥都没设(最先被驱逐)
四、控制器:自动化引擎
| 控制器 | 用途 | 关键特性 | |--------|------|---------| | Deployment | 无状态应用 | 滚动更新、回滚、ReplicaSet 管理 | | StatefulSet | 有状态应用 | 稳定网络标识、有序部署/终止、PVC 绑定 | | DaemonSet | 每节点一个 Pod | 日志采集、监控 Agent、网络插件 | | Job | 一次性任务 | 完成即退出,支持并行和重试 | | CronJob | 定时任务 | Cron 表达式调度 | | HPA | 自动扩缩容 | 基于 CPU/内存/自定义指标 | | ReplicaSet | 副本管理 | Deployment 底层使用,一般不直接操作 |
Ingress 控制器
- 将集群内 Service 暴露给外部 HTTP/HTTPS 流量
- 常见:Nginx Ingress、Traefik、Envoy-based
- 趋势:正被 Gateway API 替代
准入控制器(Admission Controller)
- 请求到达 API Server 后、持久化前的拦截钩子
- Mutating — 可修改请求(如自动注入 sidecar)
- Validating — 只校验不修改(如策略检查)
五、服务发现与路由
Service
- 为一组 Pod 提供稳定 IP 和 DNS 名
- 类型:ClusterIP(默认)、NodePort、LoadBalancer、ExternalName
- 通过 label selector 自动关联 Pod
Ingress → Gateway API 演进
- Ingress — L7 路由(HTTP/HTTPS),功能有限,注解堆砌
- Gateway API — 新标准,角色分离(集群管理员 vs 应用开发者),支持 TCP/UDP/gRPC,可扩展
- Gateway API Inference Extension — 专为 AI 推理设计的扩展,支持模型感知路由
六、身份与权限
ServiceAccount
- Pod 级别的身份凭证,自动挂载 token 到
/var/run/secrets/
RBAC(基于角色的访问控制)
- Role/ClusterRole — 定义权限规则
- RoleBinding/ClusterRoleBinding — 绑定角色到用户/组/SA
- 最小权限原则,避免使用
cluster-admin
SPIFFE/SPIRE
- 工作负载身份的标准框架
- 通过 SVID(X.509 证书或 JWT)实现跨集群、跨平台身份验证
七、网络方案
| 方案 | 特点 | 适用场景 | |------|------|---------| | Flannel | 简单 Overlay(VXLAN),开箱即用 | 小型集群、入门 | | Calico | BGP 路由,支持 NetworkPolicy,高性能 | 生产环境、安全要求高 | | Cilium | 基于 eBPF,可观测性极强,支持 L3-L7 策略 | 现代 K8s、Service Mesh 替代 |
NetworkPolicy
- 控制 Pod 间网络流量( ingress/egress 规则)
- 需 CNI 插件支持(Calico/Cilium 支持,Flannel 不支持)
八、存储
配置管理
- ConfigMap — 非敏感配置,支持环境变量/文件挂载,支持热更新(mounted 文件自动刷新)
- Secret — 敏感数据(Base64 编码,etcd 加密存储),类型丰富(docker-registry、tls 等)
卷与持久化
- Volume — Pod 级别,生命周期随 Pod
- PV/PVC — 集群级持久卷 + 声明,解耦存储供给与消费
- StorageClass — 动态供给,按需创建 PV
- 本地持久化存储 — 直接用节点本地盘,性能最佳但调度受限
九、安全
- TLS Bootstrap — 节点自动申请证书,减少手动操作
- Kubelet 认证授权 — 支持证书/Token 认证
- IP 伪装代理 — 控制节点 IP 伪装行为
- 最佳实践:RBAC 最小权限、NetworkPolicy 隔离、Pod 安全标准(Restricted/Baseline/Privileged)、Secret 加密、审计日志
十、扩展 K8s
这是 K8s 最强大的设计——"可扩展而不修改"。
API 扩展
- CRD(自定义资源定义) — 最常用,声明式定义新资源类型
- APIService — 聚合外部 API Server(如 metrics-server)
- 准入 Webhook — Mutating/Validating,实现策略注入和校验
控制器扩展
- Operator 模式 — CRD + 自定义控制器,封装运维知识
- Kubebuilder — Go 框架,快速构建 CRD + Controller
- Operator SDK — 支持Go/Ansible/Helm,集成 OLMI生命周期
调度器扩展
- Scheduler Framework — 可插拔调度插件(Filter/Score/Bind 等阶段)
- DRA(动态资源分配) — 替代 Device Plugin 的新机制
- GPU 调度 — 通过 Device Plugin 或 DRA 集成 GPU 资源
十一、可观测性
三支柱:指标(Metrics)、日志(Logs)、链路追踪(Traces)
- Prometheus — 指标采集与告警,事实标准
- OpenTelemetry — 统一采集框架,覆盖 Logs/Metrics/Traces
- Kiali — Service Mesh(Istio)可观测性面板
- Grafana — 仪表盘和可视化
- 告警 — Alertmanager 处理 Prometheus 告警,去重/分组/路由
十二、DevOps 实践
CI/CD
- ArgoCD — GitOps 模式,声明式同步 Git → K8s
- Argo Rollouts — 渐进式发布(金丝雀/蓝绿),配合指标自动升降级
包管理
- Helm — K8s 的包管理器,Chart 模板化部署
- Kustomize — 原生 K8s 配置管理,overlay 机制(无需模板)
基础设施即代码
- Terraform — 多云基础设施管理
- Volcano — 批调度系统,适用于 AI/ML 训练任务
十三、多集群管理
- Karmada — 多集群编排,工作负载跨集群调度,联邦资源管理
- k0rdent — 企业级多集群管理平台
- 多集群服务 API — 跨集群服务发现与连通
十四、服务网格
服务网格 = 基础设施层 + 代理 + 控制面,解耦业务逻辑与通信治理。
- Envoy — 高性能 L4/L7 代理,xDS 动态配置
- Istio — 最流行的 Service Mesh 实现(Envoy sidecar + istiod 控制面)
- 部署模式 — Sidecar(传统)vs Ambient(无 sidecar,基于 ztunnel 节点级代理)
- 核心能力 — 流量管理(路由/重试/故障注入)、安全(mTLS)、可观测性
十五、Serverless
- Knative — K8s 原生 Serverless 框架(Serving + Eventing)
- Serving — 自动扩缩到零、流量路由、版本管理
- Eventing — 事件驱动架构,Broker/Trigger 模型
- OpenFaaS — 函数即服务,简单易上手
- Kubernetes Patterns — 设计模式集合(ConfigMap/Secret/Init Container 等)
十六、边缘计算
| 项目 | 特点 | |------|------| | K3s | 轻量 K8s(单二进制),适合边缘/ IoT | | KubeEdge | 云边协同,离线自治,MQTT 通信 | | OpenYurt | 阿里出品,无缝扩展 K8s 到边缘 | | SuperEdge | 腾讯出品,边缘自治 + 分布式节点 |
十七、云原生
- 云原生定义(CNCF) — 容器 + 服务网格 + 微服务 + 不可变基础设施 + 声明式 API
- CNCF — 云原生计算基金会,K8s/Prometheus/Envoy 等毕业项目
- 后 K8s 时代 — Serverless、Service Mesh、Platform Engineering 正在重新定义云原生
十八、AI 原生(重点新增章节)
K8s 正在成为 AI 基础设施的标准底座。
核心方向
- AI Gateway — 模型路由、负载均衡、限流、A/B 测试(基于 Gateway API)
- 大模型部署 — vLLM(PagedAttention 高吞吐推理)、模型并行、量化
- 推理优化 — Continuous Batching、Speculative Decoding、KV Cache 优化
- GPU 调度 — HAMi(异构算力虚拟化)、Device Plugin、DRA、GPU 共享/切分
- 工作负载调度 — Volcano 批调度、Gang Scheduling、拓扑感知调度
- 可观测性 — GPU 利用率、推理延迟、队列深度、模型级指标
- 安全 — 模型访问控制、推理审计、数据隔离
关键项目
- vLLM — 高性能 LLM 推理引擎
- HAMi — GPU 虚拟化(vGPU),支持 NVIDIA/AMD/Hygon
- Gateway API Inference Extension — 推理感知流量路由
速查:kubectl 常用命令
# 资源查看
kubectl get pods/svc/deploy/nodes -A
kubectl describe pod <name>
kubectl logs <pod> [-c container] [-f]
# 资源操作
kubectl apply -f manifest.yaml
kubectl delete -f manifest.yaml
kubectl edit deploy <name>
# 调试
kubectl exec -it <pod> -- /bin/sh
kubectl port-forward svc/<name> 8080:80
kubectl debug node/<name> -it --image=busybox
# 扩缩容
kubectl scale deploy <name> --replicas=3
kubectl autoscale deploy <name> --min=2 --max=10 --cpu-percent=80
# 集群信息
kubectl cluster-info
kubectl top nodes/pods
kubectl get events --sort-by='.lastTimestamp'
知识图谱
Kubernetes
├── 架构层:Control Plane + Worker Node + etcd
├── 抽象层:Pod → Controller(Deploy/Stateful/Daemon)→ Service → Ingress/Gateway
├── 扩展层:CRD + Operator + Webhook + Scheduler Plugin
├── 平台层:Helm + ArgoCD + Terraform + Service Mesh
├── 运维层:监控(Prometheus) + 日志(ELK/Loki) + 追踪(OpenTelemetry)
└── 未来层:AI 原生(GPU 调度/vLLM/AI Gateway)+ 边缘 + Serverless
本文为 Jimmy Song Kubernetes Handbook 的精炼总结,原文 200+ 篇约 34 万字。如需深入某个主题,访问 在线教程 或 GitHub rootsongjc/kubernetes-handbook。