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

时间:2018-11-01 22:25:47

标签: docker server kubernetes containers

所以基本上我是从Kubernetes开始的,想尝试一些东西。现在,我想部署一个Web服务器,一个数据库,一个NodeJs服务器等等。现在,如何确定我的服务器中每个服务需要多少个实例?

2 个答案:

答案 0 :(得分:2)

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

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

如果不进行负载测试,这种事情很难回答。我见过的公司都很少,甚至根本没有这样做!可悲的是,这样的问题通常最终会在生产中发生,并且必须在事后加以处理。它最终将由DevOps,Ops或需要处理的紧急呼叫工程师来解决,这不是最好的情况,因为通常该人员不完全了解应用程序的代码才能完全诊断和自检。 / p>

答案 1 :(得分:1)

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

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

  • 用于应用程序服务器的水平容器自动缩放器

  • 用于数据库Compoenet的有状态集合或运算符(估计集群的初始大小并在以后手动增长)

全部完成。

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

注意:使用@Trin的答案作为指导来配置如何配置自动缩放器和自动缩放条件。 kubernetes指标系统公开了一系列指标,您可以使用这些指标进行自动缩放。