Куберне неизвестно поле "поведение" - PullRequest
0 голосов
/ 03 февраля 2020

Я создаю HorizontalPodAutoscaler в Kubernetes, и мне нужно настроить окно стабилизации для уменьшения масштаба меньше, чем по умолчанию. Используемый код и ошибка приведены ниже:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
    name: busy-autoscaler
spec:
    behavior:
        scaleDown:
            stabilizationWindowSeconds: 10
    scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: busy-worker
    minReplicas: 1
    maxReplicas: 2
    metrics:
        - type: Resource
          resource:
              name: cpu
              target:
                  type: Utilization
                  averageUtilization: 50
$ kubectl create -f some-autoscale.yaml
error validating "some-autoscale.yaml": error validating data: ValidationError(HorizontalPodAutoscaler.spec): unknown field "behavior" in io.k8s.api.autoscaling.v2beta2.HorizontalPodAutoscalerSpec

Насколько я понимаю, поле behavior должно поддерживаться из Kubernetes 1.17, как указано в документах . Выполнение kubectl version дает следующий вывод:

Client Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.1", GitCommit:"d224476cd0730baca2b6e357d144171ed74192d6", GitTreeState:"clean", BuildDate:"2020-01-14T21:04:32Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"17", GitVersion:"v1.17.0", GitCommit:"70132b0f130acc0bed193d9ba59dd186f0e634cf", GitTreeState:"clean", BuildDate:"2019-12-07T21:12:17Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}

Ссылка API не имеет поля behavior для v2beta2, что делает это более запутанным.

Я использую Minikube 1.6.2 локально. Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2020

Похоже, это был случай неправильной документации, который был исправлен вскоре после того, как я задал свой вопрос. PR # 18157 в kubernetes/website добавляет следующий текст на страницу в Горизонтальный автогаситель .

Начиная с v1.17, окно стабилизации нижнего масштаба можно установить для каждого HPA, установив поле behavior.scaleDown.stabilizationWindowSeconds в API v2beta2. См. Поддержка настраиваемого поведения масштабирования.

PR # 18965 отменяет предыдущий запрос на извлечение, поскольку объект behavior имеет функциональность, нацеленную на 1.18, а не 1.17.

На данный момент решение состоит в том, чтобы использовать флаг --horizontal-pod-autoscaler-downscale-stabilization на диспетчере контроллеров, как упомянуто в ответе @ ShantyMan выше, который будет устанавливать значение для каждого HPA.

1 голос
/ 04 февраля 2020

Вы прочитали документы неправильно. Нет такого объекта, как behavior, поэтому возникает ошибка, почему применяется yaml, и именно поэтому он отсутствует в Api-ссылке .

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

Но я думаю, что вы думаете об этом Поддержка перезарядки / задержки

--horizontal-pod-autoscaler-downscale-stabilization: значение для эта опция - продолжительность, которая указывает, как долго автоскалер должен ждать, пока другая операция понижения может быть выполнена после того, как текущая завершена. Значение по умолчанию составляет 5 минут (5 мс).

Примечание. При настройке этих значений параметров оператор кластера должен знать о возможных последствиях. Если значение задержки (перезарядки) установлено слишком большим, могут возникнуть жалобы на то, что горизонтальный модуль автонастройки не реагирует на изменения рабочей нагрузки. Однако, если значение задержки установлено слишком коротким, масштаб набора реплик может продолжаться как обычно.

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