我正在尝试构建一个Web应用程序,每个用户都可以在各自的容器中运行自己的应用程序实例。我是kubernetes的新手,所以我可能无法正确理解某些内容。
我将要使用一些物理服务器,据我所知,在Kubernetes中这些物理服务器称为节点。对于每个节点,限制为100个窗格。因此,如果我正在构建应用程序,以便每个用户都有自己的Pod,那么每个物理服务器是否会限制为100个用户? (如果我有10台服务器,那么我只能有500个用户?)我想我可以在每个物理服务器上运行多个充当节点的VM,但这不会破坏容器化的目的吗?
答案 0 :(得分:1)
节点中有太多容器的主要问题是,这会降低节点性能并使其管理容器的速度较慢(有时甚至不可靠),每个容器都是单独管理的,增加容器的数量将花费更多时间,并且更多资源。
创建POD时,运行时需要保持恒定的跟踪,进行探测(准备状态和活动状态),监视,路由规则,这些规则会影响许多其他小的点,这些点加起来会增加节点的负载。
即使您可以分配CPU的一部分,容器也需要处理器时间才能正常运行,添加过多的容器\ pod会增加上下文切换并降低POD消耗其配额时的性能。
每个平台提供商也都设置了自己的限制,以提供良好的服务质量和SLA,节点超载也是一种风险,因为节点是单点故障,而高密度节点中的任何故障都可能造成巨大的故障。对集群和应用程序的影响。
您应该考虑:
关于限制,this thread对这些问题进行了很好的讨论
答案 1 :(得分:0)
由于硬限制if you have 10 servers you're limited to 1000 pods。
您可能还想在您的1000个可用吊舱中计入control plane个吊舱。通常位于命名空间kube-system
中,它可以包括(但不限于):
一个很好的经验法则是每个节点80-90个应用程序容器,因此,如果您在这些节点上没有任何其他大型部署,那么10个节点将能够处理800-900个客户端。
如果您使用容器来获得性能,则创建节点VM将违反您的目标。但是,如果您使用容器作为部署一致环境和扩展无状态应用程序的方法,那么将VM作为节点可能是有意义的。
没有魔术规则,您的情况将决定要做什么。
管理虚拟化集群和可能会导致kubernetes集群的基础结构复杂性急剧上升,也许kubernetes并不是管理工作负载的最有效工具。
您可能还想看看Nomad,但似乎没有这些限制,并且可能会提供更符合您需求的功能。