Автоматическое масштабирование развертывания с пользовательскими метриками в Openshift 1.5.0

Есть ли возможность автоматически масштабировать развертывание с помощью Openshift Origin 1.5.0 (kubernetes 1.5.2) и использовать для этой цели настраиваемые метрики?

В документации Kubernetes указано, что автоматическое масштабирование с пользовательскими метриками поддерживается начиная с версии 1.2. Это выглядит правдой только потому, что горизонтальный автомат масштабирования модулей (HPA) Openshift пытается получить некоторые метрики и вычислить желаемые метрики. Но моя конфигурация не может этого сделать. Ребята, помогите, пожалуйста, разобраться, что я делаю не так.

Итак, что происходит:

  • Я установил метрики, как это рекомендуется в последних документах Origin (все шаги пройдены): https://docs.openshift.org/latest/install_config/cluster_metrics.html;

    • I have an app, which is being deployed with Deployment kind object;
    • это приложение предоставляет настраиваемые метрики с конечной точкой http json;
    • пользовательские метрики собираются и сохраняются - это отображается в пользовательском интерфейсе источника Openshift на вкладке «Метрики» соответствующего модуля;
    • после создания HPA - появляется какое-то предупреждение о сборе пользовательских метрик, пишет что-то вроде «Не удалось собрать пользовательские метрики, не получены метрики ни для каких готовых модулей»;
    • Я создаю HPA с API версии 1 и включаю аннотацию alpha/target.custom-metrics.podautoscaler.kubernetes.io: '{"items":[{"name":"requests_count", "value": "10"}]}';
    • если я запрашиваю развернутое приложение с кучей через мастер-прокси, я получаю что-то вроде этого

      {"metadata": {}, "items": [{"metadata": {"name": "resty-1722683747-kmbw0", "namespace": "availability-demo", "creationTimestamp": "2017-05- 24T09: 50: 24Z "}," timestamp ":" 2017-05-24T09: 50: 00Z "," window ":" 1m0s "," container ": [{" name ":" resty "," usage ": {"cpu": "0", "memory": "2372Ki"}}]}]}

    • Как видите, на самом деле пользовательских метрик нет, а мои пользовательские метрики называются requests_count.

Что мне нужно предпринять, чтобы успешно реализовать автоматическое масштабирование пользовательских показателей?

Снимок экрана с пользовательскими метриками, которые собираются и отображаются через интерфейс консоли Openshift

ОБНОВЛЕНИЕ: предупреждение в главном журнале openshift выглядит так:

I0524 10:17:47.537985       1 panics.go:76GET /apis/extensions/v1beta1/namespaces/availability-demo/deployments/resty/scale: (3.379724ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.543354       1 panics.go:76] GET /api/v1/proxy/namespaces/openshift-infra/services/https:heapster:/apis/metrics/v1alpha1/namespaces/availability-demo/pods?labelSelector=app%3Dresty: (4.830135ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.553255       1 panics.go:76] GET /api/v1/namespaces/availability-demo/pods?labelSelector=app%3Dresty: (8.864864ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.559909       1 panics.go:76] GET /api/v1/namespaces/availability-demo/pods?labelSelector=app%3Dresty: (5.725342ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.560977       1 panics.go:76] PATCH /api/v1/namespaces/availability-demo/events/resty.14c14bbf8b89534c: (6.385846ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.565418       1 panics.go:76] GET /api/v1/proxy/namespaces/openshift-infra/services/https:heapster:/api/v1/model/namespaces/availability-demo/pod-list/resty-1722683747-kmbw0/metrics/custom/requests_count?start=2017-05-24T10%3A12%3A47Z: (5.015336ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.569843       1 panics.go:76] GET /api/v1/namespaces/availability-demo/pods?labelSelector=app%3Dresty: (4.040029ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.575530       1 panics.go:76] PUT /apis/autoscaling/v1/namespaces/availability-demo/horizontalpodautoscalers/resty/status: (4.894835ms) 200 [[openshift/v1.5.2+43a9be4 (linux/amd64) kubernetes/43a9be4 system:serviceaccount:openshift-infra:hpa-controller] 10.105.8.81:33945]
I0524 10:17:47.575856       1 horizontal.go:438] Successfully updated status for resty
W0524 10:17:47.575890       1 horizontal.go:104] Failed to reconcile resty: failed to compute desired number of replicas based on Custom Metrics for Deployment/availability-demo/resty: failed to get custom metric value: did not recieve metrics for any ready pods

ОБНОВЛЕНИЕ. Обнаружено, какой запрос HPA отправляет к куче через прокси-сервер для сбора пользовательских показателей. Эти запросы всегда возвращают пустой массив метрик:

GET /api/v1/proxy/namespaces/openshift-infra/services/https:heapster:/api/v1/model/namespaces/availability-demo/pod-list/availability-example-1694583826-55hqh/metrics/custom/requests_count?start=2017-05-25T13%3A14%3A24Z HTTP/1.1
Host: kubernetes-master:8443
Authorization: Bearer hpa-agent-token

И он возвращается

{"items":[{"metrics":[],"latestTimestamp":"0001-01-01T00:00:00Z"}]}

ОБНОВЛЕНИЕ: оказывается, что HPA запрашивает heapster через прокси, а heapster, в свою очередь, запрашивает "сводку" kubernetes api. Тогда возникает вопрос - почему api Kubernetes "summary" не отвечает с метриками для вышеупомянутого запроса, хотя метрики существуют?


person Aleksey Gvozdev    schedule 24.05.2017    source источник


Ответы (1)


Это может быть дикая догадка, но у меня сама была проблема на самодельном кластере, две вещи, с которыми я столкнулся, были проблемы с токенами, когда сертификат моей главной настройки HA не был настроен правильно, и другая проблема была связана с моими кубеднами. Не уверен, применимо ли это к openshitf.

person jonas kint    schedule 02.06.2017
comment
Я хотел бы ответить, что есть некоторая проблема с авторизацией, это было бы лучше =) Но, к сожалению, ни один клиент / сервер не сообщает, что они не могут проверить цепочку сертификатов или разрешить какое-либо имя - и даже все запросы обрабатываются на мастере. Как бы то ни было, спасибо за ответ. Вопрос актуален на данный момент - и я постараюсь его решить. - person Aleksey Gvozdev; 07.06.2017