有没有一种方法可以在不使用网络策略的情况下阻止 Kubernetes 中 pods 的名称空间间通信

Is there a way to Prevent inter-namespace communication of pods in Kubernetes without using network policy

我正在设置混合集群(master-centos 和 2 个工作节点 -windows 2019),使用 containerd 作为运行时。我不能使用任何像 calico 和 weave 这样的 CNI,因为他们需要 docker 因为 runtime.I 可以使用 Flannel 但它不能很好地支持网络策略。有没有办法在不使用网络策略的情况下阻止 Kubernetes 中 pods 的命名空间间通信?

有没有办法在不使用网络策略的情况下阻止 Kubernetes 中 pods 的命名空间间通信?

网络策略正是为此目的而创建的,并且根据您需要支持它们的 CNI 的文档。否则它们将被忽略。

Network policies are implemented by the network plugin. To use network policies, you must be using a networking solution which supports NetworkPolicy. Creating a NetworkPolicy resource without a controller that implements it will have no effect.

如果您唯一的选择是使用 flannel 进行网络连接,则可以安装 Calico 网络策略来保护集群通信。所以基本上你正在安装 calico 用于策略和 flannel 用于通常称为 Canal 的网络。您可以在 calico docs

中找到更多详细信息

这里还有一个很好的答案,您可能会觉得对您的案例有用。

由于 Flannel 仅是 L2 网络解决方案,因此不支持 NetworkPolicy (L3/L4),您可以在服务级别实现安全性(任何形式的授权,如 user/pass、证书、saml、oauth 等.).

但如果没有 NetworkPolicy,防火墙就会像安全性一样松散,这可能不是您想要的。