Автоматическое масштабирование в Kubernetes не работает - отображается неизвестно - PullRequest
0 голосов
/ 04 апреля 2019

Есть много вопросов по этой теме, и я пробовал много вещей, но они все еще не работают.

Я новичок в Кубернетесе. У меня есть кластер Kubernetes с 2 узлами (1 ПК, 1 ВМ на другом ПК), 1 мастер, 1 узел. Я запустил веб-сайт (Docker Image) и Pod работает на узле (не master). Теперь я хотел автомасштабировать Pod, вот что я сделал:

  1. Набор --request='cpu=50m' для стручка
  2. Создано hpa: kubectl autoscale deployment testwebsite --min=1 --max=4 --cpu-percent=25
  3. Используется: kubectl get hpa -w

И теперь существует проблема, связанная с тем, что выходные данные отображаются как текущее значение. Я прочитал много, что я должен назначить запрос на стручок, как я сделал. Проверено через: kubectl get pod testwebsite --out=yaml

Я также создал сервер метрик версии 1.8+. Убедитесь, что он работает через: kubectl get pods --all-namespaces

После этого я попытался отладить HPA и изучил его с помощью:

kubectl describe hpa testwebsite

Это показало мне это:

Name:                                                  testwebsite
Namespace:                                             default
Labels:                                                <none>
Annotations:                                           <none>
CreationTimestamp:                                     Thu, 04 Apr 2019 14:08:57 +0200
Reference:                                             Deployment/testwebsite
Metrics:                                               ( current / target )   resource cpu on pods  (as a percentage of request):  <unknown> / 25%
Min replicas:                                          1
Max replicas:                                          4
Deployment pods:                                       1 current / 0 desired
Conditions:
  Type           Status  Reason                   Message
  ----           ------  ------                   -------
 AbleToScale    True    SucceededGetScale        the HPA controller was able to get the target's current scale
 ScalingActive  False   FailedGetResourceMetric  the HPA was unable to compute the replica count: unable to get metrics for resource cpu: no metrics returned from resource metrics API
Events:
  Type     Reason                        Age                   From                       Message
  ----     ------                        ----                  ----                       -------
  Warning  FailedComputeMetricsReplicas  7m24s (x12 over 10m)  horizontal-pod-autoscaler  failed to get cpu utilization: unable to get metrics for resource cpu: no metrics returned from resource metrics API
  Warning  FailedGetResourceMetric       5s (x41 over 10m)     horizontal-pod-autoscaler  unable to get metrics for resource cpu: no metrics returned from resource metrics API

Через 10+ минут текущее значение не будет отображаться и не будет увеличиваться даже при использовании процессора на 50-100%.

Как я уже говорил, я новичок в Кубернетесе и очень надеюсь, что кто-нибудь сможет мне помочь.

С уважением,

Нико ака Миридор

РЕДАКТИРОВАТЬ: Использование Ubuntu 18.04 LTS на обоих узлах | Kubernetes версия: 1.14.0

Ответы [ 2 ]

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

Проблема не в самом HPS, а в сервере метрик, который не может очистить метрики.

Я воссоздал проблему, клонировав metrics-server git и затем создав ее kubectl create -f deploy/1.8+/.

Затем я отредактировал развертывание сервера метрик, выполнив: kubectl edit deployment metrics-server -n kube-system

Под spec: -> containers: добавить следующий флаг:

spec:
      containers:
      - command:
        - /metrics-server
        - --kubelet-insecure-tls

Как описано в git :

--kubelet-insecure-tls: пропустить проверку сертификатов Kubelet CA. Не рекомендуется для производственного использования, но может быть полезно в тестовых кластерах с самоподписанными сертификатами обслуживания Kubelet.

После того, как развертывание обновлено и сервер метрик очищен от метрик, вы должны увидеть, что HPA обновлен с текущими целями. Интервал очистки по умолчанию составляет 60 с, вы можете изменить его, добавив следующий флаг к указанному выше --metric-resolution=10s <- интервалу, установленному в 10 с. </p>

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

Вы уверены, что сервер метрик kubernetes и API метрик работает? который необходим в первую очередь и используется для проверки использования процессора и ограничения

Вы можете удалить ОГРАНИЧЕНИЯ из ваших развертываний, если они есть, и попробовать его.

...