Docker 如何确定在Kubernetes中需要多少个服务实例?

Docker 如何确定在Kubernetes中需要多少个服务实例?,docker,server,kubernetes,containers,Docker,Server,Kubernetes,Containers,所以基本上我从库伯内特斯开始,想尝试一些东西。现在我想部署一个Web服务器、一个数据库、一个NodeJs服务器等等。。。现在,我如何确定我需要在我的服务器上提供这些服务的实例数量?这是一个复杂的问题,答案取决于您特定的应用程序行为和资源利用率。简言之,“简短答案”将是:“视情况而定”。这取决于以下主要因素: 应用程序资源利用率 有多少RAM、CPU、磁盘、插槽, 等您的应用程序是否通常使用:平均值?最大值?敏 应用程序首先遇到哪些瓶颈或资源限制 应用程序中的哪些例程可能导致高于正常的利用率?

所以基本上我从库伯内特斯开始,想尝试一些东西。现在我想部署一个Web服务器、一个数据库、一个NodeJs服务器等等。。。现在,我如何确定我需要在我的服务器上提供这些服务的实例数量?

这是一个复杂的问题,答案取决于您特定的应用程序行为和资源利用率。简言之,“简短答案”将是:“视情况而定”。这取决于以下主要因素:

  • 应用程序资源利用率
    • 有多少RAM、CPU、磁盘、插槽, 等您的应用程序是否通常使用:平均值?最大值?敏
    • 应用程序首先遇到哪些瓶颈或资源限制
    • 应用程序中的哪些例程可能导致高于正常的利用率?(这就带来了很多复杂性……应用程序都是不同的,并执行许多功能来响应输入,如客户端请求。并非每个功能都具有相同的行为(即资源利用率)
  • 高可用性/故障切换
    • 选择Kubernetes的原因之一可能是因为易于扩展应用程序并使其具有高可用性,而不会出现单点故障
    • 这归结为:您需要应用程序的可用性如何
    • 在集群/服务器级别上:有多少节点会停机或不正常,并且仍然保持足够的工作节点来处理请求
    • 在应用程序/容器级别:有多少个
      Pod
      s可以放下并仍然处理请求或预期操作
    • 什么级别的服务降级是可接受的
  • 不同的应用程序如何相互作用和共同运行?
    • 另一个非常复杂的问题是,如果不一起观察他们的行为,很难确定
    • 您可以尝试对“每秒请求数”与资源利用率和峰值等指标进行分析。然而,这很难简化为单个数字或常数/线性因果关系
    • 某些请求或输入是否会导致子部件上的负载“扇出”或放大
    • 例如:
      • 是否有一些SQL查询比其他查询导致更高的数据库负载
      • 在支持其他
        服务的
        Pod
        s中是否有一些操作会导致更高的资源利用率
      • 在“最大负载”情况下,系统如何共同工作

如果不进行负载测试,这类问题很难回答。我见过的公司很少有这样做的!可悲的是,像这样的任何问题最终都会发生在生产中,并且必须在事后处理。它最终成为DevOps、Ops或需要处理它的待命工程师,这并不是最好的情况,因为该人员通常不完全了解应用程序的代码,无法对其进行全面诊断和反思。

如果您仍在使用kubernetes,请使用:

  • 用于无状态组件(如Web服务器)的水平pod自动缩放器

  • 用于应用服务器的水平吊舱自动缩放器

  • DB compoenets的有状态集或运算符(估计集群的初始大小,稍后手动增长)

一切都结束了

事物会根据负载自动增长和收缩


注意:使用@Trin的答案作为如何配置自动缩放器和自动缩放标准的指南。kubernetes metrics system提供了一个度量列表,可用于自动缩放。

嘿,非常感谢您提供的详细答案。我想我将不得不进一步研究你上面提到的所有这些要点。:-)