Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

436
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda