用于部署 A 的 kubernetes HPA 和用于部署 B 的 VPA

kubernetes HPA for deployment A and VPA for deployment B

VPA 的文档指出 HPA 和 VPA 不应一起使用。它只能在您想要扩展自定义指标时用于聚集。

我在 CPU 上启用了缩放。

我的问题是我能否为某些部署启用 HPA(假设 A)并为某些部署启用 VPA(假设 B)。或者这也会导致错误。

不建议同时使用它们,因为如果它们都检测到需要内存,它们可能想同时尝试解决相同的问题,这将导致资源分配错误。

这不是可以在应用程序部署级别指定的东西,但您可以指定哪个部署应该 HPAVPA 使用 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,您只需确保它们的行为基于不同的指标。通过这种方式,您可以通过同一事件进行缩放来防止它们。总结 VPA 和 HPA 可以一起使用,如果他的 HPA 配置不会使用 CPU 或内存来确定其目标,如文档中所述:

"Vertical Pod Autoscaler should not be used with the Horizontal Pod Autoscaler (HPA) on CPU or memory at this moment"