Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

437
Views
NetworkPolicy en kubernetes no coincide con podSelector

Tengo una NetworkPolicy de trabajo simple que se ve así

 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: monitoring-network-policy-prometheus-jbn namespace: monitoring spec: podSelector: matchLabels: app: prometheus policyTypes: - Egress egress: - to: ports: - port: 61678

Pero ahora quiero restringir esto un poco más. En lugar de permitir la salida a todos los destinos en el puerto 61678 desde todos los pods con la etiqueta app: prometheus , quiero permitir solo el tráfico a los pods con la etiqueta k8s-app: aws-node

Así que cambio la política a:

 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: monitoring-network-policy-prometheus-jbn namespace: monitoring spec: podSelector: matchLabels: app: prometheus policyTypes: - Egress egress: - to: - podSelector: matchLabels: k8s-app: aws-node

De acuerdo con https://kubernetes.io/docs/concepts/services-networking/network-policies/ una política que se ve así

 ... ingress: - from: - namespaceSelector: matchLabels: user: alice - podSelector: matchLabels: role: client ...

se describe como allows connections from Pods in the local Namespace with the label role=client, or from any Pod in any namespace with the label user=alice.

Entonces, creo que esto coincidiría con un pod con la etiqueta k8s-app: aws node que se encuentra en el espacio de nombres kube-system en cualquier puerto. Pero cuando intento conectarme a un pod con esa etiqueta, se agota el tiempo de espera.

Aquí está el pod al que me estoy conectando

 kubectl get pods -n kube-system -l k8s-app=aws-node NAME READY STATUS RESTARTS AGE aws-node-ngmnd 1/1 Running 0 46h

Estoy usando AWS EKS con el complemento de red Calio.

¿Que me estoy perdiendo aqui?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Esto sucede porque omite colocar el namespaceSelector en su manifiesto y, de forma predeterminada, cuando namespaceSelector no está predeterminado, el sistema seleccionará los Pods que coincidan con PodSelector en el propio espacio de nombres de la política.

Mira aquí:

podSelector
Este es un selector de etiquetas que selecciona Pods. Este campo sigue la semántica estándar del selector de etiquetas; si está presente pero vacío, selecciona todos los pods. Si NamespaceSelector también está configurado, entonces NetworkPolicyPeer como un todo selecciona los pods que coinciden con PodSelector en los espacios de nombres seleccionados por NamespaceSelector. De lo contrario, selecciona los pods que coincidan con PodSelector en el propio espacio de nombres de la política .

¿Qué puedes hacer para solucionarlo? Puede establecer un selector de espacio de nombres vacío según los documentos:

selector de espacio de nombres
Selecciona espacios de nombres mediante etiquetas de ámbito de clúster. Este campo sigue la semántica estándar del selector de etiquetas; si está presente pero vacío, selecciona todos los espacios de nombres . Si también se configura PodSelector, entonces NetworkPolicyPeer como un todo selecciona los pods que coinciden con PodSelector en los espacios de nombres seleccionados por NamespaceSelector. De lo contrario, selecciona todos los pods en los espacios de nombres seleccionados por NamespaceSelector.

Referencia NetworkPolicyPeer

Reproduzco este problema y la documentación es correcta, pero un poco engañosa sobre el lugar que, de hecho, debería estar vacío. Entonces, el paréntesis debe colocarse después de matchLabels :

 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: monitoring-network-policy-prometheus-jbn namespace: monitoring spec: podSelector: matchLabels: app: prometheus policyTypes: - Egress egress: - to: - podSelector: matchLabels: k8s-app: aws-node namespaceSelector: matchLabels: {}

Para responder a sus inquietudes sobre si el calicó podría estar causando algunos problemas. Bueno, de hecho lo es, pero se supone que debe hacerlo. Para que las políticas de red surtan efecto, debe ejecutar un complemento de red que las haga cumplir.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!