Резервное копирование и восстановление etcd
Служба etcd в кластере — это распределённое хранилище ключ-значение, отвечающее за хранение информации о конфигурации кластера. etcd развёртывается на всех узлах control plane кластера.
После установки плагина Alauda Container Platform Cluster Enhancer для конфигурации кластера автоматически создаётся ресурс EtcdBackupConfiguration. EtcdBackupConfiguration содержит сведения об источниках данных для резервного копирования (control-узлы, пути резервного копирования), расположениях хранилища резервных данных, методах резервного копирования и т. д. Каждое выполнение резервного копирования на основе политики создаёт новую запись резервного копирования, что позволяет выполнять резервное копирование конфигурации кластера по требованию или автоматически через заданные интервалы.
Содержание
Предварительные условияПринцип работыСправочник по конфигурацииРасписание и хранениеПросмотр записей резервного копированияЧерез пользовательский интерфейс платформыЧерез CLIКонфигурация резервного копирования S3Предварительные условияШаг 1: Создание Secret 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. Локальные резервные копии записываются в каталог на каждом узле control plane — по умолчанию
/cpaas/backup. Рекомендуется размещать этот каталог на выделенном диске с запасом по объёму; хранение резервных копий в корневой файловой системе может привести к дефициту дискового пространства по мере их накопления. При настройке хранилища S3 создаётся дополнительная копия в бакете S3; локальные резервные копии продолжат создаваться. - Для кластеров, работающих на Immutable OS, хранилище S3 обязательно (локальное хранилище не поддерживается)
Справочник по конфигурации
Вы можете настроить ресурс EtcdBackupConfiguration, чтобы задать расписание резервного копирования, политики хранения и параметры хранилища.
Расписание и хранение
schedule: Определяет частоту резервного копирования с использованием стандартного синтаксиса cron.- Пример:
0 0 * * *(выполнять резервное копирование ежедневно в полночь).
- Пример:
localStorage: Настраивает локальное хранилище резервных копий.path: Каталог на каждом узле control plane, где хранятся резервные копии. По умолчанию —/cpaas/backup. Укажите каталог, расположенный на выделенном расширяемом диске; см. примечание о хранилище ниже.ttl: Период хранения файлов резервных копий в секундах. Резервные копии, старше этого срока, будут автоматически удаляться.- Пример:
7776000(примерно 90 дней).
- Пример:
paused: Установите значениеtrue, чтобы временно приостановить автоматическое резервное копирование без удаления конфигурации.
Спланируйте выделенное хранилище для локальных резервных копий до включения резервного копирования etcd. Локальные резервные копии накапливаются на узлах control plane и хранятся до истечения их ttl, поэтому каталог должен находиться на диске, размер которого соответствует вашей политике хранения и который можно увеличить позже — не в корневой файловой системе, где растущие резервные копии могут привести к дефициту дискового пространства и нестабильной работе узла.
Путь по умолчанию /cpaas/backup подходит только в том случае, если /cpaas смонтирован на отдельном диске достаточного размера на каждом узле control plane. Если /cpaas является частью корневой файловой системы, задайте для path каталог, расположенный на выделенном диске, который вы подготовили, либо смонтируйте /cpaas на выделенный диск перед использованием значения по умолчанию.
Пример конфигурации:
Просмотр записей резервного копирования
Чтобы просмотреть записи резервного копирования etcd, вы можете использовать пользовательский интерфейс платформы или командную строку.
Через пользовательский интерфейс платформы
- В левой панели навигации нажмите 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
Чтобы включить хранилище S3 для резервных копий etcd, выполните следующие шаги:
Предварительные условия
- В кластер установлен Alauda Container Platform Cluster Enhancer.
Шаг 1: Создание Secret S3
Подготовьте учётные данные доступа к S3 и создайте Secret Kubernetes в namespace cpaas-system:
Шаг 2: Настройка EtcdBackupConfiguration
Измените ресурс EtcdBackupConfiguration, добавив поле remoteStorage с конфигурацией S3:
Шаг 3: Проверка резервного копирования
Запустите ручное резервное копирование etcd, чтобы проверить конфигурацию:
После завершения резервного копирования убедитесь, что файлы резервных копий существуют в вашем бакете S3.
Восстановление etcd
Предупреждение:
- Эта операция выполняет аварийное восстановление кластера etcd. Она перезапишет существующие данные. Перед продолжением убедитесь, что у вас есть действительный снимок резервной копии.
- Эта процедура связана со значительными рисками. Если вы не уверены в выполняемой операции, обратитесь в техническую поддержку.
- В процессе восстановления Kubernetes API Server будет недоступен.
Предварительные условия
- Кластер Kubernetes развёрнут с использованием hostname (
kubectl get nodeотображает hostname в качестве имён узлов). - Доступен снимок резервной копии etcd.
- Кластер работает некорректно из-за отказа узлов etcd (например, не работают более половины узлов control plane).
- Эта процедура восстановления предназначена специально для кластера с 3 узлами control plane. Если в вашем кластере 5 или более узлов control plane, обратитесь в техническую поддержку за помощью.
Шаг 1: Резервное копирование исходных данных и изменение конфигурации etcd
Выполните следующие команды на всех узлах control plane:
Примечание: Проверьте отступ для --initial-cluster-state=existing в /etc/kubernetes/manifests/etcd.yaml.
Шаг 2: Копирование снимка резервной копии
Скопируйте последний снимок резервной копии etcd в каталог /tmp на первом узле control plane и назовите его snapshot.db.
Шаг 3: Восстановление etcd
Выполните следующий скрипт на первом узле control plane, чтобы восстановить снимок.
Примечание: Следующий скрипт предполагает кластер с 3 узлами control plane. Если в вашем кластере 5 или более узлов, обратитесь в техническую поддержку.
После завершения работы скрипта в каталоге /root будут созданы три каталога (etcd_$host).
Шаг 4: Распространение восстановленных данных
-
Передайте каталоги с восстановленными данными на соответствующие узлы control plane. Используйте
scpили аналогичный инструмент, чтобы скопировать каталоги, созданные на шаге 3 (/root/etcd_<hostname>), с первого узла на остальные.Например, передайте данные на etcd-2 и etcd-3:
-
Восстановите данные в каталог данных etcd (
/var/lib/etcd) на каждом узле control plane.
Шаг 5: Перезапуск компонентов кластера
Выполните следующие команды на всех узлах control plane:
Шаг 6: Проверка восстановления
-
Проверьте, что кластер etcd работает нормально. Эту команду можно выполнить внутри любого pod
etcdили с помощью бинарного файлаetcdctlна хосте: -
Проверьте, что pod'ы Kubernetes работают корректно:
-
Перезапустите kubelet на всех узлах (как control plane, так и worker), чтобы обеспечить повторное подключение всех компонентов к восстановленному etcd:
Управление конфигурацией
Чтобы изменить конфигурацию резервного копирования etcd по умолчанию, обратитесь в техническую поддержку для получения подробных параметров конфигурации и расширенных настроек.