Вариант использования / Проблема
Я отвечаю за поддержку кластера kubernetes с 40 узлами (разделенными на 2 зоны).У нас есть около 100 микросервисов и платформ, таких как брокеры Kafka, работающие в этом кластере.Все микросервисы определили запрос ресурсов и лимиты.Большинство из них, однако, являются пакетными и не имеют гарантированной оперативной памяти.Разработчики, которые развертывают свои сервисы в нашем кластере, определили пределы, намного превышающие запрос (см. Пример ниже), что в конечном итоге привело к большому количеству выселенных модулей на различных узлах.Мы по-прежнему хотим использовать в наших сервисах пакетные ресурсы, так как мы можем сэкономить деньги, используя ресурсные ресурсы.Поэтому мне нужна лучшая возможность мониторинга всех модулей, работающих на каждом узле, которые содержат следующую информацию:
- Имя узла и емкость ЦП / ОЗУ
- Все имена модулей плюс
- запросы и ресурсы ресурса pod
- текущее использование процессора и оперативной памяти pod
Таким образом, я мог бы легко определить два проблемных вида услуг:
Случай A: Микросервис, который просто устанавливает огромные ограничения ресурсов, потому что разработчик просто тестировал материал или слишком ленив, чтобы тестировать / отслеживать свой сервис
resources:
requests:
cpu: 100m
ram: 500Mi
limits:
cpu: 6
ram: 20Gi
Случай B: Слишком много служб на одном узле, которые установили неточные ограничения ресурсов (например, 500Mi, но служба постоянно использует 1,5 ГБ ОЗУ).Этот случай произошел с нами, потому что разработчики Java не заметили, что сборщик мусора Java начнет очищаться только при использовании 75% доступной оперативной памяти.
Мой вопрос:
Как я мог правильно контролировать это и, следовательно, выявлять неправильно настроенные микросервисы, чтобы предотвратить такие проблемы с выселением?В меньшем масштабе я мог бы просто запустить kubectl describe nodes
и kubectl top pods
, чтобы выяснить это вручную, но в этом масштабе это больше не работает.
Примечание: Я не могнайти любое существующее решение этой проблемы (в том числе доски Prometheus + Grafana с использованием Kube метрик и аналогичных).Я думал, что это возможно, но визуализировать это в Grafana действительно сложно.