анализ затрат Службы Azure Kubernetes (AKS)

В этой статье вы узнаете, как включить анализ затрат на Служба Azure Kubernetes (AKS) для просмотра подробных данных о затратах для ресурсов кластера.

Обзор анализа затрат AKS

Кластеры AKS используют ресурсы Azure, такие как виртуальные машины, виртуальные диски, подсистемы балансировки нагрузки и общедоступные IP-адреса. Несколько приложений могут использовать эти ресурсы. Шаблоны потребления ресурсов часто отличаются для каждого приложения, поэтому их вклад в общую стоимость ресурсов кластера также может отличаться. В некоторых приложениях могут быть следы в нескольких кластерах, что может вызвать проблему при выполнении атрибуции затрат и управления затратами.

При включении анализа затрат в кластере AKS можно просмотреть подробные области распределения затрат, связанные с конструкциями Kubernetes, такими как кластеры и пространства имен, а также ресурсы вычислений, сети и хранилища Azure. Надстройка построена на основе OpenCost, проекта с открытым исходным кодом Cloud Native Computing Foundation Incubating для сбора данных об использовании. Данные об использовании сопоставляются с данными счета Azure, чтобы предоставить полное представление затрат на кластер AKS непосредственно на портале Azure.

Дополнительные сведения об управлении затратами Майкрософт см. в статье "Начало анализа затрат в Azure".

После включения надстройки анализа затрат и разрешения на сбор данных до 24 часов можно использовать информацию в разделе "Общие сведения об использовании и затратах AKS " для понимания данных.

Предварительные условия

  • Кластер должен использовать Standard уровень или Premium уровень, а не Free уровень.
  • Чтобы просмотреть сведения об анализе затрат, необходимо иметь одну из следующих ролей в подписке, в которой размещен кластер: Owner, Contributor, Reader, Cost Management Contributor или Cost Management Reader.
  • Управляемое удостоверение настроено на вашем кластере.
  • Драйвер интерфейса контейнерного хранилища (CSI) для дисков Azure, включённый в вашем кластере.
  • Если используется Azure CLI, вам нужна версия 2.61.0 или более поздняя версия.
  • После включения анализа затрат вы не сможете понизить уровень кластера до Free, не отключив предварительно анализ затрат.
  • Доступ к API Azure, включая API Azure Resource Manager (ARM). Для списка необходимых полных доменных имен (FQDN) см. Требуемые FQDN для анализа затрат AKS.

Ограничения

  • Представления затрат Kubernetes доступны только для Корпоративного соглашения и Клиентского соглашения Майкрософт для типов предложений Microsoft Azure. Дополнительные сведения см. в статье "Поддерживаемые предложения Microsoft Azure".
  • В настоящее время виртуальные узлы не поддерживаются.
  • Надстройка недоступна в регионах usnateast, usnatwest, usseceast или ussecwest. Дополнительные сведения см. в разделе Проблемы и устранение неполадок надстройки анализа затрат AKS.
  • Надстройка для анализа затрат AKS поддерживает около 7 000 контейнеров на кластер в зависимости от текущего ограничения памяти в 4 ГБ и подлежит изменению.

Включение анализа затрат в кластере AKS

Вы можете включить анализ затрат с флагом --enable-cost-analysis во время одной из следующих операций:

  • Создание кластера AKS уровня Standard или Premium.
  • Обновление существующего Standard или Premium многоуровневого кластера AKS.
  • Обновление кластера Free до Standard или Premium.
  • Обновление кластера Standard до Premium.
  • Понижение Premium уровня кластера на Standard уровень.

Включение анализа затрат в новом кластере

Включите анализ затрат в новом кластере az aks create с помощью команды с флагом --enable-cost-analysis . В следующем примере создается новый кластер AKS на Standard уровне с включенным анализом затрат:

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="AKSCostRG$RANDOM_SUFFIX"
export CLUSTER_NAME="AKSCostCluster$RANDOM_SUFFIX"
export LOCATION="WestUS2"
az group create --resource-group $RESOURCE_GROUP --location $LOCATION
az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --location $LOCATION --enable-managed-identity --generate-ssh-keys --tier standard --enable-cost-analysis

