Kubernetes 来自集群内部的HTTP调用不使用分配的外部IP

Kubernetes 来自集群内部的HTTP调用不使用分配的外部IP,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,我有一个Kubernetes服务,其中一个静态外部IP分配给一个复制控制器管理一个分发到两个POD的应用程序。我可以使用外部IP访问应用程序,这部分工作正常 现在,我希望在向外部应用程序(集群外)发出HTTP请求时,让应用程序在POD中使用相同的IP 对https://api.ipify.org/显示此应用程序的IP与其应答的外部IP完全不同。如何使其使用相同的IP?根据externalIP分配给服务仅用于入口流量。此外,OpenShift的相关文档没有提到通过定义的端点代理出口流量的任何选项。

我有一个Kubernetes
服务
,其中一个静态
外部IP
分配给一个
复制控制器
管理一个分发到两个
POD的应用程序。我可以使用外部IP访问应用程序,这部分工作正常

现在,我希望在向外部应用程序(集群外)发出HTTP请求时,让应用程序在POD中使用相同的IP


https://api.ipify.org/
显示此应用程序的IP与其应答的外部IP完全不同。如何使其使用相同的IP?

根据
externalIP
分配给
服务
仅用于入口流量。此外,OpenShift的相关文档没有提到通过定义的
端点代理出口流量的任何选项。因此,你似乎在尝试一种与库伯内特斯格格不入的方法。

简短而简单的答案是——你不能。您的POD被分配到集群内部的IP,很可能来自特定集群范围内网络地址空间的每个节点范围。当与外部世界交谈时,pods流量源自内部桥接接口/IP,如果目的地不是集群的一部分,它将通过特定的节点默认路由离开,最终被绑定到节点IP,或者如果您的流量通过NAT网关,则被绑定到NAT网关的IP

即使您要通过一些K8观看等方式为POD创建自定义SNAT规则(很像ingress controller),流量仍然会从loadbalancer反弹而不是到达您的POD

如果您需要一个维护的IP地址,您可以做的是通过NAT网关传递pods流量,并确保它按照您的预期进行NAT(这不会为您提供与服务相同的IP,只是一个“稳定”的IP),或者使http请求等流量通过具有稳定IP的代理

总而言之,虽然在某种程度上是可能的,但不太值得设置它