【发布时间】:2020-06-18 19:19:29
【问题描述】:
我有一些 dockerized 微服务,每个都在某个端口上侦听 http 请求,并且我将这些部署形式化为 kubernetes yaml 文件
但是,我想不出一个可行的策略来在互联网上公开我的部署(就 kubernetes 服务而言)
每个部署都有多个副本,因此我假设每个部署都应该有一个匹配的负载均衡器服务以将其暴露给外部
现在我想不出将这些微服务明智地暴露在互联网上的策略......这就是我的想法:
-
整个集群暴露在一个域名上,服务是子域
- 说集群在
k8s.mydomain.com可用 - 每个负载均衡器服务(公开相应的微服务)都应该可由子域访问
auth-server.k8s.mydomain.comprofile-server.k8s.mydomain.comquestions-board.k8s.mydomain.com- 因此对每个子域的请求将被负载平衡到匹配部署的副本
- 那么我该如何实现这个设置呢?这是可取的吗?
- 我可以将每个负载均衡器公开为一个子域吗?这是自动完成的吗?
- 或者我需要入口控制器吗?
- 我找错树了吗?
- 我正在寻找有关如何公开作为微服务镶嵌的单个应用程序的一般建议
- 说集群在
-
每个服务都暴露在同一个 ip/域上,但每个服务都有自己的端口
- 也许整个集群都可以通过
k8s.mydomain.com再次访问 - 我可以将每个端口映射到不同的负载平衡器吗?
-
k8s.mydomain.com:8000映射到auth-server-loadbalancer -
k8s.mydomain.com:8001映射到profile-server-loadbalancer
-
- 这可能吗?与上面的策略 1 相比,它似乎不太稳健且不太理想
- 也许整个集群都可以通过
-
每个服务都暴露在自己的 ip/域上?
- 也许每个服务都指定了一个静态 ip,而我的域有 A 记录以手动方式将每个子域指向每个这些 ip?
- 我如何知道要使用哪个静态 IP?在生产中?在本地开发中?
也许我在概念化这个错误?整个 kubernetes 集群可以映射到一个 ip/domain 吗?
在 Kubernetes 中公开一堆微服务的最简单方法是什么?另一方面,在生产中公开微服务的最稳健/最理想的方式是什么?在 minikube 中,我是否需要不同的本地发展策略? (我只是要编辑/etc/hosts 很多)
谢谢你的建议,干杯
【问题讨论】:
标签: docker kubernetes microservices