Результаты:

{
    "id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
    "location": "WestUS2",
    "name": "AKSCostClusterxxxx",
    "properties": {
        "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.ContainerService/managedClusters"
}

Включение анализа затрат в существующем кластере

Включите анализ затрат в существующем кластере az aks update с помощью команды с флагом --enable-cost-analysis . В следующем примере обновляется существующий кластер AKS на Standard уровне, чтобы включить анализ затрат. Замените $RESOURCE_GROUP и $CLUSTER_NAME на имена вашей группы ресурсов и кластера или задайте их как переменные среды.

az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-cost-analysis

Результаты:

{
    "id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
    "name": "AKSCostClusterxxxx",
    "properties": {
        "provisioningState": "Succeeded"
    }
}

Примечание.

Агент развертывается в кластере при включении надстройки. Агент потребляет небольшое количество ресурсов ЦП и памяти.

Предупреждение

Зависимость использования памяти в анализаторе затрат AKS от количества развернутых контейнеров. Вы можете примерно приблизить потребление памяти с помощью 200 МБ + 0,5 МБ на контейнер. Текущее ограничение памяти равно 4 ГБ, которое поддерживает примерно 7 000 контейнеров на кластер. Эти оценки могут быть изменены.

Примечание.

Включение анализа затрат также создает управляемое удостоверениеcost-analysis-identity с именем с доступом на чтение к группе ресурсов узла кластера и назначает его пулам узлов в кластере. Он используется для сбора идентификаторов ARM ресурсов кластера для создания отчетов.

Так как пул узлов уже имеет управляемое удостоверение, все команды узла, использующие управляемые удостоверения, должны указывать удостоверение, которое следует использовать вместо использования управляемого удостоверения пула узлов.

Например: az login --identity --resource-id <resource ID of identity>.

Отключение анализа затрат в кластере AKS

Отключите анализ затрат с помощью az aks update команды с флагом --disable-cost-analysis .

az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --disable-cost-analysis

Результаты:

{
    "id": "/subscriptions/xxxxx/resourceGroups/AKSCostRGxxxx/providers/Microsoft.ContainerService/managedClusters/AKSCostClusterxxxx",
    "name": "AKSCostClusterxxxx",
    "properties": {
        "provisioningState": "Succeeded"
    }
}

Примечание.

Если вы хотите уменьшить уровень вашего кластера с тарифа Standard или Premium до тарифа Free, пока включен анализ затрат, необходимо сначала отключить анализ затрат.

Просмотр данных о затратах

Данные о выделении затрат можно просмотреть на портале Azure.

На портале Azure перейдите к подписке Azure, в которую размещается кластер AKS. В разделе "Управление затратами" выберите "Анализ затрат". В списке "Вид " выберите раскрывающийся список и выберите кластеры Kubernetes.

Дополнительные сведения см. в разделе "Просмотр затрат AKS" в службе "Управление затратами Майкрософт".

Определения затрат

В пространствах имен Kubernetes и представлениях активов вы можете увидеть любые из следующих затрат:

Тип заряда Description
Плата за простой Стоимость доступной ресурсной ёмкости, не используемой никакими нагрузками.
Плата за обслуживание Расходы, связанные с услугой, например SLA по времени бесперебойной работы, Microsoft Defender for Containers и т. д.
Системные расходы Стоимость ресурсов, которые AKS резервирует на каждом узле для работы системных процессов, необходимых кластеру, включая kubelet и среду выполнения контейнеров. Подробнее.
Нераспределенные расходы Стоимость ресурсов, которые не могут быть выделены пространствам имен.

Примечание.

Как правило, система завершает работу и делает данные о затратах и использовании доступны в течение 8–24 часов.

Устранение неполадок

Если вы сталкиваетесь с проблемами, такими как cost-agent сбой OOMKilled или зависание pod в Pending состоянии, см. статью "Устранение неполадок с надстройкой анализа затрат AKS".

Следующие шаги

Дополнительные сведения о затратах в AKS см. в статье "Понимание использования и затрат Службы Azure Kubernetes (AKS)".