我想为你解决哪些问题?
在工作和参与 etcd 社区贡献的过程中,我经常会收到各类问题咨询,同时自己也经历了各种问题。我相信你在使用 Kubernetes、etcd 的过程中,很可能也会遇到下面这些典型问题:
- etcd Watch 机制能保证事件不丢吗?(原理类)
- 哪些因素会导致你的集群 Leader 发生切换? (稳定性类)
- 为什么基于 Raft 实现的 etcd 还可能会出现数据不一致?(一致性类)
- 为什么你删除了大量数据,db 大小不减少?为何 etcd 社区建议 db 大小不要超过 8G?(db 大小类)
- 为什么集群各节点磁盘 I/O 延时很低,写请求也会超时?(延时类)
- 为什么你只存储了 1 个几百 KB 的 key/value, etcd 进程却可能耗费数 G 内存? (内存类)
- 当你在一个 namespace 下创建了数万个 Pod/CRD 资源时,同时频繁通过标签去查询指定 Pod/CRD 资源时,APIServer 和 etcd 为什么扛不住?(最佳实践类)

拆解法学习一门技术
-
能知道什么是 etcd,了解它的基本读写原理、核心特性和能解决什么问题。
-
独立判断 etcd 是否适合你的业务场景,并能设计出良好的存储结构,避免 expensive request。
-
使用 Kubernetes 的过程中,知道你的每个操作背后的 etcd 是如何工作的,并遵循 Kubernetes/etcd 最佳实践,让你的 Kubernetes 集群跑得更快更稳。
-
运维 etcd 集群的时候,你能知道 etcd 集群核心监控指标,了解常见的坑,制定良好的巡检、监控策略,及时发现、规避问题,避免事故的产生。
-
遇到 etcd 问题时,能自己分析为什么会出现这样的错误,并知道如何解决,甚至给社区提 PR 优化,做到知其然知其所以然。