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

GKE集群NetworkPolicy配置后外部IP流量限制不生效问题

问题根因分析
    1. 网络策略的podSelector配置错误
      你当前配置的podSelector要求匹配同时带有app: hello和namespace: default两个标签的Pod,但默认情况下Pod不会自动携带namespace: default标签,该配置会导致这条网络策略匹配不到任何Pod,完全不生效,所以hello Pod不受任何规则约束,所有流量都可以正常通行。
    1. GKE集群未启用网络策略功能
      GKE集群默认不会开启网络策略能力,未开启的情况下即使配置了NetworkPolicy资源也不会生效,集群不会对流量做任何限制。
    1. LoadBalancer Service默认SNAT导致源IP不匹配
      你使用的LoadBalancer类型Service默认会做源地址转换,外部Windows服务器的流量到达Pod时源IP会被替换为负载均衡组件的IP,而非Windows服务器的真实IP,即使网络策略生效,你配置的ipBlock规则也无法匹配到转换后的源IP。
    1. 存量TCP会话未断开
      网络策略不会主动断开已经建立的TCP连接,如果你修改规则前已经建立了Windows到Pod的连接,该连接会被conntrack规则继续放行,只有新建立的连接才会受新规则约束。
修复步骤
  1. 修正podSelector配置
    删除podSelector中无效的namespace: default匹配项,修正后的配置如下:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: hello-network-policy  
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: hello
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
     - ipBlock:
         cidr: 10.2.0.6/32 # 改为Windows虚拟机真实IP
  egress:
    - to:
       - ipBlock:
           cidr: 10.7.0.3/32 
      ports:
        - port: 5432
    - to:
       - ipBlock:
           cidr: 10.2.0.6/32 
    - to:
      - namespaceSelector:
          matchLabels:
            name: kube-system
      ports:
        - port: 53
          protocol: UDP
    - to:
      - podSelector:
          matchLabels:
            app: activemq
    - to:
      - podSelector:
           matchLabels:
             app: rabbitmq
  1. 确认GKE集群启用网络策略
    执行命令检查集群网络策略启用状态:
    gcloud container clusters describe <集群名称> --zone <集群所在区域> | grep -A2 networkPolicy
    如果返回enabled: false,需要先开启集群网络策略能力,开启操作会触发节点滚动重启。
  2. 配置LoadBalancer保留客户端真实源IP
    在hello应用的LoadBalancer Service配置中添加externalTrafficPolicy: Local字段,避免SNAT导致源IP被替换,确保Ingress规则的ipBlock可以匹配到Windows服务器的真实IP。
  3. 验证规则生效
    执行kubectl describe networkpolicy hello-network-policy,检查输出中Selected Pods字段的计数是否和hello Pod的实际数量一致,确认规则已经成功绑定到目标Pod。
  4. 测试时断开存量连接
    修改规则后重启hello Pod,清空存量TCP会话后再进行连通性测试,此时修改错误的CIDR后对应流量就会被正常拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:30:01