如果多个 POD 具有相同的指标,Kubernetes HPA(HorizontalPodAutoscaler)如何确定应该使用哪个 Pod 的指标



假设我们在演示命名空间中部署了以下HPA(HorizontalPodAutoscaler(,并且该演示命名空间中的多个POD(POD-A、POD-B(具有相同的度量"istio_requests_per_second";,HPA如何确定度量";istio_requests_per_second;应该使用哪个吊舱?或者每个具有该指标的POD都将根据HPA目标进行评估?

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: httpbin
spec:
minReplicas: 1
maxReplicas: 5
metrics:
- type: Pods
pods:
metric:
name: istio_requests_per_second
target:
type: AverageValue
averageValue: "10"
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: httpbin

测试。。。

如果您使用的是prometheus,那么它就是k8的pod名称和返回的度量值之间的关联适配器。基本上,HPA向prometheus适配器请求度量istio_requests_per_second。通过调用/apis/custom.metrics.k8s.io/v1beta1/namespaces/myNamespace/pods/mypod,适配器获取该信息并查看为其应该查询的内容配置的规则。

https://github.com/kubernetes-sigs/prometheus-adapter/blob/master/docs/config-walkthrough.md

根据我的测试,我认为HPA使用'scaleTargetRef'来确定应该使用哪些POD的度量,并从度量服务器中提取这些度量,并根据目标配置进行评估。

根据Kubernetes文档:

对于对象度量和外部度量,将获取一个描述有问题对象的度量。将该度量与目标值进行比较,以产生如上所述的比率。在自动缩放/v2 API版本中,在进行比较之前,可以选择将该值除以Pod的数量。

它将根据目标吊舱的平均值计算比率。

参考文献:

1-https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#how-水平足自动秤工作吗

相关内容

  • 没有找到相关文章

最新更新