架构Kubernetes +微服务

时间:2018-10-19 04:18:51

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

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

每个spa页面将只有一台计算机,该计算机仅呈现UI,执行SSR并从浏览器接收请求。 例如,www.abc.com / foo将被路由到此计算机。我正在考虑将应用程序UI代码放入kubernetes pod中并将其托管在机器/节点上。同样使用KOPS,我将管理节点和Pod的自动缩放。

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

所以现在我有2个Pod驻留在一个节点上,该节点会根据流量自动缩放。 同样,对于我网站上的每个页面,我都会有一个节点,每个节点有2个容器。

我的问题如下:-

  1. 以上是否有最佳实践或其他设计解决方案?
  2. 如何实现基于路径的路由(如www.abc.com/foo)调用我的网页容器?
  3. 如何在不使用负载平衡器的情况下将Pod暴露于外部环境(即Internet)?
  4. 每个豆荚应该有不同的存储库吗?

1 个答案:

答案 0 :(得分:2)

  

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

您可以使用PodAffinity来共同放置豆荚。

  

我应该如何实现基于路径的路由,例如www.abc.com/foo应该调用   我的网页窗格?

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

  

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

您可以使用// Headings// $headers[] = ['Id', 'Name']; // 2 Rows // $data[0] = ['1', 'John']; $data[1] = ['2', 'Roger']; Excel::create('report', function($excel) use($headers, $data) { $excel->sheet('sheet 1', function($sheet) use($headers, $data){ $merged_records = array_merge($headers, $data); $sheet->fromArray($merged_records, null, 'A1', false, false); }); })->export('csv'); 类型的NodePort。请注意,您通常使用Ingress或NodePort服务,这种方法的缺点是您将无法执行路径,并且必须在应用程序中进行处理。

  

每个豆荚应该有不同的存储库吗?

git仓库?当然,每个应用程序必须具有不同的容器映像。