为特定IP和端口路由kubernetes pod传出流量

为特定IP和端口路由kubernetes pod传出流量,kubernetes,networking,routes,iproute,Kubernetes,Networking,Routes,Iproute,我们有一个pod,它正试图到达kubernetes集群外的IP(192.168.xx.xx)。试图访问的IP是外部实体的内部IP,通常只能使用外部IP(10.110.xx.xx)访问。 我们已经在工作/主节点上定义了路由(使用iptables),以将内部IP重定向到外部IP。此重定向在辅助主机/主主机级别上运行良好,但kubernetes pod不使用这些重定向。有没有一种方法可以在pod级别实现这一点,或者让pod使用来自主机的路由?(我知道在pod中使用主机网络是一种选择,但不幸的是我们无法

我们有一个pod,它正试图到达kubernetes集群外的IP(
192.168.xx.xx
)。试图访问的IP是外部实体的内部IP,通常只能使用外部IP(
10.110.xx.xx
)访问。
我们已经在工作/主节点上定义了路由(使用
iptables
),以将内部IP重定向到外部IP。此重定向在辅助主机/主主机级别上运行良好,但kubernetes pod不使用这些重定向。有没有一种方法可以在pod级别实现这一点,或者让pod使用来自主机的路由?(我知道在pod中使用主机网络是一种选择,但不幸的是我们无法使用它)
iptables
更新如下:

iptables -t nat -A OUTPUT -p tcp -d 192.168.xx.xx -j DNAT --to-destination 10.110.xx.xx
iptables -t nat -A OUTPUT -p tcp -d 192.168.xx.xx --dport 10550 -j DNAT --to-destination 10.110.xx.xx:10550

答案可能是“是的,但它真的很复杂”。这在很大程度上取决于您的CNI插件及其工作方式。pod网络的分配或配置没有单一的标准。您可能可以通过一个特权init容器来实现它?但是如果你破坏了你的CNI,你就可以保留所有的部分。

如果你在
预路由
链上这样做怎么办?
iptables-t nat-A预路由-p tcp-d 192.168.xx.xx-j DNAT-到目的地10.110.xx.xx
可能是因为容器流量已经转到了另一个(虚拟)接口,在节点级
output
规则将不适用于它们,但我不确定这一点。。