Puncte:0

K8S limitează numărul de poduri de pornire în același timp

drapel gp

Am o problemă cu K8S, am vreo 30 de microservicii (java rulează pe spring boot). Microservicii au nevoie de o mulțime de procesoare doar pentru pornire, deoarece există o mulțime de biblioteci. Când implementez toate microserviciile în același timp, se va crea o încărcare foarte mare a CPU pe nodurile K8S și acestea sunt marcate ca indisponibile. Trebuie să limitez cumva numărul de poduri de pornire simultană pentru a evita încărcarea procesului mare pe noduri. Există vreo modalitate de a face asta?

SYN avatar
drapel hk
SYN
Trebuie să ajustați limitele/solicitările de resurse în funcție de consum.
Puncte:1
drapel mc

Puteți seta procesorul limite si cereri.

Odată ce le-ați setat, chiar dacă limitele sunt generoase, kubelet-ul și durata de rulare a containerului lucrează împreună pentru a impune limitele CPU. Împreună cu asta, poți rezervă resurse pentru Kubernetes însuși astfel încât volumul de muncă să nu pună în pericol nodul general.

Odată ce le definiți, nucleul Linux devine responsabil pentru aplicarea limitelor și asigurarea faptului că resursele disponibile sunt alocate în mod corect. Dacă aveți DaemonSets în cluster, asigurați-vă că și acestea au resurse și limite. Ați putea lua în considerare rularea DaemonSets ca garantat, astfel încât resursele lor să fie limitate. Vedea Configurați calitatea serviciului pentru poduri.

Luate împreună, aceste măsuri ar trebui să vă protejeze nodurile de sarcina de lucru, permițând în același timp aplicației Pods să intre în procesorul disponibil în timpul pornirii.

Dacă descoperiți că există încă probleme, există un pas suplimentar pe care îl puteți face: amânați fiecare pornire cu o sumă aleatorie. Puteți face asta fără modificări ale aplicației, rulând o personalizare container init înainte de pornirea aplicației principale. Această întârziere întâmplătoare ajută la evitare turmă tunătoare probleme în care fiecare JVM rulează cu același model de acces la resurse în același timp.

Puncte:0
drapel mc

Dacă sunteți sigur că doriți să limitați numărul de poduri rulate în timpul unei lansări, vă puteți extinde clusterul Kubernetes prin implementarea Lansări Argo.

Cu efort, puteți defini propriul mecanism de implementare pentru a limita numărul de implementări simultane prin setare metadate efemere și apoi creați-vă propriul mecanism (fie un webhook de validare a admiterii, fie un plugin de programare) pentru a limita rata la care podurile cu aceste etichete sunt fie create, fie pornite.

Nu recomand asta: deși Kubernetes o face posibil, este multă muncă. Celălalt răspuns al meu este o modalitate mai simplă de a obține un rezultat general similar.

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.