我正在尝试配置 Horizontal Pod Autoscaler,以根据连接的 GPU 的占空比来扩展部署。
我使用的是 GKE,我的 Kubernetes 主版本是 1.10.7-gke.6 。
我正在学习 https://cloud.google.com/kubernetes-engine/docs/tutorials/external-metrics-autoscaling 上的教程。特别是,我运行了以下命令来设置自定义指标:
kubectl create -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter.yaml
这似乎有效,或者至少我可以访问/apis/custom.metrics.k8s.io/v1beta1 上的指标列表。
这是我的 YAML:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: images-srv-hpa
spec:
minReplicas: 1
maxReplicas: 10
metrics:
- type: External
external:
metricName: container.googleapis.com|container|accelerator|duty_cycle
targetAverageValue: 50
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: images-srv-deployment
我相信 metricName 存在,因为它列在/apis/custom.metrics.k8s.io/v1beta1 中,并且因为它在 https://cloud.google.com/monitoring/api/metrics_gcp 上进行了描述。 .
这是我在描述 HPA 时遇到的错误:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedGetExternalMetric 18s (x3 over 1m) horizontal-pod-autoscaler unable to get external metric prod/container.googleapis.com|container|accelerator|duty_cycle/nil: no metrics returned from external metrics API
Warning FailedComputeMetricsReplicas 18s (x3 over 1m) horizontal-pod-autoscaler failed to get container.googleapis.com|container|accelerator|duty_cycle external metric: unable to get external metric prod/container.googleapis.com|container|accelerator|duty_cycle/nil: no metrics returned from external metrics API
我真的不知道如何调试这个。有谁知道可能出了什么问题,或者我接下来可以做什么?
最佳答案
当我将系统置于负载状态时,这个问题就自行消失了。现在使用相同的配置可以正常工作。
我不知道为什么。我最好的猜测是,直到占空比值超过 1% 时,StackMetrics 才会报告该值。
关于kubernetes - 使用外部指标配置 Horizontal Pod Autoscaler 很困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53018420/