kubernetes - Kubernetes - 单集群或多集群
问题描述
我正在将许多应用程序从 AWS ECS 迁移到 Azure AKS,并且作为我在 Kubernetes 中的第一个生产部署,我想确保它从一开始就正确设置。
被移动的应用程序都在不同程度上使用资源,其中一些更占用内存,而另一些则占用更多 CPU,并且都以不同的规模运行。
经过一些研究,我不确定哪个是运行单个大型集群并将它们全部运行在自己的命名空间中的最佳方法,或者使用联合运行每个应用程序的单个集群的最佳方法。
我应该注意,我需要监视每个应用程序的资源使用情况以进行成本管理(除其他外),并且大多数应用程序之间需要通信。
我能够设置两种布局,并且我确信两者都会起作用,但我不确定每种方法的优缺点,我是否应该完全避免一种,或者我是否应该考虑其他选择?
解决方案
因为您正处于 kubernetes 旅程的开始阶段,所以我会为您拥有的每个阶段(或至少单独的开发和产品)使用单独的集群。你可以很容易地关闭你的集群(我在资源匮乏的情况下做了几次)。也没有正确设置那些网络策略,您可能会发现来自不同阶段/命名空间(如测试和沙盒)的服务相互通信。或者应该部署 dev 以更改其他命名空间中的某些内容的管道。为什么要冒生产受到开发工作影响的风险?
即使您不必自己升级控制平面,aks 仍然有它的版本和标志,最好在转移到单独集群上的生产之前对其进行测试。
所以我最初的决定是设置一些硬边界:不同的集群。稍后,一旦您对 aks 和 kubernetes 有了更多了解,您就可以重新审视您的决定。
推荐阅读
- amazon-web-services - 如何在 Elastic Beanstalk Java SE 平台中传递 jvm 选项/Procfile
- ios - 如何使 UIViewRepresentable @ViewBuilder 与动态内容一起使用?
- android - 如何在android中以编程方式分配静态IP地址
- c# - 为什么这个方法返回一个布尔值?
- python - Discord.py - 列出用户的角色
- python - django-private-chat /dialogs 为空
- python - 如何对图表的细节进行排序
- r - 如何自动将数据框控制台输出转换为其结构
- python - 在进行预测时为未来的数据框提供什么价值?
- sql - PLSQL 同一表中不同日期的相同数据