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

GKE应用出口网络策略后Pod无法连接互联网问题求助

修正GKE网络策略以恢复互联网访问

你的问题根源在于DNS协议的支持缺失!当前网络策略虽然开放了53端口,但默认仅允许TCP协议,而DNS查询绝大多数依赖UDP协议——这就是apt-get update无法解析软件源域名、进而无法连接互联网的核心原因。我们可以通过补全协议配置来解决这个问题,同时让规则更清晰。

修正后的网络策略

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: app2-np
  namespace: default
spec:
  podSelector:
    matchLabels:
      name: app2
  policyTypes:
    - Egress
    - Ingress
  ingress:
    - {}
  egress:
    # 保留原有的app3 8080端口访问规则
    - to:
        - podSelector:
            matchLabels:
              name: app3
      ports:
        - port: 8080
          protocol: TCP
    # 修正互联网访问规则,补全DNS协议支持
    - ports:
        - port: 80
          protocol: TCP
        - port: 443
          protocol: TCP
        - port: 53
          protocol: UDP
        - port: 53
          protocol: TCP

关键修正说明

  • 补全DNS协议:同时开放53端口的UDP和TCP协议——UDP用于常规的短DNS查询,TCP用于大尺寸的DNS响应(比如包含大量记录的域名查询),这样就能正常解析apt-get需要的软件源域名了。
  • 显式声明协议:给所有端口明确标注TCP协议,虽然Kubernetes默认会使用TCP,但显式配置能让规则更清晰,避免后续维护时产生歧义。
  • 保留原有连通性:完全保留了原有的允许访问app3 Pod 8080端口的配置,确保你现有的Pod间通信不受影响。

额外注意事项

请确认你的app1 Pod确实带有name: app2标签!因为这个网络策略是通过podSelector.matchLabels.name: app2匹配目标Pod的——如果app1的标签是run: app1(kubectl run命令默认生成的标签),那这个策略根本不会作用在它身上,这时候你需要检查是否有其他网络策略生效,或者标签配置是否有误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 11:17:34