VPA 的文档指出 HPA 和 VPA 不应该一起使用。它只能用于在您想要扩展自定义指标时进行聚合。
我在 CPU 上启用了缩放。
我的问题是我可以为某些部署启用 HPA(比如说 A)并为某些部署启用 VPA(比如说 B)。或者这也会导致错误。
VPA 的文档指出 HPA 和 VPA 不应该一起使用。它只能用于在您想要扩展自定义指标时进行聚合。
我在 CPU 上启用了缩放。
我的问题是我可以为某些部署启用 HPA(比如说 A)并为某些部署启用 VPA(比如说 B)。或者这也会导致错误。
不建议同时使用它们,因为如果它们都检测到需要内存,他们可能想尝试同时解决相同的问题,这将导致资源分配错误。
这不是可以在应用程序部署级别指定的内容,但您可以指定应该使用哪个部署HPA
并VPA
进行扩展targetRef
因此,对于您的部署,app1
您可以指定VPA
:
apiVersion: autoscaling.k8s.io/v1beta2
kind: VerticalPodAutoscaler
metadata:
name: app1-vpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: app1
对于app2
您可以指定使用HPA
:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: app2-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: app2
如果需要在相同的部署中同时使用 HPA 和 VPA,您只需确保他们的行为基于不同的指标。这样,您可以通过按相同事件进行缩放来防止它们。总结一下,如果 HPA 配置不使用 CPU 或内存来确定其目标,如文档中所述,则 VPA 和 HPA 可以一起使用:
“目前,垂直 Pod Autoscaler不应与 CPU 或内存上的Horizontal Pod Autoscaler (HPA) 一起使用”