说我们有以下部署:
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%吗?
答案 0 :(得分:1)
否,HPA根本没有考虑限制。您可以将目标利用率指定为甚至高于100%的任何值。
答案 1 :(得分:0)
您好,我们在部署中拥有资源请求和限制。根据文档here,这些参数在HPA作为自动缩放器起主要作用之前起作用:
- 创建Pod 时,Kubernetes调度程序选择一个节点 Pod继续运行。 每个节点的最大容量为 资源类型:它可以提供的CPU和内存量 豆荚。
- 然后 kubelet 启动一个Pod容器,它将CPU和内存限制传递给容器运行时。
- 如果容器超出的内存限制,则可能会终止。如果可重新启动,则kubelet将重新启动它,就像其他任何类型的运行时失败一样。
如果容器超出其内存请求,则当节点内存不足时,很可能将其Pod逐出。
另一方面:
Horizontal Pod Autoscaler被实现为一个控制循环,其周期由控制器管理器控制(默认值为15秒)。 控制器管理器根据每个HorizontalPodAutoscaler定义中指定的指标查询资源利用率。
注意: 请注意,如果某些容器的容器未设置相关的资源请求,则将不会定义容器的CPU利用率,并且自动缩放器不会对该指标采取任何措施。
希望获得帮助