You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes NetworkPolicy无法覆盖全量出口允许策略,特定Pod仍可访问外网

问题原因

Kubernetes NetworkPolicy的核心生效逻辑是:只要有任意一个选中目标Pod的NetworkPolicy允许某类流量,该流量就会被放行。

你当前的allow-default和allow-egress两个Policy的podSelector都是{},会选中命名空间内所有Pod(包括带app: localstack-server标签的Pod),且这两个Policy都明确允许了所有出站流量(allow-egress甚至直接允许了0.0.0.0/0的IP段)。因此,即使你新增了针对该Pod的无Egress规则的Policy,也无法覆盖已存在的允许规则——只要有允许规则生效,流量就会被放行。

解决方案

要实现阻止app: localstack-server Pod的所有出站流量,需要先让现有允许所有流量的Policy不选中该Pod,再应用你的拒绝策略。

步骤1:修改现有允许Policy,排除目标Pod

修改allow-default的podSelector,添加否定匹配规则:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-default
  namespace: sample-namespace
spec:
  podSelector:
    matchExpressions:
    - key: app
      operator: NotIn
      values:
      - localstack-server
  policyTypes:
  - Ingress
  - Egress
  egress:
  - to:
    - podSelector: {}
  ingress:
  - from:
    - podSelector: {}

修改allow-egress的podSelector,同样添加否定匹配:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-egress
  namespace: sample-namespace
spec:
  podSelector:
    matchExpressions:
    - key: app
      operator: NotIn
      values:
      - localstack-server
  policyTypes:
  - Egress
  egress:
  - to:
    - podSelector: {}
    - ipBlock:
        cidr: 0.0.0.0/0
  - ports:
    - port: 53
      protocol: UDP
    - port: 53
      protocol: TCP

步骤2:应用你的拒绝策略

保持你原有的psp-localstack-default-deny-egress Policy不变,重新应用:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: psp-localstack-default-deny-egress
  namespace: sample-namespace
spec:
  podSelector:
    matchLabels:
      app: localstack-server
  policyTypes:
  - Egress

验证效果

此时,app: localstack-server Pod只会被psp-localstack-default-deny-egress选中,该Policy未定义任何允许的Egress规则,因此所有出站流量都会被拒绝。你可以再次执行curl www.example.com验证是否无法访问。


内容的提问来源于stack exchange,提问作者Vishwanath Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:10:43