有关每个节点限制100个Pod的问题

时间:2019-03-26 09:52:13

标签: kubernetes

我正在尝试构建一个Web应用程序,每个用户都可以在各自的容器中运行自己的应用程序实例。我是kubernetes的新手,所以我可能无法正确理解某些内容。

我将要使用一些物理服务器,据我所知,在Kubernetes中这些物理服务器称为节点。对于每个节点,限制为100个窗格。因此,如果我正在构建应用程序,以便每个用户都有自己的Pod,那么每个物理服务器是否会限制为100个用户? (如果我有10台服务器,那么我只能有500个用户?)我想我可以在每个物理服务器上运行多个充当节点的VM,但这不会破坏容器化的目的吗?

2 个答案:

答案 0 :(得分:1)

节点中有太多容器的主要问题是,这会降低节点性能并使其管理容器的速度较慢(有时甚至不可靠),每个容器都是单独管理的,增加容器的数量将花费更多时间,并且更多资源。

创建POD时,运行时需要保持恒定的跟踪,进行探测(准备状态和活动状态),监视,路由规则,这些规则会影响许多其他小的点,这些点加起来会增加节点的负载。

即使您可以分配CPU的一部分,容器也需要处理器时间才能正常运行,添加过多的容器\ pod会增加上下文切换并降低POD消耗其配额时的性能。

每个平台提供商也都设置了自己的限制,以提供良好的服务质量和SLA,节点超载也是一种风险,因为节点是单点故障,而高密度节点中的任何故障都可能造成巨大的故障。对集群和应用程序的影响。

您应该考虑:

  • 较小的节点,并将更多节点添加到群集或
  • 改为使用Actor,每个客户将是一个Actor。并且许多actor将在单个容器中运行。为了使它在集群中更加平衡,您可以将参与者划分为多个容器实例。

关于限制,this thread对这些问题进行了很好的讨论

答案 1 :(得分:0)

由于硬限制if you have 10 servers you're limited to 1000 pods

您可能还想在您的1000个可用吊舱中计入control plane个吊舱。通常位于命名空间kube-system中,它可以包括(但不限于):

  • 节点日志导出器(每个节点1个)
  • 指标出口商
  • kube代理(通常每个节点1个)
  • kubernetes仪表板
  • DNS(根据节点数扩展)
  • 像certmanager这样的控制器

一个很好的经验法则是每个节点80-90个应用程序容器,因此,如果您在这些节点上没有任何其他大型部署,那么10个节点将能够处理800-900个客户端。


如果您使用容器来获得性能,则创建节点VM将违反您的目标。但是,如果您使用容器作为部署一致环境和扩展无状态应用程序的方法,那么将VM作为节点可能是有意义的。

没有魔术规则,您的情况将决定要做什么。

管理虚拟化集群可能会导致kubernetes集群的基础结构复杂性急剧上升,也许kubernetes并不是管理工作负载的最有效工具。

您可能还想看看Nomad,但似乎没有这些限制,并且可能会提供更符合您需求的功能。