То, чего я пытаюсь добиться, - это создание горизонтального автомасштабатора стручков, способного масштабировать стручки 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
Спасибо!