Горизонтальный стручковый автоскалер (HPA): текущее использование: <unknown>с настраиваемым пространством имен - PullRequest
2 голосов
/ 01 апреля 2019

ОБНОВЛЕНИЕ: Я внедряю в облаке AWS с помощью копий.

Я в процессе применения HPA для одного из моих развертываний в kubernete.При тестировании примера приложения я развернул его с использованием пространства имен по умолчанию. Я вижу, что метрики отображаются следующим образом (текущее использование составляет 0%)

$ kubectl  run busybox --image=busybox --port 8080           -- sh -c "while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; \
         env | grep HOSTNAME | sed 's/.*=//g'; } | nc -l -p  8080; done"


$ kubectl get hpa
NAME          REFERENCE                TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
busybox       Deployment/busybox       0%/20%    1         4         1          14m

Но при развертывании с настраиваемым пространством имен (пример: test), текущее использование показывает неизвестный

 $ kubectl get hpa --namespace test
NAME        REFERENCE            TARGETS                          MINPODS   MAXPODS   REPLICAS   AGE
busybox     Deployment/busybox   <unknown>/20%                    1         4         1          25m

Может кто-нибудь, пожалуйста, подскажите, что здесь не так?

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

В будущем вам нужно выполнить несколько условий для работы HPA.На вашем кластере должен быть запущен сервер метрик или heapster.Важно установить ресурсы на основе пространства имен.

Вы не указали, в какой среде работает ваш кластер, но в GKE по умолчанию у вас есть набор ресурсов ЦП (100 м), но его нужно указатьв новых пространствах имен:

Обратите внимание, что если в некоторых контейнерах модуля нет соответствующего набора запросов ресурсов, загрузка ЦП для модуля не будет определена, и автоскалер не будет предпринимать никаких действий для этого.metric.

В вашем случае я не уверен, почему он работает после повторного развертывания, так как недостаточно информации.Но на будущее не забудьте:

1) объект, который вы хотите масштабировать, и HPA должен находиться в одном и том же пространстве имен

2) установить ресурсы ЦП для каждого пространства имен или просто добавить --requests=cpu=value, чтобыHPA сможет масштабировать на основе этого.

ОБНОВЛЕНИЕ :

для вашего конкретного случая:

1) kubectl run busybox --image=busybox --port 8080 -n test --requests=cpu=200m -- sh -c "while true; do { echo -e 'HTTP/1.1 200 OK\r\n'; \ env | grep HOSTNAME | sed 's/.*=//g'; } | nc -l -p 8080; done"

2) kubectl autoscale deployment busybox --cpu-percent=50 --min=1 --max=10 -n test

0 голосов
/ 01 апреля 2019

Попробуйте выполнить приведенные ниже команды в пространстве имен, в котором вы столкнулись с этой проблемой, и посмотрите, есть ли у вас какие-либо указатели.

  • kubectl get --raw /apis/metrics.k8s.io/ - здесь должен отображаться действительный JSON
  • Также, сделайте kubectl describe hpa name_of_hpa_deployment - это может указывать на наличие проблем с развертыванием hpa в этом пространстве имен.
...