Kubernetes:从本地端口(UDP、TCP)到特定服务的流量转发

Kubernetes:从本地端口(UDP、TCP)到特定服务的流量转发,kubernetes,load-balancing,kubernetes-ingress,nginx-ingress,kubernetes-pod,Kubernetes,Load Balancing,Kubernetes Ingress,Nginx Ingress,Kubernetes Pod,我有一个带有公共IP地址的EC2实例(linux,kubernetes)。我希望将数据流量转发到我的服务 让我们假设我的公共IP地址是:4.32.312.21我没有外部dns或其他什么,我想要重定向流量,如下所示: - 4.32.312.21:6600 -> to service-a //TCP traffic - 4.32.312.21:6500 -> to service-b //UDP traffic 我的配置: NAME TYPE

我有一个带有公共IP地址的EC2实例(linux,kubernetes)。我希望将数据流量转发到我的服务

让我们假设我的公共IP地址是:4.32.312.21我没有外部dns或其他什么,我想要重定向流量,如下所示:

 - 4.32.312.21:6600 -> to service-a     //TCP traffic
 - 4.32.312.21:6500 -> to service-b     //UDP traffic
我的配置:

NAME         TYPE         CLUSTER-IP       EXTERNAL-IP   PORT(S)
service-a    ClusterIP    10.109.38.119    <none>        6600/TCP
service-b    ClusterIP    10.107.10.227    <none>        6500/UDP
名称类型群集IP外部IP端口
服务-a群集IP 10.109.38.119 6600/TCP
服务b群集IP 10.107.10.227 6500/UDP

我尝试使用Node Port-s,但端口范围很广(从30000个),这不是解决方案。

您必须使用NodePort。为什么你说这样的端口范围不是一个解决方案


如果出于任何原因,您想坚持使用这些端口,那么,假设您不想添加更多的元素(如负载平衡器),您需要设置iptables规则,将6500/6600流量转发到30000/30001,例如。

谢谢您的回答!我可以添加更多元素(例如负载平衡器)-这不是问题。您能更详细地描述一下使用负载平衡器的解决方案吗。@Mateusz如果您能使用负载平衡器,只需在负载平衡器上添加端口作为侦听器,Kubernetes中的服务通过NodePort公开即可。换句话说,LB上的侦听器6500在EC2上向前移动到30000,6600到31000。谢谢,但我还有一个问题-您对使用kubernetes ingress有什么看法?这不是重定向流量的解决方案?@Mateusz Ingress通过路径工作,就像AWS中的应用程序负载平衡器一样。在您的情况下,您的意思是希望在特定的端口6500和6600上公开您的服务,因此在那里不使用入口。另一件事是,如果您只想公开一个端口,比如443,然后根据转发到特定服务的路径而定。