Как настроить автоматическое масштабирование для типа: Объект - PullRequest
0 голосов
/ 09 октября 2018

У меня настроены пользовательские метрики.

Когда я запускаю:

kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/my-namespace/deployments.extensions/sample-app/queue_length" | jq

Я получил:

...
  "items": [
    {
      "describedObject": {
        "kind": "Deployment",
        "namespace": "my-namespace",
        "name": "sample-app",
        "apiVersion": "extensions/v1beta1"
      },
      "metricName": "queue_length",
      "timestamp": "2018-10-09T18:14:15Z",
      "value": "30"
    }
  ]
...

Поэтому я хочу масштабировать свое развертывание с помощью этой метрики:

kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2beta1
metadata:
  name: sample-app
  namespace: my-namespace
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: sample-app
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Object
    object:
      metricName: queue_length
      target:
        apiVersion: extensions/v1beta1
        kind: Deployment
        name: sample-app
      targetValue: 20

Но, похоже, это не сработает, возможно, мне придется указать - type: Object несколько иначе.

Я попытался изменить kind на развертывания, deployments.extension, deployments.extensionsи т. д., но я получаю сообщение об ошибке FailedGetScale

Upd.: Я выяснил, что пространство имен для объекта HPA и целевого объекта должно быть одинаковым, поэтому я изменил его.И теперь я получаю

the HPA was unable to compute the replica count: unable to get metric queue_length: Deployment on default sample-app/unable to fetch metrics from custom metrics API: the server could not find the metric queue_length for deployments.extensions sample-app

Upd2.: Понял: hpa был в пространстве имен default, в то время как метрика была выставлена ​​на my-namespace.Так что будьте осторожны с пространствами имен!

1 Ответ

0 голосов
/ 09 октября 2018

Попробуйте это:

---
kind: HorizontalPodAutoscaler
apiVersion: autoscaling/v2beta1
metadata:
  name: sample-app
  namespace: my-namespace
spec:
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: sample-app
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Object
    object:
      target:
        kind: Service
        name: sample-app
      metricName: queue_length
      targetValue: 20
...