我正在使用 minikube 并创建了以下资源
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请求的截图如下:
网络策略在 minikube 上不起作用的原因如此处所述:
“普通 minikube 安装 ( minikube start ) 不支持任何 NetworkPolicies,因为默认 CNI Kindnet 在设计上不支持网络策略。但是,如果安装了受支持的 CNI(例如 Calico),minikube 可以支持 NetworkPolicies。 ”
我在 minikube 单节点集群上遇到了同样的问题,正如文档建议的那样here 在 minikube 集群上启用了 Calico。但那就没有运气了。
终于,在仔细翻阅网络政策文档后发现了原因, Point#3:IP 块(例外:始终允许进出 Pod 运行的节点的流量,无论 Pod 或节点的 IP 地址如何),如此处所述 我做了什么来测试 Netpol :