我在Azure中有一些正在生产中的应用程序。所有这些应用程序都属于同一公司,并且彼此通信。我想将它们迁移到Kubernetes。
我的问题是:这种情况下的最佳做法是什么?为什么?
有人建议使用一个群集和多个名称空间,但我不知道为什么。
例如:https://www.youtube.com/watch?v=xygE8DbwJ7c推荐集群内执行集群内多租户的应用程序,但是这种选择的参数对我来说还不够。
答案 0 :(得分:6)
我的问题是:这种情况下的最佳做法是什么?以及为什么?
答案是:这取决于...
尝试根据我们的经验进行总结:
每个应用程序的集群通常会浪费大量资源,尤其是给高可用性集群一个要求,并且当单个应用程序由自然集群在一起的大量微服务组成时,或者当必须考虑一些特殊的安全考虑。但是,根据我们的经验,这种情况很少见(但这要视情况而定)...
集群中应用程序的命名空间更符合我们的经验和需求,但是同样,这也不应该过分(因此,这又要视情况而定),因为例如您的CNI可能会导致瓶颈流氓应用程序(或设置)在看似无关的情况下会降低其他应用程序的性能。如果将所有负载不计代价地挤入一个群集中,则可能发生负载均衡和推出停机时间,资源冲突以及其他情况。因此,这也有其局限性。
两全其美-我们从单个集群开始,当我们自然到达单独的(和单独执行的)用例(例如,qa,dev,舞台环境,具有特殊安全考虑的其他客户端等)时,我们进行了迁移到更多群集,并在每个群集中保留合理命名空间的应用程序。
因此,总而言之:取决于可用的计算机池(节点数),群集的大小,应用程序本身的大小(微服务/服务复杂性),HA要求,冗余,安全考虑等。以便将所有应用程序都放入具有命名空间的应用程序的群集中,然后又可以分成几个群集(同样,每个群集中也包含命名空间的应用程序),或者每个群集完全隔离一个应用程序。所以-这取决于。
答案 1 :(得分:0)
这实际上取决于情况。我可以想到一种情况,其中某些应用程序需要专用的更高配置节点(例如GPU)。 在这种情况下,具有带有GPU节点的专用群集可能对此类应用程序有利。并拥有其他普通应用程序的普通CPU节点。