etcd — Archivist
etcd(档案管理员)是 Kubernetes 的核心组件之一,它是一个分布式键值存储,用来保存整个集群的状态数据。所有控制平面组件都依赖它来获取和更新集群信息。
🧩 etcd 的职责
类比:它就像公司里的 档案管理员,负责保存所有文件和记录。
- 职责:
- 保存整个集群的状态数据(Pod 定义、节点信息、配置、Secrets、ConfigMaps 等)。
- 提供一致性和可靠性,保证数据不会丢失。
- 是 Kubernetes 的“数据库”。
- 特点:
- 基于 分布式键值存储(Key-Value Store)。
- 使用 Raft 共识算法 保证多个副本之间的数据一致性。
- 高可用部署时,通常有奇数个节点(3、5),避免脑裂。
📌 类比理解
- etcd = 档案管理员
- 它负责保存公司(集群)的所有档案(对象状态)。
- 每次秘书(API Server)需要查资料或更新信息时,都会找档案管理员。
- 档案管理员保证所有档案真实、完整,并且在多个分馆(节点)之间保持一致。
👉 所以 etcd 的作用是:保存和提供真实的集群状态。
⚠️ 如果 etcd 出现问题
- 集群会“失忆”,无法知道当前有哪些 Pod、Service、配置。
- API Server 虽然还在,但没有档案室,它就无法提供正确的状态。
- 现有 Pod 可能继续运行,但集群无法再做调度、伸缩或恢复。
⚠️ 注意事项
- 性能关键点:etcd 的性能直接影响整个集群的响应速度。
- 安全性:需要开启 TLS 加密,避免数据泄露。
- 备份与恢复:必须定期备份 etcd 数据,否则集群丢失状态就无法恢复。
🔗 状态一致性流程
- API Server(秘书):接收用户或控制器的请求,把资源定义写入 etcd(档案室)。
- etcd(档案管理员):保存当前的集群状态。
- Controller Manager(项目经理):定期检查档案室的记录(通过 API Server 访问 etcd)。
- 如果发现实际状态和期望状态不一致(例如 Pod 少了一个):
- Controller Manager 会通过 API Server 发出新的指令。
- API Server 更新 etcd 中的状态,并通知相关组件(如 Kubelet)。
- Kubelet(工厂主管):接收指令,安排工人(Pod)去执行任务。
📌 类比总结
- 档案管理员(etcd)只保存文件,不会主动行动。
- 项目经理(Controller Manager)发现档案和现实不符,就写一份新任务单。
- 秘书(API Server)接收任务单,更新档案,并通知工厂主管(Kubelet)。
- 工厂主管安排工人(Pod)执行,最终让现实和档案保持一致。
💡 关键点
- etcd 是 被动存储,不负责发现问题。
- Controller Manager 是 主动检查者,发现偏差并触发修复。
- API Server 是 沟通枢纽,保证所有更新和指令都通过它进行。
💡 总结
- etcd 是 Kubernetes 的 核心数据库,保存所有集群状态。
- 它通过 Raft 算法保证一致性和高可用性。
- 没有 etcd,Kubernetes 就无法正常运行。

浙公网安备 33010602011771号