Резервное копирование и восстановление etcd
Служба etcd в кластере — это распределенное хранилище ключ-значение, отвечающее за хранение информации о конфигурации кластера. etcd развернут на всех узлах control plane кластера.
После установки плагина Alauda Container Platform Cluster Enhancer для конфигурации кластера автоматически создается ресурс EtcdBackupConfiguration. EtcdBackupConfiguration содержит сведения об источниках данных резервного копирования (control-узлы, пути резервного копирования), расположениях хранилища резервных данных, методах резервного копирования и т. д. Каждое выполнение резервного копирования на основе политики создает новую запись резервного копирования, что позволяет выполнять резервное копирование конфигурации кластера по запросу или автоматически по расписанию.
Содержание
Предварительные условияКак это работаетСправочник по настройкеРасписание и хранениеПросмотр записей резервного копированияС использованием UI платформыС использованием CLIКонфигурация резервного копирования S3Предварительные условияШаг 1: Создайте секрет S3Шаг 2: Настройте EtcdBackupConfigurationШаг 3: Проверьте резервное копированиеВосстановление etcdПредварительные условияШаг 1: Создайте резервную копию исходных данных и измените конфигурацию etcdШаг 2: Скопируйте снимок резервной копииШаг 3: Восстановите etcdШаг 4: Распределите восстановленные данныеШаг 5: Перезапустите компоненты кластераШаг 6: Проверьте восстановлениеУправление конфигурациейПредварительные условия
Чтобы включить резервное копирование etcd:
- Скачайте Alauda Container Platform Cluster Enhancer из клиентского портала .
- Загрузите пакет на платформу.
- Установите плагин в вашем кластере.
После установки ресурс EtcdBackupConfiguration автоматически создается.
Как это работает
- резервное копирование etcd предоставляется Alauda Container Platform Cluster Enhancer
- Поддерживаются как локальное хранилище, так и объектное хранилище, совместимое с S3. Локальные резервные копии записываются в каталог на каждом узле control plane — по умолчанию
/cpaas/backup. Размещайте этот каталог на выделенном диске с запасом для роста; хранение резервных копий в корневой файловой системе может вызвать нехватку дискового пространства по мере их накопления. При настройке хранилища S3 создается дополнительная копия в bucket 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, можно использовать 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
Чтобы включить хранилище S3 для резервных копий etcd, выполните следующие шаги:
Предварительные условия
- Alauda Container Platform Cluster Enhancer установлен в кластере.
Шаг 1: Создайте секрет S3
Подготовьте учетные данные для доступа к S3 и создайте secret Kubernetes в пространстве имен cpaas-system:
Шаг 2: Настройте EtcdBackupConfiguration
Измените ресурс EtcdBackupConfiguration, добавив поле remoteStorage с конфигурацией S3:
Шаг 3: Проверьте резервное копирование
Запустите резервное копирование etcd вручную, чтобы проверить конфигурацию:
После завершения резервного копирования убедитесь, что файлы резервных копий присутствуют в вашем bucket S3.
Восстановление etcd
Предупреждение:
- Эта операция выполняет аварийное восстановление кластера etcd. Она перезапишет существующие данные. Убедитесь, что у вас есть корректный снимок резервной копии, прежде чем продолжать.
- Эта процедура сопряжена со значительными рисками. Если вы не уверены в выполнении операции, обратитесь в техническую поддержку.
- В процессе восстановления Kubernetes API Server будет недоступен.
Предварительные условия
- Кластер Kubernetes развернут с использованием hostname (
kubectl get nodeпоказывает hostnames в качестве имен узлов). - Доступен снимок резервной копии 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на хосте: -
Проверьте, что pods Kubernetes работают корректно:
-
Перезапустите kubelet на всех узлах (как control plane, так и worker-узлах), чтобы обеспечить повторное подключение всех компонентов к восстановленному etcd:
Управление конфигурацией
Чтобы изменить конфигурацию резервного копирования etcd по умолчанию, обратитесь в техническую поддержку за подробными вариантами конфигурации и расширенными настройками.