Развертывание кластера Etcd
Содержание
Обзор
В этом руководстве показано, как развернуть высокодоступный кластер etcd с помощью etcd operator. Etcd — это распределённое хранилище ключ-значение, обеспечивающее надёжное хранение данных для распределённых систем, часто используемое в качестве хранилища данных управляющей плоскости Kubernetes.
Для развертывания кластера etcd необходимо установить плагин кластера Alauda Build Of etcd Operator, пожалуйста, обратитесь к разделу Install
Предварительные требования
Перед развертыванием кластера etcd убедитесь, что выполнены следующие условия:
- Рабочий кластер Kubernetes с установленным etcd operator
- Установлен и настроен cert-manager в вашем кластере
- Достаточно ресурсов для кластера etcd (CPU, память и хранилище)
- Настроен класс хранилища для постоянных томов (например,
sc-topolvm) - Инструмент CLI
kubectlнастроен для доступа к вашему кластеру
Управление сертификатами
Etcd требует TLS-сертификаты для безопасного взаимодействия между участниками кластера. Вы можете либо сгенерировать новые сертификаты с помощью cert-manager, либо использовать существующие.
Параметры, используемые в этом разделе:
{ROOT_CA_NAME}: Имя корневого CA сертификата и секрета (например,etcd-root-ca){CA_ISSUER_NAME}: Имя Issuer в cert-manager (например,etcd-ca-issuer)
Вариант 1: Создание CA с помощью Cert-Manager
Если у вас нет существующего CA, вы можете создать его с помощью cert-manager.
Шаг 1: Создание секрета CA
Создайте ресурс Certificate, который сгенерирует корневой CA:
Примените эту конфигурацию:
Шаг 2: Создание Issuer для корневого CA
После создания секрета CA создайте Issuer, который на него ссылается:
Примените конфигурацию Issuer:
Проверьте готовность Issuer:
Вариант 2: Использование существующего CA
Если у вас уже есть сертификат CA, сохранённый как секрет Kubernetes, вы можете создать Issuer напрямую:
Примените конфигурацию:
Процедура развертывания
Шаг 1: Определение версии Etcd
Сначала определите подходящую версию etcd. Вы можете проверить версию, используемую вашим глобальным кластером:
Эта команда выведет версию etcd, например: v3.5.21
Шаг 2: Создание ресурса EtcdCluster
Создайте кастомный ресурс EtcdCluster с нужной конфигурацией:
Замените заполнители:
{ETCD_CLUSTER_NAME}: Имя вашего кластера etcd{SC_NAME}: Имя вашего класса хранилища{CA_ISSUER_NAME}: Имя вашего Issuer cert-manager{ETCD_VERSION}: Версия etcd (например,v3.5.21)
Примените конфигурацию:
Шаг 3: Мониторинг статуса развертывания
Отслеживайте создание и запуск StatefulSet:
Дождитесь, пока все поды перейдут в состояние Running и будут готовы (это может занять несколько минут).
Проверка
После развертывания проверьте, что кластер etcd работает корректно и здоров:
Установите следующие переменные:
{ETCD_CLUSTER_NAME}: Имя вашего кластера etcd (такое же, как в ресурсе EtcdCluster){NAMESPACE}: Пространство имён, где развернут etcd (например,cpaas-system)
Проверка состояния кластера
Подключитесь к одному из подов etcd и проверьте состояние кластера:
Проверка участников кластера
Выведите список всех участников кластера:
Тест операций с данными
Выполните простую запись и чтение:
Параметры конфигурации
Размер кластера
Поле size определяет количество участников etcd. Для продакшн-среды:
- 3 участника: Стандартная конфигурация, выдерживает 1 отказ
- 5 участников: Высокая доступность, выдерживает 2 отказа
- 7 участников: Максимально рекомендуемое, выдерживает 3 отказа
Всегда используйте нечётное количество участников для поддержания кворума при отказах.
Конфигурация хранилища
- storageClassName: Укажите ваш класс хранилища, поддерживающий динамическое выделение
- volumeSizeRequest: Начальный размер постоянного тома
- volumeSizeLimit: Максимальный размер, до которого может увеличиваться том (если поддерживается классом хранилища)
Конфигурация TLS
- validityDuration: Период действия сертификата (рекомендуется: 8760h или 1 год)
- Сертификаты автоматически обновляются cert-manager до истечения срока действия
Устранение неполадок
Параметры, используемые в этом разделе:
{ETCD_CLUSTER_NAME}: Имя вашего кластера etcd{POD_NAME}: Имя конкретного пода (получить черезkubectl get pods){OTHER_POD_IP}: IP-адрес другого пода (получить черезkubectl get pods -o wide){ROOT_CA_NAME}: Имя корневого CA сертификата{CA_ISSUER_NAME}: Имя Issuer cert-manager
Поды не запускаются
Если поды не запускаются, проверьте следующее:
Распространённые проблемы:
- Недостаточно места в хранилище
- Класс хранилища не найден
- Issuer сертификатов не готов
- Ограничения ресурсов (CPU/память)
Кластер не формирует кворум
Если кластер не может сформировать кворум:
Проблемы с сертификатами
Проверьте корректность выдачи сертификатов:
Рекомендации по лучшим практикам
- Стратегия резервного копирования: Реализуйте регулярное резервное копирование etcd для восстановления после сбоев
- Мониторинг: Настройте мониторинг и оповещения о состоянии кластера
- Ограничения ресурсов: Настройте соответствующие запросы и лимиты ресурсов
- Сетевые политики: Внедрите сетевые политики для защиты коммуникаций etcd
- Регулярное обслуживание: Поддерживайте актуальную версию etcd и контролируйте использование хранилища