🚀 K8s 架构革命
Kubernetes(K8s)自 2014 年开源以来,已经成为容器编排的事实标准。根据 CNCF 2023 年调查,K8s 在生产环境的使用率已达到 92%。
92%
企业生产使用 K8s
78%
使用 Helm 管理应用
65%
运行在公有云 K8s 服务
5.6x
部署频率提升
传统部署 vs 容器化 vs K8s 编排
传统部署
❌环境不一致
❌资源利用率低(< 20%)
❌部署耗时长(小时级)
❌扩缩容困难
→
容器化部署
✅环境一致性
✅资源隔离
✅秒级部署
⚠️手动管理容器
→
Kubernetes 编排
✅自动化部署
✅自动扩缩容
✅自我修复
✅服务发现与负载均衡
💡 独特观点
K8s 的真正价值不是"容器编排",而是声明式 API 和控制器模式。这种架构让系统能够自我修复、自动调谐,实现真正的自动化运维。
🏗️ K8s 架构深度解析
K8s 采用主从架构,由 Control Plane(控制平面)和 Node(工作节点)组成。
1. Control Plane 组件
🎛️ Control Plane(主节点)
API Server
集群的统一入口,所有操作通过 REST API
etcd
分布式键值存储,保存集群状态
Scheduler
调度 Pod 到合适的 Node
Controller Manager
运行控制器,维护集群状态
📝 Control Plane 组件详解
## API Server (kube-apiserver)
- 暴露 Kubernetes API(RESTful)
- 处理所有 CRUD 操作
- 负责认证、授权、准入控制
- 监听 6443 端口
## etcd
- 分布式键值存储(Raft 一致性算法)
- 保存集群的所有配置和状态
- 支持 watch 机制(实时通知)
- 需要定期备份!
## Scheduler (kube-scheduler)
- 监听未调度的 Pod
- 评估调度策略(资源、亲和性、污点)
- 绑定 Pod 到 Node
- 支持自定义调度器
## Controller Manager (kube-controller-manager)
- 运行多个控制器
- 包括:Node Controller、Replication Controller、
Endpoints Controller、Service Account Controller
- 不断检查集群状态,向目标状态收敛2. Node 组件
📝 Node 组件详解
## kubelet
- 每个 Node 上运行的主进程
- 确保 Pod 中的容器正常运行
- 向 API Server 报告节点和 Pod 状态
- 执行容器健康检查
## kube-proxy
- 维护网络规则(iptables/IPVS)
- 实现 Service 的抽象
- 负责流量转发和负载均衡
- 支持三种模式:userspace、iptables、IPVS
## Container Runtime
- 容器运行时(Docker、containerd、CRI-O)
- 负责拉取镜像、创建/启动/停止容器
- 通过 CRI(容器运行时接口)与 kubelet 交互K8s 集群规模数据
最大单集群节点数5000
最大单集群 Pod 数150,000
单个 Node 最大 Pod 数110
推荐 Node 规格4-8 vCPU, 16-32GB
📝 总结与展望
Kubernetes 已经成为云原生时代的操作系统。通过本文的学习,你应该掌握了:
🎯 核心要点
- 架构:Control Plane + Node,声明式 API + 控制器模式
- 核心概念:Pod、Service、Deployment、ConfigMap、Secret
- 工作负载:Deployment(无状态)、StatefulSet(有状态)、DaemonSet(守护进程)
- 网络:CNI 插件、Service(ClusterIP/NodePort/LoadBalancer)、Ingress
- 存储:PV/PVC、StorageClass、CSI 插件
- 配置管理:ConfigMap、Secret、Downward API
- 自动扩缩容:HPA(水平)、VPA(垂直)、CA(集群)
🚀 未来展望
K8s 生态正在快速演进,值得关注的方向:
- Kubernetes Gateway API:替代 Ingress,更灵活的路路由
- eBPF:Cilium 等基于 eBPF 的 CNI 插件,性能更好
- Serverless on K8s:Knative、OpenFaaS,让 K8s 支持无服务器
- GitOps:Argo CD、Flux,声明式持续交付
- 服务网格:Istio、Linkerd,增强服务间通信