代码之家  ›  专栏  ›  技术社区  ›  Ijaz Ahmad

在Kubernetes上部署数据驱动的web应用程序

  •  0
  • Ijaz Ahmad  · 技术社区  · 6 年前

    目前,我正在运行一个数据驱动的web应用程序,所有这些都集成在一个Docker映像中,nginx、appserver和Postgres都捆绑在一起。它只是在一个有Docker的虚拟机上运行。

    我需要将整个堆栈、一体机迁移到Kubernetes,并寻找一种推荐的标准云本地部署方式。

    • 我知道我需要将nginx作为单独的部署或pod运行,将app server作为单独的pod/部署运行。

    • 我需要为数据库做一个选择,是使用外部数据库服务,在Kubernetes外部运行,还是在Kubernetes上作为有状态集运行我自己的Postgres。

    • 如果我使用外部服务,那么当我升级应用程序并确保没有版本不匹配时,我需要担心,而且可能外部服务没有那么灵活,因为我无法控制它。使用数据库的推荐方法是什么,通过Kubernetes自行部署还是使用外部数据库?

    • 关于nginx,我应该使用我自己的nginx作为单独的部署运行,还是应该使用入口控制器?与nginx相比,使用ingres有什么好处,尽管nginx作为部署可以自动伸缩,而ingres控制器却不能?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Rico    6 年前

    如果我使用外部服务,那么当我升级应用程序并确保没有版本不匹配时,我需要担心,而且可能外部服务没有那么灵活,因为我无法控制它。使用数据库的推荐方法是什么,通过Kubernetes自行部署还是使用外部数据库?

    这完全是基于这个问题的意见。如果您不太关心成本,我会使用外部数据库,可能是像amazonrds或GCP的cloudsql这样的云提供商数据库。在IMO中,您将从外部卸载数据库管理,并且在出现问题时更容易调试。另一个方面是,您可以利用一些性能/可伸缩性更好的东西,比如 Amazon Aurora .

    如果您担心成本,那么使用in-Kubernetes解决方案,它将使您在数据库、nginx和应用程序pod中使用相同的机器集。

    实际上,您可以自动缩放nginx入口控制器,该控制器在同一容器中运行nginx并由部署管理,您必须根据一些指标(如nginx入口控制器吊舱上的CPU)设置自动缩放。