在 Minkube 多个命名空间中,为什么 NetworkPolicy 不起作用

问题描述 投票:0回答:2

我正在使用 minikube 并创建了以下资源

  1. 两个命名空间 qa 和 prod
  2. 在 qa 命名空间中创建了curlpod,还在 prod 命名空间中创建了curlpod和web pod。 Curl pod 可用于 CURL 任何 URL,而 web pod 有 nginx 提供默认网页。
  3. 创建了以下 NetworkPolicy 并将其应用于 prod 命名空间。
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      namespace: prod                         #A
      name: block-other-namespace
    spec:
      podSelector: {}                              #B
      ingress:
      - from:
        - podSelector: {}                 #C

我所看到的应用如下图所示

为了测试 prod 命名空间与 qa 命名空间隔离,当我从 qa 命名空间的curlpod 卷曲到 prod 命名空间的 web pod 时,它返回默认的 nginx 网页,由于网络策略,它不应该返回。请帮我找出为什么网络策略不阻止来自 qa 命名空间的请求。

获取prod命名空间中web pod的IP以及qa命名空间的curlpod向prod命名空间中的web pod进行CURL请求的截图如下:

kubernetes minikube kubernetes-networkpolicy kubernetes-networking kubernetes-namespace
2个回答
1
投票

网络策略在 minikube 上不起作用的原因如此处所述:

“普通 minikube 安装 ( minikube start ) 不支持任何 NetworkPolicies,因为默认 CNI Kindnet 在设计上不支持网络策略。但是,如果安装了受支持的 CNI(例如 Calico),minikube 可以支持 NetworkPolicies。 ”


0
投票

我在 minikube 单节点集群上遇到了同样的问题,正如文档建议的那样here 在 minikube 集群上启用了 Calico。但那就没有运气了。

终于,在仔细翻阅网络政策文档后发现了原因, Point#3:IP 块(例外:始终允许进出 Pod 运行的节点的流量,无论 Pod 或节点的 IP 地址如何),如此处所述 我做了什么来测试 Netpol :

  1. minikube start -p --cni calico :这将创建 3 个节点集群
  2. 标记节点,以确保 pod 调度在单独的节点上 A。 kubectl 标签节点 node-m02 app=nginx b. kubectl 标签节点 node-m03 app=busybox
  3. 配置netpolicies,根据标签创建pod进行测试。
  4. 成功了
© www.soinside.com 2019 - 2024. All rights reserved.