Puncte:1

Podul Kubernetes nu reușește cu starea OutOfMemory imediat după ce a fost programat

drapel ao

Îmi testez aplicația pe un cluster Kubernetes bare-metal (versiunea 1.22.1) și am o problemă când îmi lansez aplicația ca Job.

Clusterul meu are două noduri (master și lucrător), dar lucrătorul este izolat. Pe nodul principal, 21 GB de memorie sunt disponibile pentru aplicație.

Am încercat să-mi lansez aplicația ca trei joburi diferite în același timp. Deoarece am setat 16 GB de memorie atât ca cerere de resursă, cât și ca limită, doar un singur Job a fost pornit, iar restul de două sunt într-o stare În așteptare. Am setat backoffLimit: 0 la Jobs.

STAREA NUMELE GATA REINCEPE VARSTA
app1--1-8pp6l 0/1 În așteptare 0 42s
app2--1-42ssl 0/1 În așteptare 0 45s
app3--1-gxgwr 0/1 Rulează 0 46s

După finalizarea primului Pod, ar trebui pornit doar unul dintre cele două Pod-uri aflate în starea În așteptare. Cu toate acestea, unul a fost pornit, iar celălalt era într-o stare OutOfMemory, chiar dacă niciun container nu a fost pornit în Pod.

STAREA NUMELE GATA REINCEPE VARSTA
app1--1-8pp6l 0/1 Running 0 90s
app2--1-42ssl 0/1 OutOfmemory 0 93s
app3--1-gxgwr 0/1 Finalizat 0 94s

Evenimentele OutOfMemory Pod sunt după cum urmează:

Evenimente:
  Introduceți Motivul Vârsta din mesaj
  ---- ------ ---- ---- -------
  Avertisment eșuatScheduling 3m41s (x2 peste 5m2s) 0/2 noduri implicite de planificare sunt disponibile: 1 memorie insuficientă, 1 nod(e) au fost neprogramate.
  Normal programat 3m38s programator implicit Test/app2--1-42ssl atribuit cu succes master
  Avertisment OutOfmemory 3m38s Nodul kubelet nu a avut resurse suficiente: memorie, solicitat: 16000000000, folosit: 31946743808, capacitate: 37634150400

Se pare că Pod-ul este alocat nodului, chiar dacă nu există suficient spațiu pentru el, deoarece celălalt Pod tocmai a fost pornit.

Bănuiesc că acesta nu este un comportament așteptat al Kubernetes, știe cineva cauza acestei probleme?

Mikolaj S. avatar
drapel cn
Ai dreptate, acest comportament nu este de așteptat - așa cum am testat local (aceeași configurație ca a ta - 3 joburi cu limite și solicitări setate) - fiecare job finalizat când s-a terminat precedentul. Văd că ai două noduri - vrei să rulezi un job pe cel specific? De ce unul dintre noduri are pata `node.kubernetes.io/unreachable:`? Ați încercat să așteptați ca `app1--1-8pp6l ` să se încheie și apoi verificați? Ce soluție Kubernetes utilizați exact pentru bare-metal? Eroarea poate fi legată de o soluție specifică.
Daigo avatar
drapel ao
Am atasat un mesaj gresit, scuze. De fapt, am două noduri și lucrătorul este izolat. (Mi-am editat și postarea). După ce `app1` este finalizat, `app2` era încă în starea OutOfMemory. Folosesc kubeadm pentru a-mi construi clusterul k8s.
Puncte:1
drapel cn

Este o problemă cunoscută pentru 1.22.x versiuni - puteți găsi mai multe subiecte GitHub și Stackoverflow despre aceasta, de exemplu:

Remedierea problemei este inclusă în versiunea 1.23:

  • Remediați o regresie în care Kubelet nu a reușit să excludă podurile deja finalizate din calculele despre câte resurse folosea în prezent atunci când a decis dacă să permită mai multe poduri. (#104577, @smarterclayton)

Așa că vă rugăm să faceți upgrade cluster-ului dvs. Kubernetes la cea mai nouă versiune stabilă.

Sper că te va ajuta, dar ține cont o altă problemă similară este deschisă pe Github chiar și cu remedierea aplicată (menționat Aici acum aproximativ 10 zile - stare pentru 13 ianuarie 2022):

Link aici pentru a fi complet - un simptom similar ar putea fi expus după această remediere, așa cum este descris în #106884. Kubeletul consideră că resursele pentru terminarea pod-urilor sunt în uz (ele sunt!), dar planificatorul ignoră terminarea pod-urilor și programează noi pod-uri. Deoarece kubelet-ul ia în considerare acum podurile de terminare, respinge acele poduri reprogramate rapid.

Apoi, probabil singura soluție este să faceți downgrade la versiunea 1.21.

Puncte:0
drapel us

Poți, te rog, să postezi yaml-ul podului?

Am avut ceva asemănător la unul dintre clienții mei, unde a avut o greșeală de tipar la limita de memorie (860 m în loc de 860 Mi) care merită aruncat o privire

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.