Сложность настройки горизонтального автомасштабирования модулей с внешней метрикой

Я пытаюсь настроить Horizontal Pod Autoscaler для масштабирования развертывания на основе рабочего цикла подключенных графических процессоров.

Я использую 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

Я действительно не знаю, как это исправить. Кто-нибудь знает, что может быть не так, или что я могу сделать дальше?

Все выглядит хорошо, вы включили stackdriver?

Rico 28.10.2018 02:00

Вы смогли это решить?

rhg 03.11.2018 17:51

Я сделал, добавил разрешение в ответе ниже.

mlucy 04.11.2018 20:22
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
2
3
1 858
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы используете «тип: внешний». Для списка внешних показателей необходимо использовать kubernetes.io вместо container.googleapis.com [1].

Замените «metricName: container.googleapis.com | container | accelerator | duty_cycle».

с участием

‘MetricName: kubernetes.io | container | accelerator | duty_cycle’

[1] https://cloud.google.com/monitoring/api/metrics_other#other-kubernetes.io

Ответ принят как подходящий

Эта проблема исчезла сама по себе, как только я поместил систему под нагрузку. Теперь он работает нормально с той же конфигурацией.

Не знаю почему. Я предполагаю, что StackMetrics не сообщал значение рабочего цикла, пока оно не превысило 1%.

Другие вопросы по теме