Рейтинг:2

Обеспечение как минимум одного ingress-nginx на узел kubernetes

флаг es

Я пытаюсь написать конфигурацию автомасштабирования для ingress-nginx, развернутую через диаграмму helm.

мои цели:

  • 3 минимум реплики (потому что у меня минимум 3 узла)
  • обеспечить только один nginx на узел, но:
  • быть эластичным, если автомасштабирование говорит, что нам нужно 4, nginx позволяет узлу в кластере иметь 2
  • если добавляется четвертый узел, убедитесь, что новый nginx создан

https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L326 https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L343 https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L256

Я пробовал играть с приведенными ниже настройками и их комбинацией, но всегда что-то не так, например, прямо сейчас у меня есть четвертый nginx, который по какой-то причине хочет появиться, но не может из-за правила антиаффинности.

Может ли кто-нибудь поделиться некоторыми идеями, как этого добиться?

  • всегда один nginx на узел, если создается новый узел, создается новый nginx
  • сохранить автомасштабирование, если hpa хочет создать четвертый nginx в кластере из 3 узлов, он должен сделать это бесплатно.
      количество реплик: 3
      сходство:
        подантиаффинити:
          requiredDuringSchedulingIgnoredDuringExecution:
          - селектор меток:
              matchExpressions:
              - ключ: app.kubernetes.io/имя
                оператор: В
                ценности:
                - вход-nginx
              - ключ: app.kubernetes.io/instance
                оператор: В
                ценности:
                - вход-nginx
              - ключ: app.kubernetes.io/component
                оператор: В
                ценности:
                - контроллер
            topologyKey: "kubernetes.io/hostname"

      топологияSpreadConstraints:
        - макс. перекос: 1
          ключ топологии: topology.kubernetes.io/zone
          whenUnsatisfiable: ScheduleAnyway
          селектор меток:
            метки соответствия:
              app.kubernetes.io/экземпляр: вход-nginx

      автомасштабирование:
        включено: правда
        минРеплики: 3
        максимальное количество реплик: 6
        targetCPUUtilizationPercentage: 75
        targetMemoryUtilizationPercentage: 100
mario avatar
флаг cm
Если вам нужен только один экземпляр nginx на узел, не будет ли проще развернуть его как [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)?
John Smith avatar
флаг es
возможно ли развернуть как daemonset через диаграмму руля?
John Smith avatar
флаг es
только что узнал https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L174
John Smith avatar
флаг es
спасибо за подсказку, кажется работает, если вы хотите написать официальный ответ, я приму его
Рейтинг:1
флаг cm

Если вам нужен только один экземпляр nginx на узел, не проще ли было бы развернуть его как набор демонов ?

Как вы можете прочитать в официальных документах:

А набор демонов гарантирует, что все (или некоторые) узлы запускают копию пода. Как ноды добавляются в кластер, к ним добавляются поды. Поскольку узлы удалены из кластера, эти поды удаляются сборщиком мусора. Удаление DaemonSet очистит созданные им поды.

И это похоже на правильное решение в вашем случае использования.

Как вы правильно заметили в своем комментарии, официальная диаграмма nginx-ingress могут быть развернуты как Развертывание или как набор демонов. Это можно сделать регулируя его значения.yaml файл.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.