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

Kubernetes NetworkPolicy配置:允许公网访问 禁止同命名空间Pod互访

配置失效原因

你之前写的两个业务侧NetworkPolicy里,ingress: - {}是完全放通所有入站来源的配置,没有做任何来源过滤,同命名空间内其他Pod的请求自然也会被允许,所以两个Pod之间可以正常通信。你配置的默认拒绝所有入站的基线策略是正确的,不需要修改。

正确配置步骤
  1. 先查询集群的Pod CIDR地址段,执行以下命令即可获取:
kubectl cluster-info dump | grep -m 1 cluster-cidr
  1. 替换原有两个业务的NetworkPolicy配置,核心逻辑是仅放通非集群Pod网段的外部流量,所有集群内Pod来源的请求会被默认拒绝策略拦截,自然实现两个Pod之间的隔离。
    假设查询到的集群Pod CIDR为10.244.0.0/16,配置示例如下:
# 放通外部对test-server的访问,拦截所有集群内Pod请求
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-test-server-ingress
spec:
  podSelector:
    matchLabels:
      app: test-server
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 10.244.0.0/16 # 替换为实际查询到的集群Pod CIDR段
---
# 放通外部对test-server2的访问,拦截所有集群内Pod请求
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
  name: allow-test-server2-ingress
spec:
  podSelector:
    matchLabels:
      app: test-server2
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 0.0.0.0/0
        except:
        - 10.244.0.0/16 # 替换为实际查询到的集群Pod CIDR段
验证与注意事项
  • 配置生效后,进入任意一个业务Pod,直接访问另一个Pod的IP或对应Service地址,会出现连接超时,说明互访隔离生效。
  • 从集群外部访问两个服务的对外暴露地址(NodePort/LoadBalancer/Ingress地址),可以正常访问说明外部放通规则生效。
  • 如果服务是通过NodePort/LoadBalancer暴露,建议将对应Service的externalTrafficPolicy字段设置为Local,避免kube-proxy做SNAT替换源IP导致规则匹配异常。
  • 后续如果需要放通其他指定集群内Pod访问这两个服务,只需要在对应NetworkPolicy的ingress.from列表下新增对应的podSelector或namespaceSelector匹配规则即可,不会破坏两个服务之间的隔离逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:27:15