Pod 之间的网络策略

时间:2021-04-20 19:44:35

标签: kubernetes istio kubernetes-networkpolicy

我的场景如下图:

enter image description here

几天后,我试图找到一种方法来根据规则阻止 Pod 之间的连接,我发现了 Network Policy。但无论是在 Google Cloud Platform 还是本地 Kubernetes,它都不适合我!

我的场景很简单,我需要一种方法来根据规则(例如命名空间、工作负载标签等)阻止 Pod 之间的连接。乍一看,我认为这对我有用,但我不知道为什么它在 Google Cloud 上不起作用,即使我从头开始创建了一个启用“网络策略”选项的集群。

3 个答案:

答案 0 :(得分:2)

网络政策将允许您完全按照图片中的描述进行操作。您可以根据标签或命名空间允许或阻止。

当您不解释您究竟做了什么以及什么不起作用时,很难为您提供帮助。使用您创建的实际网络策略 YAML 更新您的问题,理想情况下还从命名空间与 Pod 发送 kubectl get pod --show-labels

“本地 kubernetes”是什么意思也不清楚,但它在很大程度上取决于您使用的网络 CNI,因为它必须支持网络策略。例如 Calico 或 Cilium 支持它。 Minikube 在它的默认设置中没有,所以你应该遵循这个指南:https://medium.com/@atsvetkov906090/enable-network-policy-on-minikube-f7e250f09a14

答案 1 :(得分:1)

您可以使用 Istio Sidecar 来解决这个问题:https://istio.io/latest/docs/reference/config/networking/sidecar/

另一个 Istio 解决方案是 AuthorizationPolicy 的用法:https://istio.io/latest/docs/reference/config/security/authorization-policy/

答案 2 :(得分:1)

只是更新,因为我参与了这个帖子的问题。 问题在于注入了 istio 的 pod。在这种情况下,命名空间中的所有 pod,因为它具有 istio-injection=enabled。 当匹配选择器、出口或入口进行选择时,NetworkPolicy 规则不会生效,并且在创建 NetworkPolicy 之前所涉及的 pod 已经在运行。通过杀死pod然后启动它,标签匹配的pod可以正常访问。不知道有没有办法可以不用重启就刷新pods里面的sidecar。 创建NetworkPolicy后启动的Pods没有给出这个帖子的问题。