用于部署 A 的 kubernetes HPA 和用于部署 B 的 VPA
kubernetes HPA for deployment A and VPA for deployment 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,您只需确保它们的行为基于不同的指标。通过这种方式,您可以通过同一事件进行缩放来防止它们。总结 VPA 和 HPA 可以一起使用,如果他的 HPA 配置不会使用 CPU 或内存来确定其目标,如文档中所述:
"Vertical Pod Autoscaler should not be used with the Horizontal
Pod Autoscaler (HPA) on CPU or memory at this moment"
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,您只需确保它们的行为基于不同的指标。通过这种方式,您可以通过同一事件进行缩放来防止它们。总结 VPA 和 HPA 可以一起使用,如果他的 HPA 配置不会使用 CPU 或内存来确定其目标,如文档中所述:
"Vertical Pod Autoscaler should not be used with the Horizontal Pod Autoscaler (HPA) on CPU or memory at this moment"