Încerc să scriu o configurație de autoscaling pentru ingress-nginx, implementată prin diagrama helm.
obiectivele mele sunt:
- 3 replici minime (pentru ca am minim 3 noduri)
- asigurați doar un singur nginx per nod, dar:
- fi elastic, dacă autoscale spune că avem nevoie de 4 nginx permite ca un nod din cluster să aibă 2
- dacă se adaugă un al patrulea nod, asigurați-vă că este generat un nou 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
Am încercat să joc cu setările de mai jos și o combinație dintre ele, dar întotdeauna este ceva în neregulă, de exemplu acum am un al patrulea nginx care vrea să apară dintr-un motiv oarecare și nu poate din cauza regulii antiafinității.
Poate cineva să împărtășească câteva idei despre cum se poate realiza asta?
- întotdeauna un nginx per nod, dacă se creează un nou nod, se creează un nou nginx
- păstrează scalarea automată, dacă hpa dorește să genereze un al patrulea nginx pe un cluster cu 3 noduri, ar trebui să fie liber să facă acest lucru
Număr de replici: 3
afinitate:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- cheie: app.kubernetes.io/name
operator: In
valori:
- ingress-nginx
- cheie: app.kubernetes.io/instance
operator: In
valori:
- ingress-nginx
- cheie: app.kubernetes.io/component
operator: In
valori:
- controlor
topologyKey: „kubernetes.io/hostname”
topologySpreadConstraints:
- maxSkew: 1
topologyKey: topology.kubernetes.io/zone
când Nesatisfăcător: ProgramAnyway
labelSelector:
matchLabels:
app.kubernetes.io/instance: ingress-nginx
autoscaling:
activat: adevărat
minReplica: 3
maxReplicas: 6
targetCPUUtilizationProcentage: 75
targetMemoryUtilizationPercentage: 100