мой кластер kubernetes не уменьшается

#kubernetes

#kubernetes

Вопрос:

У меня есть кластер kuberentes. Один мастер и один рабочий. Я устанавливаю сервер метрик для автоматического масштабирования, а затем запускаю стресс-тест

 $ kubectl run autoscale-test --image=ubuntu:16.04 --requests=cpu=1000m --command sleep 1800
deployment "autoscale-test" created
$ kubectl autoscale deployment autoscale-test --cpu-percent=25 --min=1 --max=5
deployment "autoscale-test" autoscaled
$ kubectl get hpa
NAME             REFERENCE                   TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
autoscale-test   Deployment/autoscale-test   0% / 25%   1         5         1          1m
$ kubectl get pod
NAME                              READY     STATUS    RESTARTS   AGE
autoscale-test-59d66dcbf7-9fqr8   1/1       Running   0          9m
kubectl exec autoscale-test-59d66dcbf7-9fqr8 -- apt-get update
kubectl exec autoscale-test-59d66dcbf7-9fqr8 -- apt-get install stress

$ kubectl exec autoscale-test-59d66dcbf7-9fqr8 -- stress --cpu 2 --timeout 600s amp;
stress: info: [227] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
  

все работает нормально, и модуль был автоматически масштабирован, но после этого модуль, созданный с помощью автоматического масштабирования, все еще запущен, и они не завершаются после стресс-теста
hpa показывает, что используется 0% ЦП, но 5 автоматически масштабируемых модулей все еще работают

 #kubectl get hpa
NAME             REFERENCE                   TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
autoscale-test   Deployment/autoscale-test   0%/25%    1         5         5          74m

#kubectl get pods --all-namespaces
NAMESPACE     NAME                             READY   STATUS    RESTARTS   AGE
default       autoscale-test-8f4d84bbf-7ddjw   1/1     Running   0          61m
default       autoscale-test-8f4d84bbf-bmr59   1/1     Running   0          61m
default       autoscale-test-8f4d84bbf-cxt26   1/1     Running   0          61m
default       autoscale-test-8f4d84bbf-x9jws   1/1     Running   0          61m
default       autoscale-test-8f4d84bbf-zbhvk   1/1     Running   0          71m
  

Я жду час, но ничего не происходит

Комментарии:

1. Не могли бы вы, пожалуйста, проверить значение флага —horizontal-pod-autoscaler-sync-period для вашего кластера.. Автоматическое масштабирование использует этот флаг для принятия решения о масштабировании

Ответ №1:

Из документации:

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

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

Наконец, непосредственно перед тем, как HPA масштабирует цель, записывается рекомендация по масштабированию. Контроллер рассматривает все рекомендации в настраиваемом окне, выбирая самую высокую рекомендацию из этого окна. Это значение может быть настроено с помощью флага —horizontal-pod-autoscaler-downscale-stabilization-window, который по умолчанию равен 5 минутам. Это означает, что масштабирование будет происходить постепенно, сглаживая влияние быстро меняющихся значений показателей.

Комментарии:

1. я жду час, но ничего не происходит

2. возможно, вы сделали что-то вроде -cpu-percent = 1 вместо -cpu-percent = 80

3. я пишу автоматическое масштабирование развертывания kubectl-test —cpu-percentage =25 —min=1 —max = 5

4. сделайте его 90 вместо 25 и протестируйте еще раз

5. 25 процентов — это совершенно очевидно, вы говорите, что 25-процентная загрузка процессора — это большая нагрузка, поэтому он думает именно так и никогда не уменьшает ее, пока вы не скажете, что на самом деле 90 процентов загрузки процессора не составляет высокой нагрузки, чего не происходит, когда нагрузочный тест завершен, поэтому он масштабируется