Как заставить HPA масштабировать развертывание на основе показателей, полученных в другом развертывании - PullRequest
5 голосов
/ 29 марта 2019

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

У меня уже есть готовая утилита Prometheus, адаптер Prometheus, пользовательский сервер метрик и масштабируемое развертывание worker с пользовательской метрикой my_controller_metric, созданной модулями worker, уже работает.

Теперь мои worker стручки больше не производят эту метрику, а controller. Похоже, что API Autoscaling / v1 не поддерживает эту функцию. Я могу при необходимости указать HPA с API автоматического масштабирования / v2beta1.

Вот моя спецификация для этого HPA:

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: my-worker-hpa
  namespace: work
spec:
  maxReplicas: 10
  minReplicas: 1
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: my-worker-deployment
  metrics:
  - type: Object
    object:
      target:
        kind: Deployment
        name: my-controller-deployment
      metricName: my_controller_metric
      targetValue: 1

Когда конфигурация применяется с kubectl apply -f my-worker-hpa.yml, я получаю сообщение:

horizontalpodautoscaler "my-worker-hpa" configured

Хотя это сообщение, кажется, в порядке, HPA не работает. Эта спецификация искажена?

Как я уже сказал, метрика доступна на сервере пользовательских метрик с kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1" | jq . | grep my_controller_metric.

Это сообщение об ошибке от HPA:

Type           Status  Reason                 Message
----           ------  ------                 -------
AbleToScale    True    SucceededGetScale      the HPA controller was able to get the target's current scale
ScalingActive  False   FailedGetObjectMetric  the HPA was unable to compute the replica count: unable to get metric my_controller_metric: Deployment on work my-controller-deployment/unable to fetch metrics from custom metrics API: the server could not find the metric my_controller_metric for deployments

Спасибо!

1 Ответ

0 голосов
/ 06 июня 2019

В вашем случае проблема в конфигурации HPA: spec.metrics.object.target также должна указывать версию API. Помещение apiVersion: extensions/v1beta1 под spec.metrics.object.target должно исправить это.

Кроме того, существует открытая проблема о лучшей проверке конфигурации в HPA: https://github.com/kubernetes/kubernetes/issues/60511

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...