我正在将许多应用程序从AWS ECS迁移到Azure AKS,作为我在Kubernetes中的第一个生产部署,我希望确保它从一开始就被正确设置。
被移动的应用程序都在不同程度上使用资源,其中一些是内存密集型的,另一些是CPU密集型的,并且都在不同的规模上运行。
经过一些研究,我不确定运行单个大型集群并在它们自己的命名空间中运行它们,还是使用Federation运行每个应用程序一个集群,哪种方法是最好的方法。
我应该注意到,我需要监控每个应用程序的资源使用情况,以便进行成本管理(以及其他事情),并且大多数应用程序之间都需要通信。
我能够设置这两种布局,并且我确信这两种方法都会起作用,但我不确定每种方法的优缺点,我是否应该完全避免其中一种,或者我是否应该考虑其他选择?
发布于 2019-02-18 04:05:50
因为您正处于kubernetes之旅的开始,所以我会为每个阶段使用单独的集群(或者至少是单独的dev和prod)。您可以很容易地关闭您的集群(我在资源匮乏的情况下做了几次)。此外,如果没有正确设置这些网络策略,您可能会发现来自不同阶段/命名空间(如测试和沙箱)的服务相互通信。或者应该部署dev来更改其他命名空间中的某些内容的管道。为什么要冒生产受到开发工作影响的风险?
即使你不需要自己升级控制平面,aks仍然有它的版本和标志,最好在转移到单独的集群上生产之前对它们进行测试。
因此,我最初的决定是设置一些硬边界:不同的集群。稍后,一旦你对ak和kubernetes有了更多的了解,你就可以重新审视你的决定了。
发布于 2019-02-18 13:12:31
看情况..。请注意,AKS仍然不支持多节点池(在短期路线图上),因此您需要在单池VM类型中运行这些工作负载。此外,在考虑多个群集时,请考虑多租户要求和单个群集的爆炸半径。我通常会看到用户部署多个集群,即使有一些管理开销,但良好的SCM和配置管理实践可以帮助解决此开销。
发布于 2019-02-18 03:13:13
正如您所说的,应用程序之间需要通信,我建议您使用一个集群。应用程序隔离可以通过将每个应用程序部署在单独的命名空间中来实现。您可以在命名空间级别收集指标,也可以在命名空间级别设置资源配额。这样,您就可以在应用程序级别执行操作
https://stackoverflow.com/questions/54736502
复制相似问题