来自节点而不是 LB 服务的 GKE 集群出口流量

GKE cluster egress traffic coming out the nodes rather than the LB service

我是 GKE 和 K8S 的新手,所以请原谅我和我的愚蠢。我目前有一个 GKE 集群,它在默认节点池中有两个节点,并且该集群通过 LoadBalancer 类型的服务公开。

这些节点的任务是通过 HTTP 调用计算引擎实例。我在 GCP 中设置了一个防火墙规则,以拒绝进入 GCE 实例的流量,但来自 GKE 集群的流量除外。

问题是流量不是来自 LoadBalancer 的服务 IP,而是来自节点本身,因此将服务 IP 列入白名单无效,我必须将节点而不是集群的 IP 列入白名单.这并不理想,因为每次创建新节点时我都必须更改防火墙规则。我知道一旦您在集群中设置了服务,所有流量都将定向到该服务的 IP,那么为什么会这样呢?我究竟做错了什么?如果您需要更多详细信息,请让我知道并提前致谢。

服务的 YAML:

https://i.stack.imgur.com/XBZmE.png

当您在 GKE 上创建服务并将其公开到 Internet 时,会创建一个负载均衡器。此负载均衡器仅管理入口流量(从互联网到您的 GKE 集群的流量)。

当您的 pod 启动通信时,流量不是由负载均衡器管理,而是由托管 pod 的节点管理,如果该节点具有 public IP(而不是拒绝到 GCE 的流量例如,只需删除 public IP,它更简单、更安全!)。

如果您想管理您的 Pod 产生的出口流量的 IP,您必须 set up a Cloud NAT on your GKE cluster