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

Pod网络策略配置后跨Namespace Pod连通超时问题求助

跨Namespace Pod连通性问题解决方案

核心问题排查与修复步骤

1. 修正NetworkPolicy的Pod选择器标签

你创建myhttpd Pod时指定的标签是app=httpd-server,但现有NetworkPolicy的podSelector.matchLabels写的是app=myhttpd,标签不匹配导致策略根本没应用到目标Pod,这是连通失败的关键原因。

修正后的NetworkPolicy配置:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-port-ingress-80
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: httpd-server  # 匹配实际Pod的标签
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 10.64.8.0/22  # 需确认此网段包含测试Pod的IP
    ports:
    - protocol: TCP
      port: 80

2. 验证IP网段的正确性

执行命令查看测试Pod(cli-httpd)的IP,确认是否在10.64.8.0/22网段内:

kubectl get pod cli-httpd -o wide --namespace=<测试Pod所在Namespace>

如果测试Pod不在该网段,替换为实际的Pod网段CIDR。

3. 可选:用更灵活的规则替代IP网段限制

如果不想依赖固定IP网段,可修改NetworkPolicy通过Namespace标签或Pod标签放行:

方式1:允许特定Namespace的所有Pod访问

先给测试Pod所在Namespace打标签:

kubectl label namespace <测试Namespace> name=test-ns

修改NetworkPolicy的from规则:

ingress:
- from:
  - namespaceSelector:
      matchLabels:
        name: test-ns
  ports:
  - protocol: TCP
    port: 80

方式2:允许带特定标签的Pod访问

不管所在Namespace,只要Pod带有app=myhttpd标签就放行:

ingress:
- from:
  - podSelector:
      matchLabels:
        app: myhttpd
  ports:
  - protocol: TCP
    port: 80

4. 确认CNI插件支持NetworkPolicy

部分CNI插件(如默认配置的Flannel)不支持NetworkPolicy,需确保集群使用Calico、Cilium、Weave Net等支持该功能的CNI。执行命令检查:

kubectl get pods -n kube-system | grep -E 'calico|cilium|weave'

如果没有相关组件,需部署支持NetworkPolicy的CNI插件。

5. 验证修复效果

应用修正后的NetworkPolicy:

kubectl apply -f <修正后的yaml文件路径>

重新执行连通性测试:

kubectl run cli-httpd --rm -it --image=busybox --restart=Never -l app=myhttpd --namespace=<测试Namespace> -- /bin/sh
# 执行测试命令
wget --spider --timeout=5 100.64.9.198

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:42:22