kubernetes - 使用外部指标配置 Horizo​​ntal Pod Autoscaler 很困难

标签 kubernetes google-kubernetes-engine

我正在尝试配置 Horizo​​ntal 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 - 使用外部指标配置 Horizo​​ntal Pod Autoscaler 很困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53018420/

相关文章:

java - 如何使用 Kubernetes Azure 和 AWS SDK for java 部署应用程序

kubernetes - kubernetes 部署 pod 选择器的目的是什么?

docker - 如何curl部署在Kubernetes上的容器?

kubernetes - 并行删除GKE节点

kubernetes - GKE |集群不会在任何区域配置

kubernetes - 使用 GKE 中的日志记录自定义指标进行水平 Pod 自动缩放

amazon-web-services - Kubernetes 中的静态传出 IP

kubernetes - 有没有办法在Log4Net.config中使用Kubernetes容器环境变量?

kubernetes - 为 Kubernetes 入口定义回退服务

kubernetes - 在不部署现有的情况下创建重复的 Pod/Pod