我在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
答案 0 :(得分:2)
您可以通过使用Linkerd
或Istio
之类的服务网格并使用出口功能来实现这种行为。
此外,由于以下原因,我非常确定更改iptables不是一个好主意: 1. iptables由Kubernetes自动提供,并具有复杂的模型。 2.一旦集群重新启动,iptables中设置的规则可能会丢失,并且您将不知道自己做了什么。
另一种解决方案,而不是使用服务网格,是使用诸如Envoy
之类的sidecar代理。无论如何,对于与您一起工作的其余团队,您应该使这种耦合变得明确。否则,有人会解决为什么来自A的流量通过B的问题。这不是我以前见过的模式,对我而言,它似乎更像是反模式。