#kubernetes #go #autoscaling Kubernetes Ченнаи

Моя попытка автоматического масштабирования в Kubernetes с помощью Prometheus

С тех пор, как я начал работать над Kubernetes, такие термины, как Autoscaling, Replicasets, Controllers, использовались для обсуждения архитектуры в моей команде. Когда нагрузка на кластер увеличивается, производительность приложения снижается. Автомасштабирование отслеживает метрику и увеличивает количество экземпляров вашего приложения (модулей), чтобы поддерживать метрику ниже порогового значения.

На какой показатель обратить внимание

Согласно облачным документам Google,

Пользовательская метрика сообщается из вашего приложения, работающего в Kubernetes.

Внешняя метрика сообщается из приложения или службы, которые не работают в вашем кластере, но производительность которых влияет на ваше приложение Kubernetes. Для информации, метрика может быть получена из Cloud Monitoring или Pub/Sub.

Кто следит за показателями

Вот где я решил исследовать Прометей. Prometheus дает мне клиентский SDK, через который я могу выставить любой номер, который я хочу, через конечную точку метрик. Если вы хотите отслеживать обнаружение дрейфа модели, внесите результат своего прогноза в конечную точку метрик. Затем Prometheus очистит вашу конечную точку с заранее заданным интервалом очистки и сделает ее доступной в стандартном формате, который затем можно будет запрашивать через движок PromQL или HTTP-клиент, который будет выполнять запросы к конечной точке типа Query, Series или Range.

Как я выполнял автомасштабирование

Я черпал вдохновение из 3 проектов git

https://github.com/kubernetes-sigs/custom-metrics-apiserver

https://github.com/prometheus/prom2json

https://github.com/DirectXMan12/k8s-prometheus-адаптер

Custom-metrics-apiserver — это проект начальной загрузки, который помогает с помощью базового кода создать новый apiserver, который при объединении с существующим сервером метрик помогает нам обслуживать пользовательские и внешние метрики. Prom2Json помогает очистить конечную точку Prometheus и вывести результаты в JSON. Git DirectXMan12 дал мне много идей о том, как работает парсинг, серия и именование Prometheus.

Конечный продукт — https://github.com/samuel-sujith/mwatch.

Это все еще Work-in-Progress, и я буду продолжать добавлять в него функции. Предложения приветствуются на моем Git как вопросы.

Продолжайте «GO» и «K8s».