Kubernetes 组件架构
一、控制平面(Control Plane)核心组件
| 组件 | 作用 | 关键细节 |
|---|---|---|
| kube-apiserver | 集群的 REST API 入口,所有操作的唯一入口 | 支持水平扩展,通过 --etcd-servers 配置后端存储 |
| etcd | 分布式键值存储,保存集群所有状态数据 | 推荐 3/5 节点奇数部署,数据需定期备份 (etcdctl snapshot save) |
| kube-scheduler | 决定 Pod 调度到哪个节点 | 可扩展调度策略(如 GPU 调度需自定义 Scheduler Profile) |
| kube-controller-manager | 运行所有控制器的主进程 | 包含 Node Controller、Deployment Controller 等 30+ 控制器 |
| cloud-controller-manager | 对接云厂商 API(AWS/Azure/GCP) | 实现 LoadBalancer、StorageClass 等云资源管理 |
二、工作节点(Worker Node)组件
| 组件 | 作用 | 依赖关系 |
|---|---|---|
| kubelet | 节点代理,管理 Pod 生命周期 | 通过 CRI 接口与容器运行时(containerd/CRI-O)交互 |
| kube-proxy | 维护节点网络规则(iptables/IPVS) | 实现 Service 的 ClusterIP 和负载均衡 |
| 容器运行时 | 运行容器的底层引擎 | containerd(默认)、CRI-O、docker(已弃用) |
| cri-dockerd (可选) | 第三方 Docker 适配层 | 仅用于 v1.24+ 集群仍需使用 Docker 的场景 |
三、官方插件(Addons)
网络相关
| 插件 | 功能 | 示例实现 |
|---|---|---|
| CNI 插件 | 提供 Pod 网络和 IP 分配 | Calico、Flannel、Cilium、Weave Net |
| CoreDNS | 集群内 DNS 服务(替代 kube-dns) | 默认解析 svc.cluster.local 域名 |
| Ingress Controller | 管理外部访问的路由规则 | Nginx Ingress、Traefik、AWS ALB |
存储与安全
| 插件 | 功能 | 典型场景 |
|---|---|---|
| CSI 驱动 | 对接外部存储系统(如 AWS EBS、NFS) | aws-ebs-csi-driver、ceph-csi |
| Metrics Server | 收集资源指标供 HPA 使用 | 实现 kubectl top 命令 |
| RBAC | 基于角色的访问控制(非独立组件,集成在 apiserver) | 定义 Role 和 RoleBinding |
可视化与运维
| 插件 | 功能 | 备注 |
|---|---|---|
| Dashboard | Web 管理界面(需额外部署) | 生产环境建议启用认证 |
| Prometheus | 监控告警系统(通常与 Grafana 搭配) | 通过 ServiceMonitor 采集指标 |
| Fluentd | 日志收集(常配合 Elasticsearch 使用) | 现多改用 Loki 或 OpenTelemetry |
四、生态工具链
开发与部署
| 工具 | 用途 | 命令示例 |
|---|---|---|
| kubectl | 命令行管理工具 | kubectl apply -f deploy.yaml |
| Helm | 包管理工具(类似 apt/yum) | helm install nginx bitnami/nginx |
| Kustomize | 原生配置管理工具(集成在 kubectl 中) |
kubectl apply -k overlays/prod/ |
集群生命周期管理
| 工具 | 适用场景 | 特点 |
|---|---|---|
| kubeadm | 快速搭建符合官方标准的集群 | 生产可用(需自行处理高可用) |
| kops | 在 AWS/GCP 上管理生产集群 | 自动化证书轮换、节点修复 |
| Rancher | 企业级 Kubernetes 管理平台 | 提供多集群 UI 和策略管理 |
五、架构图(扩展版)
graph TB
subgraph Control Plane
A[API Server] --> B[etcd]
A --> C[Scheduler]
A --> D[Controller Manager]
D -->|Node/Deployment控制器| A
end
subgraph Worker Node
E[kubelet] -->|CRI| F[containerd]
E -->|CNI| G[Calico]
H[kube-proxy] -->|iptables| I[Service IP]
end
subgraph Addons
J[CoreDNS] --> A
K[Metrics Server] --> A
L[Ingress-Nginx] --> M[Pod]
end
User -->|kubectl/Helm| A
六、关键设计原则
- 模块化:各组件通过定义清晰的接口(如 CRI/CNI/CSI)解耦
- 声明式 API:用户提交期望状态(YAML),控制器驱动实际状态匹配
- 自愈能力:节点/Pod 故障时自动重建或重新调度

评论需开启科学上网!