Puncte:2

Asigurarea a cel puțin un ingress-nginx per nod kubernetes

drapel es

Î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
mario avatar
drapel cm
Dacă aveți nevoie de o singură instanță nginx per nod, nu ar fi mai ușor să o implementați ca [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/)?
John Smith avatar
drapel es
este posibil să se implementeze ca daemonset prin diagrama helm?
John Smith avatar
drapel es
tocmai am aflat https://github.com/kubernetes/ingress-nginx/blob/main/charts/ingress-nginx/values.yaml#L174
John Smith avatar
drapel es
mulțumesc pentru indiciu, pare să funcționeze, dacă vrei să dai un răspuns oficial, îl voi accepta
Puncte:1
drapel cm

Dacă aveți nevoie de o singură instanță nginx per nod, nu ar fi mai ușor să o implementați ca DaemonSet ?

După cum puteți citi în documentele oficiale:

A DaemonSet asigură că toate (sau unele) Noduri rulează o copie a unui Pod. La fel de nodurile sunt adăugate la cluster, Pod-urile sunt adăugate la acestea. Așa cum sunt nodurile eliminate din cluster, acele Pod-uri sunt gunoiul colectat. Ștergerea unui DaemonSet va curăța Pod-urile pe care le-a creat.

Și aceasta pare a fi soluția potrivită în cazul dvs. de utilizare.

După cum ai sugerat pe bună dreptate în comentariul tău, graficul oficial al cârmei nginx-ingress poate fi implementat atât ca a Implementare sau ca a DaemonSet. Poate fi realizat prin ajustarea acestuia valori.yaml fişier.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.