Распределение нагрузки по узлам

Чтобы повысить отказоустойчивость системы во время сбоев хоста или зоны, настройте параметр topologySpreadConstraints. С его помощью контролируется равномерное распределение подов по топологии кластера, например по зонам доступности, узлам или регионам.

Перед настройкой параметра topologySpreadConstraints ознакомьтесь со всеми инструментами для размещения подов и с рекомендациями по их совместному использованию в статье «Продвинутые параметры ELMA365 Enterprise».

Пример настройки параметра topologySpreadConstraints

Параметр topologySpreadConstraints можно настроить в файле values-elma365.yaml. Перейдите к полю .Values.global.topologySpreadConstraints и задайте значения, например:

global:
 topologySpreadConstraints:
   - maxSkew: 1
     topologyKey: "kubernetes.io/hostname"
     whenUnsatisfiable: ScheduleAnyway

Где:

  • maxSkew — максимально допустимое различие в количестве подов между узлами;
  • topologyKey — ключ метаданных для определения топологии узлов, например kubernetes.io/hostname;
  • whenUnsatisfiable — алгоритм действий, если ограничения нельзя применить:
    • ScheduleAnyway — если подходящий узел не найден, под запустится на любом доступном узле;
    • DoNotSchedule — если подходящий узел не найден, под не запустится до тех пор, пока условия не выполнятся.

После настройки параметра примените его, как указано в статье «Изменение параметров ELMA365 Enterprise».

Значения по умолчанию для параметра topologySpreadConstraints

Если вы не установили параметр topologySpreadConstraints, для равномерного распределения подов применяется конфигурация:

topologySpreadConstraints:
- maxSkew: 1
 topologyKey: topology.kubernetes.io/zone
 whenUnsatisfiable: ScheduleAnyway
 labelSelector:
   matchLabels:
     app: <service name>
- maxSkew: 1
 topologyKey: kubernetes.io/hostname
 whenUnsatisfiable: ScheduleAnyway
 labelSelector:
   matchLabels:
     app: <service name>