目前,我在一个Docker Image中运行一个数据驱动的Web应用程序,nginx,app server和Postgres都捆绑在一起 . 它只是在带有Docker的VM上运行 .
我需要将整个堆栈,一体化的东西迁移到Kubernetes并寻找标准的推荐的 Cloud 原生部署方式 .
-
我知道我需要将nginx作为单独的部署或pod运行,并将app服务器作为单独的pod / deployment运行 .
-
我需要为数据库做出选择,我是否应该使用外部数据库服务,在Kubernetes外运行,或者在Kubernetes上运行我自己的Postgres作为有状态集 .
-
如果我使用外部服务,那么当我升级应用程序并确保没有版本不匹配时我将需要担心,并且外部服务可能不太灵活,因为我无法控制它 . 使用数据库的推荐方法是什么,要么是在Kubernetes上自我部署还是使用外部数据库?
-
关于nginx,我应该使用自己的nginx作为单独的部署运行,还是应该使用Ingress Controller?与nginx相比,使用ingress有什么优势,虽然nginx作为部署可以自动扩展,而入口控制器却不能?
这里我的问题的重点,在每一步,我想避免任何反模式将堆栈部署到Kubernetes,这样我就不必再为之奋斗了 .
1 回答
这完全是基于这个问题的意见 . 如果您不太关心成本,我会使用外部数据库,可能是Amazon RDS等 Cloud 提供商数据库或GCP的Cloud SQL . IMO,您将从外部卸载数据库管理,并在出现问题时更容易调试 . 另一个方面是您可以利用具有更好性能/可伸缩性的东西,如Amazon Aurora .
如果您担心成本,那么请使用Kubernetes解决方案,这将使您为数据库和nginx以及应用程序窗口使用相同的计算机集 .
实际上,您可以自动调整nginx入口控制器,该控制器在同一容器中运行nginx并由部署管理,您必须根据nginx入口控制器盒上的某些指标(如CPU)设置自动调节 .