我想为你解决哪些问题?

在工作和参与 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 优化,做到知其然知其所以然。