Kubernetes-一个或多个集群

时间:2019-02-17 18:47:40

标签: kubernetes azure-aks

我正在将许多应用程序从AWS ECS迁移到Azure AKS,并且是Kubernetes中对我来说的第一个生产部署,我想确保从头开始正确设置它。

所有正在移动的应用程序都在不同程度上使用资源,其中一些资源占用更多的内存,而另一些资源占用更多的CPU,并且都以不同的规模运行。

经过研究,我不确定哪种方法是运行单个大型集群并在其自己的命名空间中全部运行它们,或者使用联合身份验证在每个应用程序中运行单个集群。

我应该注意,我需要监视每个应用程序的资源使用情况以进行成本管理(除其他事项外),并且大多数应用程序之间都需要通信。

我可以同时设置两种布局,并且确定两者都可以使用,但是我不确定每种方法的优缺点,是否应该完全避免使用,还是应该考虑其他选择?

4 个答案:

答案 0 :(得分:2)

因为您正处在kubernetes旅程的开始,所以我会针对每个阶段使用单独的集群(或至少是单独的dev和prod)。您可以非常轻松地关闭群集(我因资源匮乏而多次这样做)。同样,如果没有正确设置这些网络策略,您可能会发现来自不同阶段/名称空间(例如测试和沙箱)的服务之间会相互通信。或者应该部署dev来更改其他命名空间中某些内容的管道。 为什么冒险生产会受到开发人员工作的影响?

即使您不必自己升级控制面板,ak仍然具有其版本和标志,最好在移至单独的群集上进行生产之前对其进行测试。

因此,我最初的决定是设置一些严格的界限:不同的集群。稍后,一旦您对aks和kubernetes有了更多的了解,就可以查看您的决定。

答案 1 :(得分:1)

取决于...请注意,AKS仍然不支持多个节点池(在短期路线图上),因此您需要在单个池VM类型中运行这些工作负载。另外,在考虑多个群集时,请考虑多租户要求和单个群集的爆炸半径。我通常会看到尽管有一些管理开销,但用户仍在部署多个集群,但是良好的SCM和配置管理实践可以帮助解决这一开销。

答案 2 :(得分:0)

正如您所说的,应用程序之间需要通信,我建议您使用一个集群。通过将每个应用程序部署在单独的命名空间中,可以实现应用程序隔离。您可以在名称空间级别收集指标,并可以在名称空间级别设置资源配额。这样,您就可以在应用程序级别采取行动

答案 3 :(得分:0)

单个群集(具有名称空间和RBAC)更易于设置和管理。单个k8s集群确实支持high load

如果您确实想要多个群集,也可以尝试istio multi-cluster(对于多个群集,istio service mesh)。