ETCD ID Mismatch в Kubernetes

ETCD — это key-value хранилище, которое Kubernetes использует для состояния кластера. Иногда в логах ETCD можно увидеть ошибку:

2025-11-11 12:13:10.134330 E | rafthttp: request cluster ID mismatch (got fc5dec74b3dcf6fa want 4e38d7b9b94fe83c)

Эта ошибка называется ETCD ID Mismatch. Она появляется, когда член кластера ETCD имеет другой ID, чем ожидает кластер.

Причины

  • Неправильное восстановление из бэкапа.
  • Копирование директорий данных ETCD между узлами.
  • Переустановка узла без очистки старого состояния ETCD.
  • Ошибки конфигурации после масштабирования или failover.

Как исправить

Шаг 1: Определите проблемный узел

etcdctl member list

Найдите узел, чей ID не совпадает с ожидаемым.

Шаг 2: Удалите проблемного участника

etcdctl member remove <member-ID>

Шаг 3: Добавьте его снова корректно

etcdctl member add <member-name> --peer-urls=https://<peer-IP>:2380

Step 4: Перезапустите сервис ETCD на проблемном узле.

systemctl restart etcd

⚠️ Внимание: изменения в кластере ETCD могут привести к потере данных, если делать их неправильно. Всегда делайте бэкап перед изменениями.

Best Practices

  • Используйте снимки (snapshots) ETCD и корректно восстанавливайте их.
  • Не копируйте директории данных между узлами.
  • Следите за логами ETCD для раннего обнаружения проблем с ID.

Следуя этим шагам, вы сможете восстановить кластер ETCD после ошибки ID mismatch и вернуть стабильность.