【问题标题】:Architecture Kubernetes + microservices架构 Kubernetes + 微服务
【发布时间】:2019-03-23 23:05:09
【问题描述】:

我需要设计一个包含多个 spa 页面的网站解决方案。 我认为的高级设计如下:-

每个 spa 页面都有一台机器,它只会渲染 UI、执行 SSR 并接受来自浏览器的请求。 例如,www.abc.com/foo 将被路由到这台机器。我正在考虑将应用程序 UI 代码放在 kubernetes pod 中并将其托管在机器/节点上。同样使用 KOPS,我将管理节点和 Pod 的自动缩放。

现在,pod 中的这个应用程序将调用其他 pod 以在网页上显示数据。例如,将从 pod1 调用 www.abc.com/API/foo。我正在考虑制作另一个 pod,它将与网页 pod 节点位于同一节点上。

所以现在我有 2 个 Pod 位于一个节点上,它们将根据流量自动缩放。 同样,对于我网站上的每个页面,我都会有一个节点,每个节点有 2 个 pod。

我现在的问题如下:-

  1. 以上是否有任何最佳实践或其他设计解决方案?
  2. 如何实现基于路径的路由,例如 www.abc.com/foo 应该调用我的网页 pod?
  3. 如何在不使用负载平衡器的情况下将 pod 暴露给外部世界(即互联网)?
  4. 我应该为每个 pod 设置不同的存储库吗?

【问题讨论】:

标签: amazon-web-services kubernetes microservices kops kubernetes-pod


【解决方案1】:

以上是否有任何最佳实践或其他设计解决方案?

您可以使用 PodAffinity 来共同定位您的 pod。

我将如何实现像 www.abc.com/foo 这样的基于路径的路由应该调用 我的网页 pod?

您可以使用 Kubernetes Ingress。由于这是第 7 层设施,您将能够执行多个主机路径,请记住,这通常使用 LoadBalancer 类型的服务暴露给外部。

如何在不使用的情况下将 pod 暴露给外部世界,即互联网 负载均衡器?

您可以使用NodePort 类型的Service。请注意,您通常使用 Ingress 或 NodePort 服务,这种方法的缺点是您将无法执行路径,并且必须在您的应用程序中进行处理。

我应该为每个 pod 设置不同的存储库吗?

git 存储库?当然,您必须为每个应用程序提供不同的容器映像。

【讨论】:

  • Ingress 处于测试阶段,仅支持 http。我需要 https 支持。
  • 它也支持https。
猜你喜欢
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 2018-03-29
  • 2016-11-22
相关资源
最近更新 更多