当前,我的 kubernetes 集群(位于 AWS 上)具有一个简单的设置,其中带有Deployment
,该Web容器监听了 80 和 443 。
该集群还具有NodePort
服务,该服务将流量公开给端口 30080 和 30443 。我正在尝试找出一种方法来接受 80 和 443 上的公共流量。
什么是这样做的好方法?
我对可能解决方案的想法:
在AWS上手动配置 ELB ,这可以将 80 和 443 流量映射到 30080 和 30443 端口。
使用 kubernetes 支持的LoadBalancer
,但是在将集群与 AWS described here集成时遇到一些问题。我宁愿尝试其他可能的解决方案,也不要坚持这样做。
我已经看到很多关于Ingress
服务的帖子,但是各种帖子的设置完全不同。
我想知道在我的设置中什么是Ingress
的好用例。
就我而言,Ingress
是否应取代我的NodePort
服务?
谢谢
答案 0 :(得分:1)
将 NodePort 服务绑定到所有群集节点上的指定端口后,您只需要将流量传递给这些节点中的任何一个或所有这些节点。有时可能会导致额外的延迟,但是从连接性的角度来看,它应该可以正常工作。
您可以手动配置 Load Balancer ,然后将所有群集节点添加到其池中,并为它们配置运行状况检查以在特定节点发生故障时将其从池中排除。
入口实际上以类似的方式工作。到达任何节点的特定端口的所有流量都将转发到入口容器。 入口控制器查找已创建的入口对象,并根据这些对象中的规范配置入口容器。 实际上,在我的示例中,入口控制器和入口吊舱是同一回事。
Ingress可以提供其他逻辑来管理HTTP级别的流量,例如基于路径的路由,在将请求发送到服务之前调整请求,充当SSL端点等。
但是无论如何,您都应该以某种方式将外部流量传递到节点。至此,我们将返回 Load Balancer 配置。
在某些情况下,当您的集群部署在提供 Load Balancer 服务的云上时,Ingress控制器还将负责创建云 Load Balancer 。
您是否使用kops在AWS上部署Kubernetes集群?
通常,kops将创建一个与AWS集成且没有任何问题的集群,因此您可以使用LoadBalancer类型的Service。手动执行所有操作,可能会造成一些小的配置错误,很难发现和纠正。
请查看非常好的文章:
如何在AWS上创建Ingress: