强制从一个吊舱到另一个吊舱的交通

时间:2020-04-27 14:33:45

标签: networking kubernetes iptables mitmproxy transparentproxy

我在Kubernetes上运行了两个Pod。为简化起见,将它们称为A和B。A是发出HTTP请求的应用程序。 B是在透明模式下运行的代理。问题是我应该如何更改iptables规则,以使从A发出的流量通过B吊舱?

    NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
    A (application)       NodePort    10.109.208.35    <none>        8090:31000/TCP                  3d6h
    B (transparent proxy) NodePort    10.98.102.253    <none>        8080:32226/TCP                  3h33m

我尝试了以下操作,但不起作用。有人可以帮我解决吗?

sudo iptables -t nat -D PREROUTING -p tcp --dport 31000 -j REDIRECT --to 32226

1 个答案:

答案 0 :(得分:2)

您可以通过使用LinkerdIstio之类的服务网格并使用出口功能来实现这种行为。

此外,由于以下原因,我非常确定更改iptables不是一个好主意: 1. iptables由Kubernetes自动提供,并具有复杂的模型。 2.一旦集群重新启动,iptables中设置的规则可能会丢失,并且您将不知道自己做了什么。

另一种解决方案,而不是使用服务网格,是使用诸如Envoy之类的sidecar代理。无论如何,对于与您一起工作的其余团队,您应该使这种耦合变得明确。否则,有人会解决为什么来自A的流量通过B的问题。这不是我以前见过的模式,对我而言,它似乎更像是反模式。