k8s-etcd-slow

Kubernetes etcd 变慢的定位与修复

现象

apiserver 延迟升高、请求超时,etcd leader 频繁切换,日志出现 slow apply、fsync 慢或 leader changed。严重时整个控制面不可用。

快速定位

etcdctl --endpoints=https://127.0.0.1:2379 endpoint health
etcdctl --endpoints=https://127.0.0.1:2379 endpoint status -w table
etcdctl --endpoints=https://127.0.0.1:2379 check perf

节点:

journalctl -u etcd --since '30 min ago' | tail -100
iostat -x 1 5
df -h
free -m

监控重点:etcd_disk_wal_fsync_duration_seconds、etcd_disk_backend_commit_duration_seconds、etcd_server_leader_changes_seen_total。

常见根因

  1. 磁盘 fsync 慢:机械盘、云盘 IOPS 不足或与其他负载争抢。
  2. 网络延迟/丢包,成员间心跳和复制变慢。
  3. 数据库过大、历史版本多,未 compact/defrag。
  4. watch 数量过多或客户端频繁重连。
  5. CPU/内存不足,或与其他控制面组件争抢资源。
  6. 成员时钟偏差或证书问题。

修复

相关命令