Как сделать резервное копирование и (на определенный момент времени) восстановление для etcd?
Я понимаю, что etcd хранит свои данные в каком-то распределенном журнале.
Существуют ли инструменты для резервного копирования этих журналов и восстановления из них? Поддерживает ли это также восстановление на определенный момент времени (и как далеко мы можем зайти)?
Дополнительные моменты: содержат ли эти журналы также контрольные журналы (т. Е. Кто обновил данные, предполагая, что установлена аутентификация клиента)?
3 ответа
Я думаю, что это может ответить на ваш вопрос: https://labs.consol.de/kubernetes/2018/05/25/kubeadm-backup.html
Он выполняет автоматическое резервное копирование etcd как Cronjob, так что, если у вас есть резервное копирование раз в час, это будет похоже на момент восстановления?
Вы можете также использовать Heptio ARK по расписанию, чтобы сделать подобное, я полагаю. https://www.youtube.com/watch?v=qRPNuT080Hk
Один из подходов состоит в том, чтобы прочитать все существующие ключи в файл, а затем использовать этот файл, считывая и добавляя все ключи для восстановления. Существует решение с открытым исходным кодом, которое использует этот подход здесь https://github.com/fanhattan/etcd-backup. Я не думаю, что контрольные записи включены.
Если вы хотите сделать резервную копию etcd в формате JSON, которую можно легко восстановить в любом кластере, вы можете использовать эту простую утилиту резервного копирования и восстановления: simple-etcd-backup-restore
Эта утилита упрощает и ускоряет процесс резервного копирования и восстановления. Вы также можете сжимать/распаковывать файл резервной копии и загружать/загружать его в/из корзины AWS S3. Размер файлов резервных копий также становится меньше. Данные в файлах резервных копий также остаются читаемыми.