从一次 Webhook 拖垮集群聊起:彻底搞懂 K8s 架构设计
一个 MutatingAdmissionWebhook 后端挂掉导致整个集群’假死’,排查过程串联起 K8s 所有核心组件的职责与协作:API Server 的请求处理链、etcd 的唯一真相源角色、Controller Manager 的 Reconcile 循环、Scheduler 的选房策略、Kubelet 的工地执行、kube-proxy 的网络粘合。
一个 MutatingAdmissionWebhook 后端挂掉导致整个集群’假死’,排查过程串联起 K8s 所有核心组件的职责与协作:API Server 的请求处理链、etcd 的唯一真相源角色、Controller Manager 的 Reconcile 循环、Scheduler 的选房策略、Kubelet 的工地执行、kube-proxy 的网络粘合。
管理 200+ 集群时 CR 大量累积触发 etcd space quota,所有写操作报 mvcc: database space exceeded。排查过程揭开 etcd 的全部秘密:Raft 共识如何保证一致性、MVCC 如何实现乐观并发控制、watch 如何驱动整个 K8s 事件循环,以及 compaction 和 defrag 为什么要分两步。