etcd: mvcc: database space exceeded, запись в кластер недоступна

Viewed 51

Любые изменения в кластере завершаются ошибкой etcdserver: mvcc: database space exceeded, а etcdctl endpoint status показывает аварийное состояние NOSPACE.

1 Answers

База etcd упёрлась в квоту --quota-backend-bytes и перешла в режим только для чтения. Порядок действий:

  1. Найдите источник роста: контроллер или Deployment, который постоянно создаёт объекты, лавина событий (events) и т. п. Остановите его, иначе база заполнится снова.
  2. Сделайте резервную копию etcd, затем выполните дефрагментацию членов кластера по одному (лидер последним) и снимите аварийное состояние командой etcdctl alarm disarm.
  3. Если места всё равно не хватает, увеличьте квоту: --quota-backend-bytes в /etc/kubernetes/manifests/etcd.yaml на каждом master-узле, затем задайте то же значение в параметре etcd.maxDbSize ModuleConfig control-plane-manager. В состоянии NOSPACE ModuleConfig изменить нельзя, поэтому сначала правьте манифест.

Точные команды и порядок действий описаны в документации: что делать, если объём базы etcd достиг лимита и как выполнить дефрагментацию etcd.

Для профилактики следите за алертами D8KubeEtcdDatabaseSizeCloseToTheLimit и D8EtcdExcessiveDatabaseGrowth.