我有一个Kubernetes Service
,其中一个静态External IP
分配给分发给Replication Controller
的{{1}}管理1应用程序。我可以使用外部IP访问应用程序,这部分工作正常。
我现在希望在向外部应用程序(集群外)发出HTTP请求时,使用相同的IP将应用程序放在Pod中。
对Pods
的简单调用表明此应用程序的IP与其回答的外部IP完全不同。如何让它使用相同的IP?
答案 0 :(得分:1)
根据documentation,externalIP
的{{1}}分配仅适用于入口流量。除此之外,OpenShift中有些相关的Integrating External Services文档没有提及通过定义的Service
代理出口流量的任何选项。因此,您似乎正在尝试开箱即用的Kubernetes。
答案 1 :(得分:1)
短而简单的答案是 - 你不能。您的Pod分配了群集内部的IP,很可能来自特定群集范围的网络地址空间的每个节点范围。在与外部世界交谈时,pods流量来自内部桥接接口/ IP,如果目标不是群集的一部分,则通过特定的节点默认路由离开,最后以SNAT形式传递给节点如果您的流量通过,则为IP或NAT网关的IP。
即使你是通过一些k8s观看等来创建pod的自定义SNAT规则(很像入口控制器),流量仍会从负载均衡器反弹而不是到达你的pod。
如果您需要一个维护的IP地址,您可以做的是通过NAT网关传递您的pod流量并确保它按预期进行NAT(这不会为您提供与您的服务相同的IP,只需一个&#34 ;稳定" one),或者像http请求那样的流量通过PROXY传输稳定的IP。
总而言之,虽然在某种程度上可能不值得设置它的头痛。