amazon-web-services - 将 Kubernetes 流量暴露给 80 (http) 和 443 (https)
问题描述
目前,我的kubernetes集群(位于AWS上)有一个简单的设置 a Deployment
,它有一个 web 容器监听80和443。
该集群还有一个NodePort
服务,它将流量公开在端口30080和30443上。我正在想办法在80和443上接受公共交通。
有什么好方法可以做到这一点?
我对可能的解决方案的想法:
在 AWS 上手动配置ELB,可以将80和443流量映射到30080和30443端口。
kubernetes
LoadBalancer
支持使用,但我在将集群与AWS集成时遇到了一些问题。我宁愿尝试其他可能的解决方案,也不愿被困在这个解决方案上。我看过很多关于
Ingress
服务的帖子,但不同的帖子有完全不同的设置。Ingress
我想知道在我的设置中什么可能是一个很好的用例。Ingress
在我的情况下应该替换我的NodePort
服务吗?
谢谢
解决方案
一旦NodePort服务绑定到所有集群节点上的指定端口,您只需将流量传送到这些节点中的任何一个或所有这些节点。有时它可能会导致额外的延迟,但从连接的角度来看,它应该可以正常工作。
您可以手动配置负载均衡器,然后将所有集群节点添加到其池中,并为它们配置运行状况检查,以便在特定节点出现故障时从池中排除节点。
Ingress实际上以类似的方式工作。到达任何节点的特定端口的所有流量都被转发到Ingress pod。 Ingress 控制器查找创建的Ingress 对象并根据这些对象中的规范配置Ingress pod 。实际上,在我的示例中, Ingress 控制器和Ingress pod是一回事。
Ingress 可以提供额外的逻辑来管理 HTTP 级别的流量,例如基于路径的路由、在将请求发送到服务之前调整请求、像 SSL 端点一样提供服务等。
但是无论如何,您应该以某种方式将外部流量传递到节点。此时,我们将返回负载均衡器配置。
在某些情况下,当您的集群部署在提供负载均衡器服务的云上时,Ingress 控制器也会负责创建云负载均衡器。
您是否使用kops在 AWS 上部署了 Kubernetes 集群?
通常,kops 创建一个与 AWS 集成没有任何问题的集群,因此您可以使用 LoadBalancer 类型的 Service。手动执行所有操作可能会犯一些难以发现和纠正的小配置错误。
请查看非常好的文章:
如何在 AWS 上创建 Ingress:
推荐阅读
- javascript - 为什么当我用 JavaScript 嵌入 PHP 时,我的 PHP 没有激活?
- python - Python 正则表达式:使用 re.sub 在字符串中添加“-”
- python-2.7 - 未收集使用 PyInstaller 打包的 Pytest 测试
- spring-boot - 无法在springboot中使用户具有不同的角色
- php - 我想显示数据库中的所有图像,但我只能显示一个
- wcf - 如何在 UWP 中通过代码隐藏引用 WCF 服务?
- python - 如何将多个 imshow() 结果放在一个图中?
- java - 通过 jdom 创建带有命名空间的 xml 文件时出现 DomException
- php - 如何在 PHP 中更新作曲家
- python - 提交表单时,Django自动为外键赋值?