Как оптимизировать расходы на рабочий процесс Kubernetes и Argo

Как оптимизировать расходы на рабочий процесс Kubernetes и Argo

10 ноября 2022 г.

Контейнерный механизм рабочих процессов Argo для Kubernetes – чрезвычайно популярный вариант с открытым исходным кодом для команд, которые хотят запускать рабочие процессы, управлять кластерами, организация параллельных заданий и многое другое.

Соединяя Kubernetes и Argo, несколько команд разработчиков могут запускать рабочие нагрузки в кластерах с централизованным управлением, совместно используя вычислительные ресурсы для повышения эффективности и сокращения накладных расходов. Однако отслеживание расходов каждой команды и эффективности расходов в среде общих ресурсов Kubernetes стало слишком знакомой задачей. Команды регулярно борются с бюджетными прогнозами и усилиями по сокращению отходов, не имея доступа к историческим данным об использовании ресурсов и возможности распределить обязанности по затратам по командам. Эта наглядность имеет решающее значение для устранения незначительных недостатков до того, как они разрастутся и приведут к значительным потерям по мере масштабирования рабочих процессов.

[Завершенный рабочий процесс Арго, его стоимость совершенно неизвестна]

Познакомьтесь с Kubecost, экономным помощником Argo. Kubecost, инструмент мониторинга затрат Kubernetes с бесплатной версией сообщества, позволяет командам разработчиков точно измерять затраты на рабочие процессы Argo в режиме реального времени, распределять затраты между команды, оцените эффективность использования ресурсов и предложите возможности для оптимизации.

В следующем руководстве показано, как команды, управляющие рабочими нагрузками Kubernetes с помощью рабочих процессов Argo, могут развернуть Kubecost для анализа и контроля расходов на рабочие процессы. Тем, кто хочет начать использовать рабочие процессы Argo, следует следовать этому простому краткому руководству на GitHub. Сам Kubecost можно установить с помощью Helm, и ему должно быть предоставлено собственное пространство имен:

После установки Kubecost будет собирать данные о затратах на запуск рабочих процессов Argo.

Создайте пример рабочего процесса Для этого руководства давайте определим рабочий процесс Argo, создав CRD WorkflowTemplate. Мы заставим рабочий процесс имитировать интенсивное использование ресурсов, заставив контейнер Docker stress-ng потреблять ресурсы. стручки. Рабочий процесс выполнит свою единственную стадию «напряжения», запустив изображение стресс-нг вместе с входными данными, которые Argo будет обрабатывать в запущенном рабочем процессе. Чтобы создать CRD WorkflowTemplate в пространстве имен Argo, сохраните следующий yaml в файл и запустите argo template create $filename -n argo.

Рабочий процесс запрашивает 1200 МБ ЦП и 40 МБ памяти, в то время как запущенный контейнер stress-ng использует 1 ЦП и 30 МБ памяти. . Этот пробел представляет собой расточительную неэффективность, поскольку контейнер с избыточным выделением ресурсов использует больше вычислительных ресурсов кластера, чем требуется для работы.

Измеряйте затраты Kubernetes с помощью Kubecost Поскольку все задания Argo Workflow имеют метку метаданных workflows.argoproj.io/workflow, просмотр стоимости каждого рабочего процесса и показатели эффективности в Kubecost просты. В пользовательском интерфейсе Kubecost перейдите на страницу «Распределение затрат» и измените поле «Агрегировать по» на «Ярлык: workflows_argoproj_io_workflow». Это отобразит следующие данные о стоимости и эффективности рабочего процесса:

При каждом запуске рабочего процесса этот запуск получает уникальное имя на основе шаблона и добавленного идентификатора. В приведенном ниже примере первый запуск рабочего процесса stress-ng называется stress-ng-q9wdz. Отфильтровав этот конкретный рабочий процесс, Kubecost показывает, что его экономическая эффективность составила всего 57%. Если щелкнуть имя рабочего процесса, чтобы открыть представление «Подробности», можно увидеть, в какой степени избыточное выделение ЦП и ОЗУ вызвало эту неэффективность: на самом деле было использовано только 55 % запрошенного ЦП и 60 % запрошенного ОЗУ!

Используйте интерфейс командной строки kubectl-cost для быстрой проверки стоимости Кластеры с установленным Kubecost доступны для проверки с помощью инструмента CLI kubectl-cost, а также пользовательского интерфейса. Используйте Krew для установки kubectl-cost: стоимость установки kubectl krew В интерфейсе командной строки стоимость рабочего процесса доступна с помощью команды kubectl cost label --label workflows.argoproj.io/workflow. :

Повышение точности анализа затрат

Инструмент Kubecost по умолчанию использует общедоступные цены основных поставщиков облачных услуг, но интегрирует Оригинал

PREVIOUS ARTICLE
NEXT ARTICLE