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

如何拒绝Kubernetes其他命名空间流量?配置异常求助

问题分析与修复方案

初始配置的错误

你第一次创建的NetworkPolicy完全没有起到限制跨namespace流量的作用:

ingress:
- {}

这个配置的含义是允许所有来源的入流量,不管请求来自哪个namespace,所以跨namespace能访问是预期结果,这个规则等于没加限制。

修改后配置的问题

你添加namespaceSelector后同namespace访问失败,主要有两个原因:

  1. 标签匹配可能失效:
    Kubernetes命名空间默认没有name标签,如果你手动执行kubectl label ns policy-demo1 name=policy-demo1时出现拼写错误,或者标签没正确添加,会导致规则无法匹配同namespace的Pod。更稳妥的方式是使用Kubernetes内置标签kubernetes.io/metadata.name,无需手动添加标签。
  2. ICMP流量未被允许:
    Kubernetes原生NetworkPolicy仅管控TCP/UDP流量,ping依赖的ICMP不在其管控范围内。Calico虽然支持ICMP规则,但你的配置里没有明确允许ICMP,所以ping会失败;如果标签匹配错误,连TCP的wget也会被拦截。

正确的配置方案

1. (可选)给命名空间添加自定义标签(或直接用内置标签)

如果想用自定义标签,执行:

kubectl label ns policy-demo1 ns-name=policy-demo1
kubectl label ns policy-demo2 ns-name=policy-demo2

2. 应用正确的NetworkPolicy(以policy-demo1为例)

这个规则会仅允许同namespace内的Pod访问当前namespace的所有Pod,同时支持TCP/UDP和ICMP(ping):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-same-namespace-only
  namespace: policy-demo1
spec:
  podSelector: {} # 匹配当前namespace下所有Pod
  policyTypes:
  - Ingress
  ingress:
    # 允许同namespace的TCP/UDP流量
    - from:
      - namespaceSelector:
          matchLabels:
            # 用内置标签的话,替换成 kubernetes.io/metadata.name: policy-demo1
            ns-name: policy-demo1
        podSelector: {} # 匹配该namespace下的所有Pod
    # 允许同namespace的ICMP流量(用于ping)
    - ports:
      - protocol: ICMP
      from:
      - namespaceSelector:
          matchLabels:
            ns-name: policy-demo1
        podSelector: {}

将上述配置中的ns-name替换为kubernetes.io/metadata.name可以省去手动打标签的步骤。

3. 对policy-demo2执行相同操作

复制上述配置,修改metadata.namespace为policy-demo2,并调整标签匹配规则(如果用自定义标签,改为ns-name: policy-demo2;用内置标签则改为kubernetes.io/metadata.name: policy-demo2)。

测试验证

  • 同namespace测试:在policy-demo1的busybox中执行wget -q --timeout=5 nginx:80 -O -和ping <nginx-pod-ip>,应该正常连通。
  • 跨namespace测试:在policy-demo2的busybox中访问policy-demo1的nginx,应该超时或连接失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:13:20