首页 > 解决方案 > Kubernetes 入口控制器暴露到特定端口

问题描述

我的机构有防火墙设置,屏蔽了大部分外部端口,目前我有内部Linux虚拟机,例如http://abc.xyz:5555(这个链接只能在内部网络访问),还有一个Netscaler由管理员设置,以便将内部链接转发到公开可用的链接:https ://def.edu 。

现在我有多个使用 5556,5557,5558 等端口的 Web 服务器。我想设置 Kubernetes 入口,所有流量首先进入入口控制器,入口将流量转发到我的多个 Web 服务。通常如下图所示。 客观的

我只有 5555 端口可用,但 Ingress 的所有教程似乎只支持 HTTP 80 和 HTTPS 443 端口。我的问题是,我可以将 Ingress 控制器主机设置为http://abc.xyz:5555吗?或者我应该采用其他方法,就像这样说:An Ingress does not expose arbitrary ports or protocols. Exposing services other than HTTP and HTTPS to the internet typically uses a service of type Service.Type=NodePort or Service.Type=LoadBalancer.如果是这样,我应该使用什么术语/技术?

标签: kuberneteskubernetes-ingress

解决方案


我建议使用入口,因为每个负载均衡器都会分配一个自己的外部 IP。您可以指定自定义端口和协议(tcp、udp、http)。我使用 nginx,但文档似乎已过时(上周检查过)。所以我们目前正在使用Traefik。Web 仪表板对调试也有很大帮助。

我们是如何解决的:

  1. 使用自定义值通过 helm 安装 traefik,因此它会监听 80 和 443 之外的其他端口;在您的values.yaml中添加自定义入口点并使用以下命令安装 traefik: helm install --values values.yaml stable/traefik

  2. 安装你的入口 http/tcp/udp 路由

  3. 转发您的 Web 仪表板并转到http://localhost:9000/dashboard

更详细的步骤请看官方文档:https ://docs.traefik.io/getting-started/install-traefik/#use-the-helm-chart


推荐阅读