Kubernetes HPA中的Overprovision Pods资源

时间:2018-05-14 12:10:28

标签: kubernetes autoscaling pod

目前,如果我们想在kubernetes中使用Horizo​​ntal Pod自动缩放,我们需要为我们想要的服务指定以下内容:

   Limits:
      cpu:  150m
      memory:   150Mi
    Requests:
      cpu:      42m
      memory:       50Mi

我有一些服务可以使用HPA扩展。

我们可以过度配置这些服务吗?与这些服务一样,资源添加超出了VM可用的总资源。

更新:: 1.更多解释问题,2。添加图像

考虑以下情况:假设pod的请求在总可用CPU范围内,但限制超出它

例如:

总可用CPU为1000m核心,2个容量为500m核心请求,每个限制 1000m。

首先,如果总数只有1000米,我可以设置这个限制,如1000m?

如果是的话? Update2:<我想我们可以这样做,因为我在图像>

中进行了如下所示的实验

Over-Provisioned Cluster

  

现在,如果pod 2没有使用它的整个500米核心CPU和pod   达到了要求的总限额500米,

     

这个吊舱现在可以使用超过500米的核心,这些核心没有被使用   第二个限制设置为1000?

如果没有? 更新2:我想这不再有效了

  

然后我猜想无法完成配置?

1 个答案:

答案 0 :(得分:0)

让我们首先简要解释一下Autoscaling Algorithm

每30秒一次(--horizontal-pod-autoscaler-sync-period默认值),自动调节器控制循环对pod进行排队并收集其CPU利用率。然后,它将此值的算术平均值与配置的阈值进行比较,并调整副本数以匹配所需的CPU利用率目标。 CPU利用率是pod的最后1分钟CPU使用率除以pod请求的CPU的平均值。目前,CPU使用率取自Heapster服务(应存在于kube-system命名空间中)。

在此部分,资源请求,资源限制和pod关联性没有用处。我们只获得了所需数量的副本。 然后,Scheduler会参与自动缩放过程,并根据副本编号开始调度pod。此时,将考虑资源请求,资源限制和pod亲缘关系,以确定将部署下一个pod副本的节点。

根据上面提到的,您可以在同一时间段内进行多次无法扩展到最大副本数量的部署。但是,如果资源不足,首先扩大规模 - 消耗资源,任何其他不适合剩余资源的容器将不会被安排,直到资源再次释放为止。

在GCP或GKE上,您可以使用autoscaler在需要更多计算容量时将新节点添加到群集,并在负载下降时将其删除。这将有助于避免“过度配置”,因为您可以始终拥有所需的计算容量,而不是更多,而不是更少。

<强>更新 调度程序根据可用资源,命名空间上设置的默认或配置限制以及pod关联来决定是否运行pod。

限制每个特定pod的工作,限制其资源消耗;它们的目的不是限制几个pod的摘要资源消耗。

使用请求中提到的资源量启动pod。

例如,如果节点上有1000个CPU,并且pod请求限制为1000的500,则调度程序会知道其他500个可用,即使此时该pod消耗所有资源达到限制。因此,在具有1000个CPU可用的节点上,您可以启动两个pod,其中包含请求500和每个限制1000。

相关问题