VPA的文档指出HPA和VPA不应一起使用。仅当您想要扩展自定义指标时,它才能用于 gethere。
我在 CPU 上启用了缩放。
我的问题是,我可以为某些部署(假设A(启用 HPA,为某些部署(假设 B(启用 VPA。或者这也会导致错误。
不建议同时使用它们,因为如果它们都检测到需要内存,它们可能希望同时尝试解决相同的问题,这将导致错误分配的资源。
这不是可以在应用程序部署级别指定的内容,但您可以使用targetRef
指定应HPA
和VPA
扩展的部署
因此,对于具有app1
的部署,您可以指定VPA
:
apiVersion: autoscaling.k8s.io/v1beta2
kind: VerticalPodAutoscaler
metadata:
name: app1-vpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: app1
对于您可以指定使用HPA
的app2
:
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 自动缩放器不应与水平 此时CPU 或内存上的 Pod 自动缩放器 (HPA(">