强制从一个舱到另一个舱的流量

问题描述 投票:0回答:1

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

    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
networking kubernetes iptables mitmproxy transparentproxy
1个回答
2
投票

你可以通过使用服务网状结构来实现这样的行为,如 LinkerdIstio 并使用出口功能。

另外,我很确定改变iptables不是一个好主意,因为以下几点:1.iptables是Kubernetes自动提供的,模型很复杂.2.一旦集群将重启,iptables中设置的规则可能会丢失,你将不知道自己做了什么。

另一种解决方案,不是使用服务网状结构,而是使用sidecar代理,如 Envoy. 不管怎么说,你应该让和你一起工作的团队其他成员明确这种耦合。否则,就会有人来排查为什么A的流量会经过B,这不是我之前看到的模式,对我来说,这似乎更像是一种反模式。

© www.soinside.com 2019 - 2024. All rights reserved.