1.1 Kubernetes architecture
核心架构图
1 | graph TD |
Master Node(控制平面)
负责集群的全局决策和调度,包含以下核心组件:
① Kube-APIServer
- 作用:集群的“前台”,所有操作的唯一入口(RESTful API)。
- 关键关系:
- 接收用户或工具的请求(如
kubectl)。 - 验证请求后,将状态写入 ETCD。
- 接收用户或工具的请求(如
② ETCD Cluster
- 作用:分布式键值数据库,存储集群所有状态(如 Pod、Node 配置)。
- 关键关系:
- 只有 APIServer 能直接读写 ETCD。
- 高可用部署需 3 个以上节点。
③ Kube-Scheduler
- 作用:决定 Pod 运行在哪个 Worker Node 上。
- 调度策略:
- 资源需求(CPU/Memory)。
- 亲和性/反亲和性规则。
④ Controller Manager
- 作用:通过控制循环确保集群实际状态与期望状态一致。
- Node-Controller:
- 监控 Node 状态(如宕机时标记为
NotReady)。
- 监控 Node 状态(如宕机时标记为
- Replication-Controller:
- 确保 Pod 副本数符合预期(已逐步被
Deployment替代)。
- 确保 Pod 副本数符合预期(已逐步被
- Node-Controller:
Worker Nodes(工作节点)
运行容器化应用,包含以下组件:
① Kubelet
- 作用:节点上的“代理”,负责:
- 与 APIServer 通信(接收 Pod 定义)。
- 管理容器生命周期(通过 Container Runtime)。
② Container Runtime
- 常见实现:Docker、containerd、CRI-O。
- 作用:实际运行容器的引擎(如拉取镜像、启动/停止容器)。
③ Kube-Proxy
- 作用:维护节点网络规则(如 Service 的 IP 转发、负载均衡)。
- 关键关系:
- 实现
ClusterIP、NodePort等网络功能。
- 实现
核心概念关系总结
| 概念 | 功能简述 | 依赖/交互对象 |
|---|---|---|
| Master | 集群大脑,全局决策 | 所有 Worker Nodes |
| ETCD | 集群状态存储 | 仅 APIServer 可读写 |
| Kube-Scheduler | 调度 Pod 到 Node | 监听 APIServer 的未调度 Pod |
| Controller Manager | 确保集群状态一致 | 通过 APIServer 监听 ETCD |
| Kubelet | 执行 Pod 管理 | 接收 APIServer 指令 |
| Kube-Proxy | 处理 Service 网络流量 | 依赖节点网络配置 |
工作流程示例(以部署一个 Pod 为例)
- 用户提交请求:
kubectl create -f pod.yaml→ APIServer。 - 写入状态:APIServer 将 Pod 定义存入 ETCD。
- 调度决策:Scheduler 发现未调度的 Pod,选择合适 Node 并更新 ETCD。
- 执行创建:目标 Node 的 Kubelet 监听到变化,调用 Container Runtime 启动容器。
- 状态反馈:Kubelet 将 Pod 状态报告给 APIServer → 写入 ETCD。
常见疑问解答
Q:ETCD 和 APIServer 的关系?
- APIServer 是 ETCD 的“门卫”,所有组件必须通过 APIServer 访问 ETCD。
Q:Controller Manager 和 Kubelet 的分工?
- Controller Manager 确保集群级状态(如副本数),Kubelet 确保节点级状态(如容器运行)。
Q:为什么需要 Kube-Proxy?
- Service 的虚拟 IP 需要被转换为实际 Pod IP,由 Kube-Proxy 维护 iptables/IPVS 规则, 使得pod之间得以通讯。