首页 > 解决方案 > 将 Kubernetes 流量暴露给 80 (http) 和 443 (https)

问题描述

目前,我的kubernetes集群(位于AWS上)有一个简单的设置 a Deployment,它有一个 web 容器监听80443

该集群还有一个NodePort服务,它将流量公开在端口3008030443上。我正在想办法在80443上接受公共交通。

有什么好方法可以做到这一点?

我对可能的解决方案的想法

  1. 在 AWS 上手动配置ELB,可以将80443流量映射到3008030443端口。

  2. kubernetesLoadBalancer支持使用,但我在将集群与AWS集成时遇到了一些问题。我宁愿尝试其他可能的解决方案,也不愿被困在这个解决方案上。

  3. 我看过很多关于Ingress服务的帖子,但不同的帖子有完全不同的设置。Ingress我想知道在我的设置中什么可能是一个很好的用例。Ingress在我的情况下应该替换我的NodePort服务吗?

谢谢

标签: amazon-web-serviceskubernetes

解决方案


一旦NodePort服务绑定到所有集群节点上的指定端口,您只需将流量传送到这些节点中的任何一个或所有这些节点。有时它可能会导致额外的延迟,但从连接的角度来看,它应该可以正常工作。

您可以手动配置负载均衡器,然后将所有集群节点添加到其池中,并为它们配置运行状况检查,以便在特定节点出现故障时从池中排除节点。

Ingress实际上以类似的方式工作。到达任何节点的特定端口的所有流量都被转发到Ingress podIngress 控制器查找创建的Ingress 对象并根据这些对象中的规范配置Ingress pod 。实际上,在我的示例中, Ingress 控制器Ingress pod是一回事。

Ingress 可以提供额外的逻辑来管理 HTTP 级别的流量,例如基于路径的路由、在将请求发送到服务之前调整请求、像 SSL 端点一样提供服务等。
但是无论如何,您应该以某种方式将外部流量传递到节点。此时,我们将返回负载均衡器配置。

在某些情况下,当您的集群部署在提供负载均衡器服务的云上时,Ingress 控制器也会负责创建云负载均衡器

您是否使用kops在 AWS 上部署了 Kubernetes 集群?

通常,kops 创建一个与 AWS 集成没有任何问题的集群,因此您可以使用 LoadBalancer 类型的 Service。手动执行所有操作可能会犯一些难以发现和纠正的小配置错误。

请查看非常好的文章:

如何在 AWS 上创建 Ingress:


推荐阅读