将水平Pod自动缩放与资源请求和限制一起使用

时间:2019-05-18 12:28:50

标签: kubernetes horizontal-scaling

说我们有以下部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  ...
spec:
  replicas: 2
  template:
    spec:
      containers:
        - image: ...
          ...
          resources:
            requests:
              cpu: 100m
              memory: 50Mi
            limits:
              cpu: 500m
              memory: 300Mi

我们还创建了一个HorizontalPodAutoscaler对象,该对象会根据CPU平均利用率自动按比例增加/减少Pod的数量。我知道HPA会根据资源请求计算pod的数量,但是如果我希望容器能够在水平扩展之前请求更多资源怎么办?

我有两个问题:

1)定义HPA时,K8是否甚至使用资源限制

2)我可以告诉HPA根据资源限制而不是请求进行扩展吗?或者,作为实现这种控件的一种方法,我可以将targetUtilization的值设置为大于100%吗?

2 个答案:

答案 0 :(得分:1)

否,HPA根本没有考虑限制。您可以将目标利用率指定为甚至高于100%的任何值。

答案 1 :(得分:0)

您好,我们在部署中拥有资源请求和限制。根据文档here,这些参数在HPA作为自动缩放器起主要作用之前起作用:

  
      
  1. 创建Pod 时,Kubernetes调度程序选择一个节点   Pod继续运行。 每个节点的最大容量为   资源类型:它可以提供的CPU和内存量   豆荚。
  2.   
  3. 然后 kubelet 启动一个Pod容器,它将CPU和内存限制传递给容器运行时。
  4.   
  5. 如果容器超出的内存限制,则可能会终止。如果可重新启动,则kubelet将重新启动它,就像其他任何类型的运行时失败一样。
  6.   

如果容器超出其内存请求,则当节点内存不足时,很可能将其Pod逐出。

另一方面:

  

Horizo​​ntal Pod Autoscaler被实现为一个控制循环,其周期由控制器管理器控制(默认值为15秒)。   控制器管理器根据每个Horizo​​ntalPodAutoscaler定义中指定的指标查询资源利用率。

注意: 请注意,如果某些容器的容器未设置相关的资源请求,则将不会定义容器的CPU利用率,并且自动缩放器不会对该指标采取任何措施。

希望获得帮助