【问题标题】:Kubernetes: traffic forwarding from local ports (UDP, TCP) to specific servicesKubernetes:从本地端口(UDP、TCP)到特定服务的流量转发
【发布时间】:2021-02-26 03:38:44
【问题描述】:

我有一个具有公共 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

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

【问题讨论】:

    标签: kubernetes load-balancing kubernetes-ingress nginx-ingress kubernetes-pod


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答!我可以添加更多元素(例如负载均衡器)——这不是问题。您能否使用负载均衡器描述更多您的解决方案。
    • @Mateusz 如果您可以使用负载均衡器,只需将您的端口添加为负载均衡器上的侦听器,并使用 NodePort 公开 Kubernetes 中的服务。换句话说,LB 上的监听器 6500 转发到 EC2 上的 30000,6600 转发到 31000。
    • 谢谢,但我还有一个问题——你对使用 kubernetes ingress 有什么看法?这不是重定向流量的解决方案吗?
    • @Mateusz Ingress 按路径工作,就像 AWS 中的应用程序负载均衡器。在你的情况下,你说你想让你的服务暴露在特定的端口,6500 和 6600,所以那里没有使用 Ingress。另一件事是,如果您只想公开一个端口,比如 443,然后取决于转发到特定服务的路径。
    猜你喜欢
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    • 2018-11-14
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    相关资源
    最近更新 更多