При запуске Azure Kubernetes Service (AKS) может быть трудно понять и распределить затраты в среде с несколькими командами, проектами или даже отделами. С Kubecost Вы получаете полную прозрачность в своем использовании Kubernetes и стоимости в течение нескольких минут после установки. Официально запущенный в 2019 году и построенный на открытом исходном коде, Kubecost теперь контролирует более миллиарда долларов в Kubernetes, и позволяет стартапам и глобальным предприятиям понимать свои расходы и определять экономию средств от 30% до более чем 50%. Kubecost поддерживает широкий спектр самоуправляемых и размещенных средах Kubernetes, в том числе сервис Azure Kubernetes, который мы рассмотрим сегодня в этой статье.
Microsoft Azure Kubernetes Service (AKS) — это Популярный Полностью управляемый сервис Kubernetes, который предлагает встраиваемую непрерывную интеграцию и непрерывную доставку, а также безопасность и управление корпоративным уровнем и управление-мощные инструменты для команд, внедряющих Kubernetes. Как и в любой сложной инфраструктуре, AKS требует надлежащего управления и финансовой прозрачности для успешного организационного усыновления. Kubecost, инструмент с открытым исходным кодом, который предоставляет командам видимость в Kubernetes Entry и поддерживает среды, размещенные в Azure, является широко рекомендуемым решением для инженеров и финансовых команд, сталкивающихся с этой проблемой. Примечание: это Страница документации Для AKS предоставляет полезный контекст для использования KubeCost для реализации стратегии управления затратами.
Задача распределения затрат
Кластеры Kubernetes часто используются между командами, микросервисами, проектами, приложениями, отделениями и центрами затрат, чтобы сэкономить на инфраструктуре и административные накладные расходы. Самые популярные методы организации этой общей платформы — просто использовать этикетки (аналогичные тегам) или создавая Пространства имен . Пространство имен Kubernetes — это логическое разделение внутри кластера Kubernetes, которое может быть назначено конкретной команде, приложению или даже в бизнес -единице.
Большинство организаций отображают пространство имен по конкретному типу рабочей нагрузки или цели. Например, типичный кластер может иметь одно пространство имен для мониторинга и одно пространство имен для ведения журнала для использования командами DevOps, которые поддерживают кластер. Приложение с клиентом, размещенное в том же кластере, которое может иметь одно пространство имен для своих передних компонентов и отдельное пространство имен для своих направленных услуг.
Создание этих логических подразделений внутри кластера является административно удобным, но добавляет сложность при попытке точно измерить использование ресурсов и распределять затраты каждому арендатору на основе подробных данных выставления счетов.
Обмен кластером Kubernetes в Azure
Существует три модели для обмена кластерами Azure Kubernetes (AKS) по центрам затрат:
Выделенный кластер AKS : Каждая команда или проект получает свой собственный специальный кластер AKS, чтобы легко отслеживать его выставление. Этот подход не выигрывает от обмена ресурсами.
Выделенный узел AKS : Каждая команда или проект получает свое стручки, назначенные определенным узлу в общем кластере AKS с использованием метки и ограничения конфигурации, известного как Nodeselector. Затем каждая команда может выделить свои расходы в счет Azure в соответствии с стоимостью назначенных узлов. Обмен ресурсами не эффективен в этой модели.
Выделенное пространство имен AKS : Каждая команда или проект получает свое собственное пространство имен, а также большую гибкость и административную свободу. Эта модель, как мы уже упоминали, может быть сложной для распределения затрат. Тем не менее, это то, куда входит Кубекост.
Задача измерения
Предположим, вы решили поддержать несколько проектов и команд в своем кластере AKS, используя несколько десятков имен. В этом примере каждая команда имеет свое собственное пространство имен и автономный административный контроль над обеспечивающими стручками и контейнерами. Через пару месяцев затраты на кластер выше, чем ожидалось, и вы хотели бы определить причину скачка расходов. Это простой вопрос, но сложный для ответа, потому что вы должны измерить использование ресурсов по рабочим нагрузкам в каждом пространстве имен в течение нескольких недель, чтобы прийти к выводу.
Это означает, что вы должны выделить следующее по пространству имен:
- Фактическое использование ЦП, графического процессора, памяти, сети и постоянного хранилища.
- Чрезмерные запросы на процессор и память оставляют ресурсы неиспользованными.
- Использование общих ресурсов, таких как базы данных или хранилище Blob.
- Пропорциональное использование резервирования экземпляра облака и служб поддержки.
Если вы принимаете только использование сети в качестве одного примера, вы должны:
- Измерьте выходной трафик, генерируемый контейнерами, принадлежащими каждому пространству имен в разных регионах, зонах доступности и в Интернете.
- Определите ставки передачи данных, которые могут быть согласованы с вашим облачным провайдером.
Только тогда вы можете измерить сетевые затраты, связанные с каждым пространством имен.
Этот процесс пугающий, особенно если учесть тот факт, что он требует:
- Специализированная телеметрия для сбора соответствующих данных в режиме реального времени
- Хранение данных временных рядов с течением времени
- Сбор и анализ подробных журналов счетов поставщика облачных провайдеров
- Анализ данных об использовании и стоимости для расчета точных затрат
- Представление результатов в форме отчетов или панели панелей
Не обоходите вызов
Оставляя эту проблему неразрешенным приводом к организационному разочарованию в долгосрочной перспективе, когда вы изо всех сил пытаетесь определить основную причину скачка расходов или бороться за реагирование на запрос управления на то, что кажется простой доклад о распределении затрат по приложению, команде или проекту. Внезапное увеличение расходов из-за неправильной конфигурации было бы обычным операционным вопросом, если его заметить в течение нескольких часов или дней, но когда их оставить в тени в течение нескольких недель или месяцев, он может перейти к драме на конец квартала.
Хотя Kubernetes выполняет обещание экономии масштаба и автоматического масштаба, это требует надлежащего управления и финансовой прозрачности для устойчивого, успешного организационного усыновления.
Один исчерпывающий взгляд
Наличие сводного представления о использовании и трати на высоком уровне, а также возможность просверлить детали, является универсальным идеалом, применимым практически к любому домену. В случае с Kubernetes, размещенным в Azure, существуют два типа всеобъемлющих суммированных взглядов:
- Ресурсы Azure прямо или косвенно связаны с сервисом Azure Kubernetes
- Услуги Azure не связаны с AKS, например, Другие виртуальные машины Azure
Наличие оба представления в одном инструменте позволяет избежать необходимости переключения между консолями и примирительной информации о выставлении счетов.
Затраты на Azure, связанные с Kubernetes
Затраты, непосредственно связанные с Kubernetes в Azure, являются затратами на узлы, которые образуют кластер Kubernetes, включая сеть и постоянные объемы хранения, которые поддерживают узлы. Затраты могут быть разбиты на платы, связанные с:
- Процессор
- Память
- Графический графин
- Сеть
- Объемы хранения
Существуют также внешние затраты, связанные с кластером Kubernetes или пространством имен. Эти обвинения могут быть посвящены каждому пространству имен или ресурсу Kubernetes, или они могут быть переданы по нескольким пространствам имен. Например, прокси -сервер может получить доступ ко всем контейнерам независимо от пространства имен, и, следовательно, его стоимость будет передана во всех пространствах имен.
В таблице ниже приведены типы затрат, которые вы должны учитывать, чтобы иметь точное представление о ваших расходах по пространству имен:
ЦП, память, хранение, сеть и графический процессор | В кластере | Стоимость узлов, которые составляют кластер |
Azure SQL, Azure Blob, Azure Synapse Analytics | Внешний | Стоимость Azure Services, посвященных отдельным пространству имен |
Пространство имен имен Kube, общие затраты на рабочую силу | Общий | Стоимость услуг, разделяемых всеми именами |
Кубкост -подход
Kubecost популярен из -за его богатого набора функциональности, простоты реализации и его внимательной группы поддержки. Как пионеры в Kubernetes Finops, Kubecost и его ранние пользователи помогли определить многие современные концепции, лежащие в основе финансовой отчетности по общим ресурсам Kubernetes в облачной среде.
Интеграция Azure
Позже в этой статье мы рассмотрим, как установить Kubecost в кластере Kubernetes, используя Helm и интегрируем его с Azure. Но сначала важно знать, что Kubecost установлен в кластере Kubernetes и не передает какие -либо данные за пределами вашего кластера, что означает, что вам не придется беспокоиться о конфиденциальных данных, покидающих окружающую среду.
Kubecost собирает данные из API карты с выставлением счетов Azure (используя определение роли, которое вы создаете) для предоставления точной информации о затратах на основе ваших подробных записей выставления счетов. Интеграция Kubecost Azure собирает ваши точные данные о ценах для учета любых специальных цен, таких как резервирование Azure, в его анализе. Кроме того, с интеграцией в вашу учетную запись Azure Storage, Kubecost может примирить точные затраты на ваше использование в кластере и отобразить их наряду с затратами на непредвзятость для точного и целостного обзора ваших облачных расходов.
Основная приборная панель
После завершения процесса установки вы можете получить доступ к основной панели инструментов, где каждый кластер также имеет свой собственный выделенный вид, который включает в себя:
- Общие ежемесячные расходы
- Эффективность (соотношение использования с холостыми ресурсами с течением времени)
- Распределение затрат с помощью контроллера Kubernetes, Service, пространство имен
- Cluster Health (на основе заданных правил надежности и лучших рисков)
Параметры навигации
Как вы могли заметить, меню навигации, видимое в левой стороне предыдущего скриншота, представляет ряд других отчетов и панелей, доступных пользователям Kubecost. Эти инструменты включают:
- Распределение затрат: Групповые расходы по метадатам Kubernetes и Azure теги
- Активы: Посмотрите все ваши травы в Azure за AKS
- Экономия: Получите рекомендации по экономии средств на основе заданных лучших практик
- Здоровье : Смотрите оценку здоровья вашего кластера на основе предварительных лучших практик
- Отчеты: Группа, фильтр, сортируйте подробную информацию о стоимости и храните для дальнейшего
- Уведомления: Настройка оповещений стоимости на основе бюджетов кластера или пространства имен
Мы не будем охватывать все функции, предлагаемые этими инструментами в этой статье; Мы рассмотрим основные, связанные с Azure Billing и распределением стоимости Kubernetes.
Распределение затрат
Как упоминалось ранее в этой статье, затраты, связанные с кластером Kubernetes, попадают в следующие категории:
- В кластере : AKS затраты на память, процессор, сеть, хранение и графический процессор
- Внешний : Затраты на Azure, посвященные каждому компоненту Kubernetes
- Общий : Услуги Azure или фиксированные затраты, разделяемые по компонентам Kubernetes
Приведенная ниже диаграмма использует группировку по пространству имен, чтобы проиллюстрировать эти концепции, включая возможность распределить стоимость общего пространства имен кластеров по другим пространствам имен:
Пользовательский интерфейс отображает категории затрат, выделенные на этом скриншоте:
Эта функциональность требует от вас экспортировать отчет о затратах на Azure в хранилище Azure, следуя Эти инструкции (Выберите ежедневный вариант ежедневного поступления для экспорта и подождите несколько часов, чтобы заполнить) и позволить Kubecost безопасно получить к нему доступ через API хранилища Azure, создав файл JSON с именем Azure-storage-config.json с вашей секретной информацией, отформатированной, как показано ниже.
{ "azureStorageAccount": "", "azureStorageAccessKey": " ", "azureStorageContainer": }
Затем вы можете использовать эту команду, чтобы создать секрет:
kubectl create secret generic--from-file=azure-storage-config.json -n kubecost
Как только секрет создан, установите .Values.kubecostproductConfigs.azurestoragesecretname
к
и обновить Kubecost через Helm. Вы также можете следовать за большее Подробные инструкции Анкет
Позже в этой статье мы предоставляем инструкции по использованию Helm для установки Kubecost и обмена ссылками на соответствующие страницы инструкций.
Стоимость разбивки
Одна из хороших функций Kubecost заключается в том, что вы можете выбрать практически любую позицию на экране и сверлить, чтобы увидеть больше информации. Например, в случае внешних затрат, выделенных на предыдущем снимке экрана, выбор конкретного значения представит разбивку сборов:
Выделение внешних затрат на Azure с использованием тегов
Теперь, когда вы узнали о понятиях кластеров, внешних и общих затрат на Azure в Kubecost, может быть полезно узнать, как вы можете контролировать ассигнования. Kubecost использует теги и этикетки, чтобы выделить расходы на Azure за пределами кластера Kubernetes на определенные компоненты Kubernetes, такие как стручки и пространства имен.
Например, вы можете взять расходы, связанные с экземпляром SQL, и связать их с определенным стручком. Предположим, у вас есть пространство имен, называемые «Backend App», содержащим микросервисы с собственной выделенной базой данных Azure SQL. Эта база данных предоставляется в рамках Управляемый экземпляр Модель, и вы хотели бы, чтобы все его затраты были связаны с этим одним конкретным пространством имен в виде внешних затрат. В этом сценарии вы примените тег к экземпляру базы данных SQL с ключом тега «kubernetes_namespace» и значением TAG «Backend». Вот и все — в следующий раз, когда вы посетите Kubecost и используете представление о распределении затрат (сгруппировано по пространству имен), затраты на экземпляр SQL будут показаны в соответствующей строке в соответствии с столбцом под названием «Внешние затраты». В таблице ниже показаны различные теги, доступные в Kubecost для выполнения этого типа отображения:
kubernetes_cluster | Кластер | |
kubernetes_namespace | Пространство имен | |
kubernetes_deployment | Развертывание | |
kubernetes_label_name | Этикетка | |
kubernetes_daemonset | Daemonset | |
kubernetes_pod | Капсул | |
kubernetes_container | Контейнер |
Вы можете узнать больше о помечении, используя портал Azure на Эта страница Анкет
Далее мы покажем вам, как использовать теги для управления распределением общих ресурсов в пользовательском интерфейсе настроек Kubecost.
Конфигурация распределения затрат
Kubecost позволяет легко настроить распределение общих затрат на компоненты Kubernetes. Общие ресурсы могут быть в форме:
- Фиксированная стоимость доллара: Например, 1000 долларов могут быть разделены во всех пространствах имен
- Общее пространство имен: Например, стоимость пространства имен по умолчанию может быть распределена по умолчанию. Поле конфигурации принимает список общих пространств имен.
- Поделиться по лейблу: Например, стоимость стручков с ярлыком может быть распределена. Обратите внимание, что на скриншоте ниже ключ тега с именем «Приложение» повторяется и разделяется запятой, чтобы захватить как значение «Datadog» для ключа с именем «приложение», так и значение «Splunk» для того же ключа с именем «приложение». «
Фиксированная стоимость доллара является простым и элегантным решением для распределения затрат любого типа. Например, вы можете приписать пропорциональную стоимость рабочей силы в кластере для каждого пространства имен, чтобы ваш финансовый отчет отражал полностью загруженную стоимость.
Функция совместного использования пространства имен позволяет вам принимать затраты, связанные с несколькими пространствами имен, и распространять их среди всех других пространств имен. Пространство имен, посвященное размещению программного обеспечения безопасности, предназначенного для защиты всего кластера, является отличным кандидатом на эту функцию; Kube-System-еще один отличный кандидат, созданный системой Kubernetes для проведения общих утилит, таких как Kube-DNS и Kube-Proxy.
Третья функция совместного использования использует метки, чтобы выбрать практически любой компонент Kubernetes и распространять затраты пропорционально среди них. Например, у вас могут быть стручки, управляющие вашей средой о приеме на приеме пользователя (UAT) — с этикетками вы можете взять все свои затраты на UAT и распространять их по пространству имен производственных имен, чтобы стоимость тестирования вашего программного обеспечения была включена в затраты на приложение Анкет
Общие затраты распределяются пропорционально проценту затрат на ресурсы в кластере, которые пространства имен потребляют (ЦП, память, сеть, хранилище и графический процессор), поэтому пространство имен, в которых используется больше ресурсов кластера, получит более высокое распределение общих расходов. Тем не менее, вы также можете указать Kubecost распределить затраты в равной степени (независимо от использования) по всем пространствам имен для равномерного распределения.
Azure Cloud Assets
До сих пор мы сосредоточились на компонентах Kubernetes; Тем не менее, одной из захватывающих функций, представленных Kubecost в рамках своей поддержки Azure, является возможность расширить всеобъемлющее представление, чтобы включить все ваши расходы на Azure (даже если не связаны с AKS).
Эта точка зрения доступна в меню навигации в разделе «Активы», и он поддерживает полный набор элементов управления для фильтрации, группы и сортировки вашего счета за Azure в каждом измерении.
Вы можете свернуть в конкретные данные записи счетов, просто выбрав их. Например, Следующие снимки экрана в сетевой плате и показывают подробные сборы за балансировщики нагрузки или конкретные экземпляры:
Начало работы с установкой
Существует 3 шага для установки Kubecost в Azure и обеспечения доступа к данным выставления счетов:
- Установите Kubecost с помощью диаграммы Helm.
- Создайте определение роли Azure для Kubecost в вашей учетной записи Azure.
- Введите информацию о вашей учетной записи на странице настроек Kubecost.
Kubecost доступен для загрузки в качестве графика Helm по этой ссылке: https://www.kubecost.com/install.html и должно быть установлено менее 5 минут в AKS.
После того, как вы установили Kubecost в учетной записи Azure, вы должны затем создать определение роли Azure, чтобы предоставить привилегии доступа Kubecost в форме файлов JSON. Это требуется для доступа к точным данным выставления счетов через API карты платежей. Подробные инструкции по созданию определения роли Azure и обмена его с Kubecost представлены на этой странице документации Kubecost: http://docs.kubecost.com/azure-config В то время как Microsoft Azure соберется Страница инструкции Для интеграции с Kubecost также документирует этапы установки.
Последним шагом является введение вашей подписки Azure, арендатора, идентификатора клиента и секрета клиента в пользовательском интерфейсе Kubecost.
Вывод
Вам не нужно принимать кластер AKS в качестве финансового черного ящика. С Kubecost вы можете поделиться своим кластером AKS с другими командами и по -прежнему генерировать отчет о распределении затрат в течение нескольких минут после установки. Kubecost также контролирует здоровье и эффективность вашего кластера — он даже может отправить Уведомления о затратах Когда ваше пространство имен переживает неожиданный прыжок в расходах. Ищите другие статьи Kubecost и Страницы документации Чтобы узнать больше о его растущем списке функций.
Оригинал: «https://dev.to/kubecost/aks-cost-monitoring-and-governance-with-kubecost-3i14»