Puncte:0

Portul SNAT al traficului de ieșire Kubernetes

drapel ni

În prezent rulez Kubernetes cu Calico v3.20.2 ca CNI. Am un caz foarte unic în care trebuie să trimit trafic UDP de la un anumit DaemonSet Pod către un server extern care va citi combinația sourceIP:sourcePort a antetelor IP și va trimite răspunsul prin setarea celor două ca câmpuri destIP:destPort. Deoarece diferite sesiuni UDP vor alege aleatoriu diferite porturi sursă randomizate (interval 1024-65535), iar răspunsul trebuie să fie echilibrat de încărcare prin MetalLB, ar trebui să configurez un ascultător UDP pe fiecare pod al DaemonSet, ascultând fiecare cerere de ieșire. portul sursă, precum și reconfigurați LB-ul astfel încât să asculte pe acel port și să distribuie traficul.Acest lucru este evident nescalabil și, de asemenea, nu este performant, având în vedere latența unor astfel de configurații care durează mai mult decât trebuie returnat răspunsul, precum și potențialele nepotriviri ale reconfigărilor LB paralele.

Prin urmare, aș deschide mai degrabă un singur ascultător per Pod pe un anumit port (de exemplu, 20000) și SNAT tot traficul de ieșire de la fiecare Pod, astfel încât portul sursă odată ce fiecare datagramă UDP părăsește nodul să fie 20000. Serverul extern ar trimite răspunsul la acest port de destinație și răspunsul ar ajunge în cele din urmă la unul dintre ascultătorii UDP de pe unul dintre podurile DaemonSet. Am încercat asta prin implementare

sudo iptables -t nat -I POSTROUTING 1 -d <EXT-SERVER-IP>/32 -p udp --dport <EXT-SERVER-PORT> -j SNAT --to-source <WORKER-NODE-IP>:20000

Când încerc să implementez acest lucru în IPtables, Calico rescrie întotdeauna modificările pe care le fac și își impune propria configurație, ceea ce duce la porturile sursei aleatorii să părăsească din nou nodul. Pe de altă parte, când setez indicatorul natOutgoing la false și încerc să-mi stabilesc propriile reguli, doar o singură datagramă UDP părăsește nodul cu modificarea corectă a SNAT înainte ca toate celelalte datagrame să fie blocate și nu las niciodată nodul lucrător la all (după cum este demonstrat de serverul extern, precum și de tcpdump pe nodul lucrător)

Remedierea oricăreia dintre aceste cazuri ar rezolva problema generală și orice sugestie este apreciată!

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.