如何配置 Kubernetes 以从静态 IP 发出外部请求

How to configure Kubenetes to make external requests going from a static IP

我在一个 Kubenetes 集群中有一堆 pods 和相应的集群 IP 服务 运行。我使用 Ingress 控制器将传入流量路由到这些工作负载。

现在,当我从工作负载中发出外部请求时,我希望这些请求从静态 IP 发出。

  1. 是否通过同一网络接口处理传入和传出流量?

  2. 如何为来自 pod 的传出请求设置静态 IP

提前致谢。

如果您在 AWS 或 GKE 上,从(自动缩放)节点池获取静态出站的唯一方法是通过 NAT 网关。在 GKE 上,您还需要拥有私有节点(没有 public ips)。

Kubernetes 入口,至少在 GKE 中,与出口分开处理,是不同的负载均衡器。

https://cloud.google.com/nat/docs/gke-example

一些研究向我展示了以下方法并且有效:

  1. 创建一个带有特定标签的新节点池(比方说ip=static

  2. 使用以下选择器部署工作负载

     nodeSelector:
       ip: static
    
  3. 通过VPC网络,预留一个外部静态IP

  4. 将此IP分配给新节点池使用的VM

但是,正如 @user578582 所提到的,当缩放完成后,我将不得不使用 NAT 网关使所有出站流量从此配置下的静态 IP 发出。