Резервное копирование и восстановление etcd
Сервис etcd в кластере представляет собой распределённое хранилище ключ-значение, ответственное за хранение информации о конфигурации кластера. etcd развёрнут на всех узлах управляющей плоскости кластера.
После установки плагина Alauda Container Platform Cluster Enhancer автоматически создаётся ресурс EtcdBackupConfiguration для конфигурации кластера. EtcdBackupConfiguration содержит информацию об источниках данных для резервного копирования (узлы управления, пути для бэкапа), местах хранения резервных данных, методах резервного копирования и прочее. Каждое выполнение резервного копирования по политике создаёт новую запись бэкапа, что позволяет выполнять резервное копирование конфигурации кластера по запросу или автоматически по расписанию.
Содержание
Предварительные требованияКак это работаетСправочник по конфигурацииРасписание и хранениеПросмотр записей резервного копированияИспользование UI платформыИспользование CLIКонфигурация резервного копирования в S3Предварительные требованияШаг 1: Создайте секрет S3Шаг 2: Настройте EtcdBackupConfigurationШаг 3: Проверьте резервное копированиеВосстановление etcdПредварительные требованияШаг 1: Создайте резервную копию исходных данных и измените конфигурацию etcdШаг 2: Скопируйте снимок резервной копииШаг 3: Восстановите etcdШаг 4: Распространите восстановленные данныеШаг 5: Перезапустите компоненты кластераШаг 6: Проверьте восстановлениеУправление конфигурациейПредварительные требования
Для включения резервного копирования etcd:
- Скачайте Alauda Container Platform Cluster Enhancer с Customer Portal.
- Загрузите пакет на платформу.
- Установите плагин в ваш кластер.
После установки ресурс EtcdBackupConfiguration создаётся автоматически.
Как это работает
- Резервное копирование etcd предоставляется через Alauda Container Platform Cluster Enhancer.
- Поддерживается как локальное хранилище, так и объектное хранилище, совместимое с S3. По умолчанию резервные копии сохраняются локально в
/cpaas. При настройке S3-хранилища создаётся дополнительная копия в S3-бакете; локальные бэкапы продолжают создаваться. - Для кластеров, работающих на Immutable OS, использование S3-хранилища обязательно (локальное хранилище не поддерживается).
Справочник по конфигурации
Вы можете настроить ресурс EtcdBackupConfiguration для кастомизации расписания резервного копирования, политики хранения и параметров хранилища.
Расписание и хранение
schedule: Определяет частоту резервного копирования с использованием стандартного синтаксиса cron.- Пример:
0 0 * * *(ежедневное выполнение в полночь).
- Пример:
localStorage: Настройка локального хранилища для бэкапов.path: Каталог на хосте, где сохраняются резервные копии. По умолчанию/cpaas.ttl: Время хранения файлов резервных копий в секундах. Резервные копии старше этого срока будут автоматически удалены.- Пример:
7776000(примерно 90 дней).
- Пример:
paused: Установите вtrueдля временной приостановки автоматического резервного копирования без удаления конфигурации.
Пример конфигурации:
Просмотр записей резервного копирования
Для просмотра записей резервного копирования etcd можно использовать UI платформы или командную строку.
Использование UI платформы
- В левой навигационной панели выберите Operation Center > Monitor > Dashboards.
- Нажмите Switch в правом верхнем углу страницы.
- Выберите Cluster → etcd backup для просмотра записей резервного копирования etcd.
Использование CLI
Проверить статус и историю резервных копий можно, просмотрев поле status ресурса EtcdBackupConfiguration:
В выводе содержится список status.records с деталями каждого бэкапа, включая:
backupTimestamp: Время создания резервной копии.fileName: Имя файла резервной копии (например,snapshot-etcd-<date>-<time>-<ip>.tar).result: Результат операции резервного копирования (например,Success).
Конфигурация резервного копирования в S3
Для включения хранения резервных копий etcd в S3 выполните следующие шаги:
Предварительные требования
- Плагин Alauda Container Platform Cluster Enhancer установлен в кластере.
Шаг 1: Создайте секрет S3
Подготовьте ваши учётные данные доступа к S3 и создайте секрет Kubernetes в пространстве имён cpaas-system:
Шаг 2: Настройте EtcdBackupConfiguration
Измените ресурс EtcdBackupConfiguration, добавив поле remoteStorage с конфигурацией S3:
Шаг 3: Проверьте резервное копирование
Выполните ручное резервное копирование etcd для проверки конфигурации:
После завершения резервного копирования убедитесь, что файлы бэкапа появились в вашем S3-бакете.
Восстановление etcd
Внимание:
- Эта операция выполняет аварийное восстановление кластера etcd. Существующие данные будут перезаписаны. Убедитесь, что у вас есть валидный снимок резервной копии перед началом.
- Процедура связана с существенными рисками. Если вы не уверены в своих действиях, обратитесь в техническую поддержку.
- Во время восстановления API Server Kubernetes будет недоступен.
Предварительные требования
- Kubernetes кластер развернут с использованием имён хостов (в выводе
kubectl get nodeимена узлов — это имена хостов). - Имеется снимок резервной копии etcd.
- Кластер работает некорректно из-за отказа узлов etcd (например, более половины узлов управляющей плоскости недоступны).
- Данная процедура восстановления предназначена для кластера с 3 узлами управляющей плоскости. Если в вашем кластере 5 и более узлов управляющей плоскости, обратитесь в техническую поддержку.
Шаг 1: Создайте резервную копию исходных данных и измените конфигурацию etcd
Выполните следующие команды на всех узлах управляющей плоскости:
Примечание: Проверьте правильность отступов для --initial-cluster-state=existing в файле /etc/kubernetes/manifests/etcd.yaml.
Шаг 2: Скопируйте снимок резервной копии
Скопируйте последний снимок резервной копии etcd в каталог /tmp на первом узле управляющей плоскости и переименуйте его в snapshot.db.
Шаг 3: Восстановите etcd
Выполните следующий скрипт на первом узле управляющей плоскости для восстановления снимка.
Примечание: Скрипт рассчитан на кластер с 3 узлами управляющей плоскости. Если у вас 5 и более узлов, обратитесь в техническую поддержку.
После выполнения скрипта в каталоге /root появятся три директории (etcd_$host).
Шаг 4: Распространите восстановленные данные
-
Передайте каталоги с восстановленными данными соответствующим узлам управляющей плоскости. Используйте
scpили аналогичный инструмент для копирования директорий, созданных на Шаге 3 (/root/etcd_<hostname>), с первого узла на остальные.Например, передача на etcd-2 и etcd-3:
-
Восстановите данные в каталог данных etcd (
/var/lib/etcd) на каждом узле управляющей плоскости.
Шаг 5: Перезапустите компоненты кластера
Выполните следующие команды на всех узлах управляющей плоскости:
Шаг 6: Проверьте восстановление
-
Проверьте состояние кластера etcd. Выполните команду внутри любого пода etcd или используя бинарник
etcdctlна хосте: -
Проверьте, что поды Kubernetes работают корректно:
-
Перезапустите kubelet на всех узлах (как управляющей плоскости, так и рабочих), чтобы все компоненты переподключились к восстановленному etcd:
Управление конфигурацией
Для изменения стандартной конфигурации резервного копирования etcd обратитесь в техническую поддержку для получения подробной информации о параметрах конфигурации и расширенных настройках.