Развертывание с высокой доступностью
Для производственных сред рекомендуется разворачивать систему Connectors в конфигурации с высокой доступностью (HA), чтобы обеспечить непрерывность обслуживания и отказоустойчивость.
Содержание
Обзор основных шаговНастройка ReplicasConnectorsCoreConnectorsGitConnectorsOCIConnectorsHarborКомпоненты без WorkloadsВстроенная pod Anti-AffinityНастройка правил AffinityОбзор основных шагов
Настройка Connector с высокой доступностью включает три шага:
- Установите replicas ≥ 2 — укажите
spec.workloads[].replicasдля каждого компонента Connectors. Минимально настройте ConnectorsCore (api, controller-manager, proxy) и любые используемые компоненты плагинов. - Положитесь на встроенную anti-affinity — система автоматически добавляет правила pod anti-affinity
preferredDuringSchedulingIgnoredDuringExecution, чтобы реплики распределялись по узлам без дополнительной настройки. - При необходимости настройте affinity для многозональных кластеров — переопределите
spec.workloads[].template.spec.affinity, чтобы обеспечить распределение по зонам с использованиемrequiredDuringSchedulingIgnoredDuringExecution, если это требуется.
Подробнее о каждом шаге рассказано ниже.
Настройка Replicas
Вы можете увеличить количество реплик для каждой рабочей нагрузки, чтобы обеспечить высокую доступность. Это делается через поле workloads в спецификации компонента. Для производственных сред мы рекомендуем настраивать как минимум 2 реплики для каждой рабочей нагрузки, чтобы обеспечить непрерывность обслуживания при отказах узлов или при rolling update.
Ниже приведены конкретные примеры для каждого основного компонента connector:
ConnectorsCore
ConnectorsCore включает три основные рабочие нагрузки: API server, controller manager и proxy. Для высокой доступности настройте все три с несколькими репликами:
Спустя некоторое время у всех pod компонента connectors-core количество реплик равно 2, за исключением connectors-csi.
ConnectorsGit
ConnectorsGit запускает один deployment плагина для интеграции с Git Server:
Спустя некоторое время у всех pod компонента connectors-git количество реплик равно 2.
ConnectorsOCI
ConnectorsOCI запускает один deployment плагина, который отвечает за интеграцию с OCI registry:
Спустя некоторое время у всех pod компонента connectors-oci количество реплик равно 2.
ConnectorsHarbor
ConnectorsHarbor запускает один deployment плагина для функций, специфичных для Harbor:
Спустя некоторое время у всех pod компонента connectors-harbor количество реплик равно 2.
Компоненты без Workloads
Остальные компоненты connector не имеют рабочих нагрузок типа Deployment и, следовательно, не требуют настройки реплик.
Встроенная pod Anti-Affinity
Система включает встроенные правила pod anti-affinity, чтобы обеспечить распределение реплик по разным узлам. По умолчанию система использует preferredDuringSchedulingIgnoredDuringExecution с весом 100, что означает: scheduler будет по возможности размещать pod на разных узлах, но при отсутствии других вариантов все равно сможет запланировать их на одном узле.
Такая конфигурация по умолчанию обеспечивает:
- распределение pod по разным узлам, когда это возможно
- возможность планирования deployment даже при ограниченном числе узлов в кластере
- автоматический failover, когда узел становится недоступен
Настройка правил Affinity
Если правила affinity по умолчанию не соответствуют вашим требованиям, вы можете переопределить их через конфигурацию workloads. Поле template.spec.affinity позволяет задать собственные правила affinity.
Для многозональных кластеров можно настроить zone-aware scheduling, чтобы распределять pod по availability zones. В следующем примере используется requiredDuringSchedulingIgnoredDuringExecution для принудительного распределения по зонам в сочетании с preferredDuringSchedulingIgnoredDuringExecution, чтобы внутри каждой зоны предпочитать распределение по узлам:
Такая конфигурация обеспечивает:
- строгое распределение pod по разным availability zones (жесткое требование)
- внутри одной зоны pod по возможности планируются на разных узлах (мягкое требование)
- устойчивость как к отказам уровня зоны, так и к отказам уровня узла