Puncte:0

Politicile de rețea Kubernetes nu sunt aplicate decât dacă seturile de demoni-plugin de rețea sunt repornite. De ce?

drapel br

Am o singură politică de rețea în clusterul meu în spațiul de nume prod care permite doar reguli de intrare. Pluginul de rețea este weave-net. Nu sunt configurate reguli pentru Ieșire, așa că mă aștept ca traficul de ieșire să fie blocat. Dar până când repornesc pod-urile set de demoni de rețea, regula nu are efect. Știu că prin cele mai bune practici ar trebui să am reguli implicite de intrare și ieșire. Dar vreau să înțeleg motivul acestui comportament. Este întotdeauna necesar acest pas pentru a reporni modulele plugin-uri de rețea?

1. Definirea politicii de rețea

apiVersion: networking.k8s.io/v1
fel: NetworkPolicy
metadate:
  nume: test-network-policy
  spatiu de nume: prod
specificație:
  intrare:
  - {}
  podSelector:
    matchLabels:
      alerga: prod-nginx
  Tipuri de politică:
  - Intrare
  - Ieșire

2. Verificarea obiectului netpol

Nume: test-network-policy
Spațiu de nume: prod
Creat pe: 2021-06-06 10:16:50 +0000 UTC
Etichete: <niciuna>
Adnotări: <niciuna>
Specific:
  PodSelector: run=prod-nginx
  Permiterea traficului de intrare:
    Spre port: <oricare> (trafic permis către toate porturile)
    De la: <orice> (trafic nerestricționat de sursă)
  Permiterea traficului de ieșire:
    <niciun> (Pod-urile selectate sunt izolate pentru conectivitate de ieșire)
  Tipuri de politici: Intrare, Ieșire

3. Testarea traficului de ieșire către serverul nginx (Acest lucru este neașteptat după înțelegerea mea)

Notă: 10.39.0.5 este IP-ul serverului nginx care rulează în spațiul de nume „test”.

Comanda: kubectl -n prod exec -it prod-nginx -- curl http://10.39.0.5 | grep #egress cu succes
Răspuns: <p>Dacă vedeți această pagină, serverul web nginx este instalat cu succes și

4. Reporniți păstăile de plasă

5. Retestarea conexiunii de ieșire la același server nginx (așteptată)

Notă: 10.39.0.5 este IP-ul serverului nginx care rulează în spațiul de nume „test”.

Comanda: kubectl -n prod exec -it prod-nginx -- curl http://10.39.0.5 | grep cu succes #egress**
Răspuns: Nicio conexiune
matt_j avatar
drapel in
Nu ar trebui să fie necesar să reporniți podurile `weave-net`. Care Pod are adresa IP `10.39.0.5`, o puteți descrie?
Rajesh Dutta avatar
drapel br
IP-ul 10.39.0.5 aparține unui server nginx care rulează într-un spațiu de nume diferit („test”)
Rajesh Dutta avatar
drapel br
Îmi pare rău că nu am menționat asta. Am actualizat întrebarea adăugând o Notă despre IP. Multumesc pentru efortul tau.
Puncte:0
drapel in

Aș dori să vă arăt că repornirea plasă-ţesătură Capsule nu este necesar pentru NetworkPolicy pentru a intra în vigoare.

Ta test-politică-rețea NetworkPolicy se aplică podurilor cu eticheta run=prod-nginx în prod Spațiu de nume și permite tot traficul de intrare și interzice tot traficul de ieșire.

Voi crea un exemplu pentru a ilustra cum funcționează.


În primul rând, am creat prod-nginx & prod-test Pods și testat conectivitatea cu nr NetworkPolicy desfasurat:

# kubectl rulați prod-nginx --image=nginx -n prod
pod/prod-nginx creat

# kubectl rulați prod-test --image=nginx -n prod
pod/prod-test creat
    
# kubectl get pod -o wide -n prod
NUME PREGĂTIT STAREA REINCEPE VARSTA Etichete IP
prod-nginx 1/1 Running 0 37s 10.44.0.1 run=prod-nginx
prod-test 1/1 Running 0 11s 10.44.0.2 run=prod-test

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.1 | grep -i succes
<p>Dacă vedeți această pagină, serverul web nginx este instalat cu succes și

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.2 | grep -i succes
<p>Dacă vedeți această pagină, serverul web nginx este instalat cu succes și

Totul funcționează bine, așa că haideți să implementăm un test-politică-rețea NetworkPolicy si testeaza din nou:

# cat netpol.yml 
apiVersion: networking.k8s.io/v1
fel: NetworkPolicy
metadate:
  nume: test-network-policy
  spatiu de nume: prod
specificație:
  intrare:
  - {}
  podSelector:
    matchLabels:
      alerga: prod-nginx
  Tipuri de politici:
  - Intrare
  - Ieșire
  
# kubectl aplica -f netpol.yml 
networkpolicy.networking.k8s.io/test-network-policy creat

Putem vedea că prod-nginx Podul nu se poate conecta la alte poduri, dar se poate conecta la el însuși:
NOTĂ: Un pod nu poate bloca accesul la sine (vezi: Politici de rețea documentație)

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.1 | grep -i succes
<p>Dacă vedeți această pagină, serverul web nginx este instalat cu succes și
   
# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.2 | grep -i succes
comanda terminată cu codul de ieșire 7

Acum să creăm un stadiu-nginx Pod în etapă namespace și verificați dacă prod-nginx Podul se poate conecta la el:

# kubectl run stage-nginx --image=nginx -n stage
pod/stage-nginx creat

# kubectl get pod -o wide -n stadiu
NUME PREGĂTIT STAREA REINCEPE VARSTA IP          
stage-nginx 1/1 Running 0 20s 10.44.0.6   

# kubectl exec -it prod-nginx -n prod -- curl 10.44.0.6 | grep -i succes
comanda terminată cu codul de ieșire 7

Am verificat că regula de ieșire funcționează corect și repornește plasă-ţesătură Nu sunt necesare capsule.

Rajesh Dutta avatar
drapel br
Multumesc pentru efort. Am actualizat întrebarea cu o Notă despre IP.
Rajesh Dutta avatar
drapel br
Multumesc pentru efort. Am actualizat întrebarea cu o Notă despre IP. Acum referitor la problema. Vă rugăm să încercați să conectați un server care rulează într-un alt spațiu de nume. In cazul meu inca vad problema. Puteți încerca de mai multe ori să activați și să dezactivați ieșirea și să vedeți dacă de fiecare dată politica de rețea se comportă conform așteptărilor, fără a reporni serverele weave-net. De fapt, problema există și cu Ingress, dar am ales să explic cu egress. și până acum, ceea ce am observat, acest lucru se întâmplă numai atunci când specificați un tip de politică (ieșire în cazul nostru de utilizare) fără reguli.

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.