mit*_*nia 6 horizontal-scaling kubernetes
假设我们有以下部署:
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
replicas: 2
template:
spec:
containers:
- image: ...
...
resources:
requests:
cpu: 100m
memory: 50Mi
limits:
cpu: 500m
memory: 300Mi
Run Code Online (Sandbox Code Playgroud)
我们还创建了一个HorizontalPodAutoscaler
对象,它根据 CPU 平均利用率自动增加/减少 pod 的数量。我知道 HPA 将根据资源请求计算 Pod 的数量,但是如果我希望容器能够在水平扩展之前请求更多资源怎么办?
我有两个问题:
1)在定义 HPA 时,K8s是否甚至使用资源限制?
2) 我可以告诉 HPA 根据资源限制而不是请求进行扩展吗?或者作为实现这种控制的一种方式,我可以将targetUtilization
值设置为100% 以上吗?
嗨,在部署中,我们有资源请求和限制。根据此处的文档,这些参数在 HPA 成为自动缩放器的主要角色之前起作用:
- 创建 Pod 时,Kubernetes 调度程序会选择一个节点供 Pod 运行。每个节点对每种资源类型都有一个最大容量:它可以为 Pod 提供的 CPU 和内存量。
- 然后kubelet启动一个 Pod 的容器,它将 CPU 和内存限制传递给容器运行时。
- 如果Container 超过其内存限制,它可能会被终止。如果它是可重启的,kubelet 将重启它,就像任何其他类型的运行时故障一样。
如果 Container 超过其内存请求,则每当节点内存不足时,它的 Pod 很可能会被驱逐。
另一方面:
Horizontal Pod Autoscaler 实现为一个控制循环,其周期由控制器管理器控制(默认值为 15 秒)。控制器管理器根据每个 HorizontalPodAutoscaler 定义中指定的指标查询资源利用率。
注意:请注意,如果 pod 的某些容器没有设置相关的资源请求,则不会定义 pod 的 CPU 利用率,并且自动缩放器不会针对该指标采取任何操作。
希望这有帮助
归档时间: |
|
查看次数: |
1642 次 |
最近记录: |