Я пытаюсь написать конфигурацию автомасштабирования для 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