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 故障时自动重建或重新调度
评论需开启科学上网!