Настройка гибридных кластеров Kubernetes с помощью Container Insights
Аналитика контейнеров предоставляет широкий интерфейс мониторинга для Служба Azure Kubernetes (AKS). В данной статье описывается, как включить мониторинг кластеров Kubernetes, размещенных за пределами Azure, и обеспечить аналогичный процесс мониторинга.
Поддерживаемые конфигурации
В службе Container Insights официально поддерживаются следующие конфигурации. Если у вас есть другая версия Kubernetes и версии операционной системы, откройте запрос в службу поддержки..
- Средах:
- Локальная среда Kubernetes.
- OpenShift версии 4 и выше, локальной или в других облачных средах.
- Версии Kubernetes и политики поддержки совпадают с поддерживаемыми версиями AKS.
- Поддерживаются следующие среды выполнения контейнеров: Moby и CRI совместимые среды выполнения, такие как CRI-O и ContainerD.
- Поддерживается выпуск ОС Linux для основных и рабочих узлов Ubuntu (18.04 LTS и 16.04 LTS) и Red Hat Enterprise Linux CoreOS 43.81.
- Поддерживаемая служба Azure контроль доступа: управление доступом на основе ролей Kubernetes (RBAC) и не RBAC.
Необходимые компоненты
Перед началом работы убедитесь, что выполнены следующие предварительные требования:
У вас есть рабочая область Log Analytics. Служба Container Insights поддерживает рабочую область Log Analytics в регионах, перечисленных в списке Продукты Azure по регионам. Вы можете создать собственную рабочую область с помощью Azure Resource Manager, PowerShell или портал Azure.
Примечание.
Включение мониторинга нескольких кластеров с одинаковым именем кластера в одной рабочей области Log Analytics не поддерживается. Имена кластеров должны быть уникальными.
Вы являетесь членом роли участника Log Analytics, чтобы включить мониторинг контейнеров. Дополнительные сведения о том, как управлять доступом к рабочей области Log Analytics, см. в статье Управление доступом к рабочей области и данными журналов.
Чтобы просмотреть данные мониторинга, необходимо иметь роль читателя Log Analytics в рабочей области Log Analytics, настроенную с помощью аналитики контейнеров.
У вас есть клиент Helm для подключения диаграммы аналитики контейнеров для указанного кластера Kubernetes.
Ниже приводятся сведения о конфигурации прокси-сервера и брандмауэра, необходимые для того, чтобы контейнерная версия агента Log Analytics для Linux могла взаимодействовать с Azure Monitor:
Ресурс агента Порты *.ods.opinsights.azure.com
Порт 443 *.oms.opinsights.azure.com
Порт 443 *.dc.services.visualstudio.com
Порт 443 Контейнеризованный агент требует, чтобы Kubelet
cAdvisor secure port: 10250
илиunsecure port :10255
был открыт на всех узлах в кластере для сбора метрик производительности. Рекомендуется настроитьsecure port: 10250
на Kubelet cAdvisor, если он еще не настроен.Контейнеризованный агент требует, чтобы в контейнере были указаны следующие переменные среды для взаимодействия со службой API Kubernetes в кластере для сбора данных инвентаризации:
KUBERNETES_SERVICE_HOST
иKUBERNETES_PORT_443_TCP_PORT
.
Внимание
Минимальная версия агента, поддерживаемая для мониторинга гибридных кластеров Kubernetes, — ciprod10182019 или более поздней версии.
Включение мониторинга
Чтобы включить аналитику контейнеров для гибридного кластера Kubernetes, выполните следующие действия.
Настройте рабочую область Log Analytics с помощью решения аналитики контейнеров.
Включите диаграмму Helm аналитики контейнеров с рабочей областью Log Analytics.
Дополнительные сведения о решениях мониторинга в Azure Monitor см. в статье "Мониторинг решений" в Azure Monitor.
Добавление решения контейнеров Azure Monitor
Решение можно развернуть с помощью предоставленного шаблона Azure Resource Manager с помощью командлета New-AzResourceGroupDeployment
Azure PowerShell или Azure CLI.
Если вы не знакомы с концепцией развертывания ресурсов с помощью шаблона, ознакомьтесь со статьями:
- Развертывание ресурсов с использованием шаблонов Resource Manager и Azure PowerShell
- Развертывание ресурсов с использованием шаблонов Resource Manager и Azure CLI
Если вы решили использовать Azure CLI, необходимо сначала установить интерфейс командной строки и использовать его локально. Требуется Azure CLI 2.0.59 или более поздней версии. Для определения версии выполните az --version
. Если вам необходимо установить или обновить Azure CLI, ознакомьтесь со статьей Установка Azure CLI 2.0.
В этом методе используются два шаблона JSON. Один шаблон указывает конфигурацию для включения мониторинга. Другой шаблон содержит значения параметров, настроенные для указания:
workspaceResourceId
: полный идентификатор ресурса рабочей области Log Analytics.workspaceRegion
: регион, в котором создается рабочая область, которая также называется расположением в свойствах рабочей области при просмотре их из портал Azure.
Чтобы сначала определить полный идентификатор ресурса рабочей области Log Analytics, необходимой для workspaceResourceId
значения параметра в файле containerSolutionParams.json , выполните следующие действия. Затем выполните командлет PowerShell или команду Azure CLI, чтобы добавить решение.
Список всех подписок, к которым у вас есть доступ, с помощью следующей команды:
az account list --all -o table
Результат будет выглядеть примерно так:
Name CloudName SubscriptionId State IsDefault ------------------------------------ ----------- ------------------------------------ ------- ----------- Microsoft Azure AzureCloud 0fb60ef2-03cc-4290-b595-e71108e8f4ce Enabled True
Скопируйте значение SubscriptionId.
Перейдите к подписке, в которой размещена рабочая область Log Analytics, с помощью следующей команды:
az account set -s <subscriptionId of the workspace>
В следующем примере отображается список рабочих областей в подписках в формате JSON по умолчанию:
az resource list --resource-type Microsoft.OperationalInsights/workspaces -o json
В выходных данных найдите имя рабочей области. Затем скопируйте полный идентификатор ресурса этой рабочей области Log Analytics под идентификатором поля.
Скопируйте и вставьте в него следующий синтаксис JSON:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceResourceId": { "type": "string", "metadata": { "description": "Azure Monitor Log Analytics Workspace Resource ID" } }, "workspaceRegion": { "type": "string", "metadata": { "description": "Azure Monitor Log Analytics Workspace region" } } }, "resources": [ { "type": "Microsoft.Resources/deployments", "name": "[Concat('ContainerInsights', '-', uniqueString(parameters('workspaceResourceId')))]", "apiVersion": "2017-05-10", "subscriptionId": "[split(parameters('workspaceResourceId'),'/')[2]]", "resourceGroup": "[split(parameters('workspaceResourceId'),'/')[4]]", "properties": { "mode": "Incremental", "template": { "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2015-11-01-preview", "type": "Microsoft.OperationsManagement/solutions", "location": "[parameters('workspaceRegion')]", "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]", "properties": { "workspaceResourceId": "[parameters('workspaceResourceId')]" }, "plan": { "name": "[Concat('ContainerInsights', '(', split(parameters('workspaceResourceId'),'/')[8], ')')]", "product": "[Concat('OMSGallery/', 'ContainerInsights')]", "promotionCode": "", "publisher": "Microsoft" } } ] }, "parameters": {} } } ] }
Сохраните этот файл как containerSolution.json в локальную папку.
Вставьте в него следующий синтаксис JSON:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "workspaceResourceId": { "value": "<workspaceResourceId>" }, "workspaceRegion": { "value": "<workspaceRegion>" } } }
Измените значения для workspaceResourceId с помощью значения, скопированного на шаге 3. Для workspaceRegion скопируйте значение региона после выполнения команды Azure CLI az monitor log-analytics workspace show.
Сохраните этот файл как containerSolutionParams.json в локальную папку.
Теперь вы можете развернуть этот шаблон.
Чтобы выполнить развертывание с помощью Azure PowerShell, используйте следующие команды в папке, содержащей шаблон.
# configure and login to the cloud of Log Analytics workspace.Specify the corresponding cloud environment of your workspace to below command. Connect-AzureRmAccount -Environment <AzureCloud | AzureChinaCloud | AzureUSGovernment>
# set the context of the subscription of Log Analytics workspace Set-AzureRmContext -SubscriptionId <subscription Id of Log Analytics workspace>
# execute deployment command to add Container Insights solution to the specified Log Analytics workspace New-AzureRmResourceGroupDeployment -Name OnboardCluster -ResourceGroupName <resource group of Log Analytics workspace> -TemplateFile .\containerSolution.json -TemplateParameterFile .\containerSolutionParams.json
Изменение конфигурации может занять несколько минут. По завершении сообщение, аналогичное следующему примеру, включает следующий результат:
provisioningState : Succeeded
Чтобы развернуть с помощью Azure CLI, выполните следующие команды:
az login az account set --name <AzureCloud | AzureChinaCloud | AzureUSGovernment> az login az account set --subscription "Subscription Name" # execute deployment command to add container insights solution to the specified Log Analytics workspace az deployment group create --resource-group <resource group of log analytics workspace> --name <deployment name> --template-file ./containerSolution.json --parameters @./containerSolutionParams.json
Изменение конфигурации может занять несколько минут. По завершении сообщение, аналогичное следующему примеру, включает следующий результат:
provisioningState : Succeeded
После включения мониторинга может пройти около 15 минут, прежде чем вы сможете просмотреть метрики работоспособности кластера.
Установка диаграммы Helm
В этом разделе описано, как установить контейнеризованный агент для аналитики контейнеров. Прежде чем продолжить, определите идентификатор рабочей области, необходимый для amalogsagent.secret.wsid
параметра, и первичный ключ, необходимый для amalogsagent.secret.key
параметра. Чтобы определить эти сведения, выполните следующие действия, а затем выполните команды для установки агента с помощью диаграммы Helm.
Выполните следующую команду для создания рабочей области.
az monitor log-analytics workspace list --resource-group <resourceGroupName>
В выходных данных найдите имя рабочей области под именем поля. Затем скопируйте идентификатор рабочей области этой рабочей области Log Analytics в поле customerID.
Выполните следующую команду, чтобы указать первичный ключ для рабочей области.
az monitor log-analytics workspace get-shared-keys --resource-group <resourceGroupName> --workspace-name <logAnalyticsWorkspaceName>
В выходных данных найдите первичный ключ в поле primarySharedKey и скопируйте значение.
Примечание.
Для Helm версии 2 применимы только следующие команды.
--name
Использование параметра не применимо к Helm версии 3.Если кластер Kubernetes обменивается данными через прокси-сервер, настройте параметр
amalogsagent.proxy
с URL-адресом прокси-сервера. Если кластер не взаимодействует через прокси-сервер, вам не нужно указывать этот параметр. Дополнительные сведения см. в разделе "Настройка конечной точки прокси-сервера" далее в этой статье.Добавьте репозиторий диаграмм Azure в локальный список, выполнив следующую команду.
helm repo add microsoft https://microsoft.github.io/charts/repo
Установите диаграмму, выполнив следующую команду.
$ helm install --name myrelease-1 \ --set amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<my_prod_cluster> microsoft/azuremonitor-containers
Если рабочая область Log Analytics находится в регионе Azure для Китая (21Vianet), выполните следующую команду.
$ helm install --name myrelease-1 \ --set amalogsagent.domain=opinsights.azure.cn,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
Если рабочая область Log Analytics находится в Azure для государственных организаций США, выполните следующую команду.
$ helm install --name myrelease-1 \ --set amalogsagent.domain=opinsights.azure.us,amalogsagent.secret.wsid=<logAnalyticsWorkspaceId>,amalogsagent.secret.key=<logAnalyticsWorkspaceKey>,amalogsagent.env.clusterName=<your_cluster_name> incubator/azuremonitor-containers
Включение диаграммы Helm с помощью модели API
Надстройку можно указать в JSON-файле спецификации кластера AKS Engine, который также называется моделью API. В этой надстройке укажите версию WorkspaceGUID
в кодировке Base64 и WorkspaceKey
рабочей области Log Analytics, в которой хранятся собранные данные мониторинга. Вы можете найти WorkspaceGUID
и WorkspaceKey
использовать шаги 1 и 2 в предыдущем разделе.
Поддерживаемые определения API для кластера Azure Stack Hub можно найти в примере kubernetes-container-monitoring_existing_workspace_id_and_key.json. В частности, найдите свойство addons в kubernetesConfig:
"orchestratorType": "Kubernetes",
"kubernetesConfig": {
"addons": [
{
"name": "container-monitoring",
"enabled": true,
"config": {
"workspaceGuid": "<Azure Log Analytics Workspace Id in Base-64 encoded>",
"workspaceKey": "<Azure Log Analytics Workspace Key in Base-64 encoded>"
}
}
]
}
Настройка сбора данных коллекции
Начиная с версии 1.0.0 диаграммы параметров сбора данных агента контролируются из ConfigMap. Дополнительные сведения о параметрах сбора данных агента см. в разделе "Настройка сбора данных агента" для аналитики контейнеров.
После успешного развертывания диаграммы можно просмотреть данные гибридного кластера Kubernetes в аналитике контейнеров из портал Azure.
Примечание.
Задержка приема составляет около 5–10 минут от агента до фиксации в рабочей области Log Analytics. Состояние кластера показывает значение "Нет данных" или "Неизвестно", пока все необходимые данные мониторинга не будут доступны в Azure Monitor.
Настройка конечной точки прокси-сервера
Начиная с чарта версии 2.7.1 диаграмма будет поддерживать указание конечной точки прокси-сервера с параметром amalogsagent.proxy
диаграммы. Таким образом, он может взаимодействовать через прокси-сервер. Обмен данными между агентом аналитики контейнеров и Azure Monitor может быть прокси-сервером HTTP или HTTPS. Поддерживается как анонимная, так и базовая проверка подлинности с использованием имени пользователя и пароля.
Значение конфигурации прокси-сервера имеет синтаксис [protocol://][user:password@]proxyhost[:port]
.
Примечание.
Если прокси-сервер не требует проверки подлинности, необходимо указать псевдозаверяемое имя пользователя и пароль. Это может быть любое имя пользователя или пароль.
Свойство | Description |
---|---|
protocol | HTTP или HTTPS |
Пользователь | Необязательное имя пользователя для аутентификации прокси-сервера |
password | Необязательный пароль для аутентификации прокси-сервера |
proxyhost | Адрес или FQDN прокси-сервера |
port | Номер дополнительного порта для прокси-сервера |
Например, amalogsagent.proxy=http://user01:password@proxy01.contoso.com:8080
.
Если указать протокол http, HTTP-запросы создаются с помощью безопасного подключения SSL/TLS. Прокси-сервер должен поддерживать протоколы SSL/TLS.
Устранение неполадок
Если при попытке включить мониторинг гибридного кластера Kubernetes возникает ошибка, используйте скрипт PowerShell TroubleshootError_nonAzureK8s.ps1 , чтобы помочь вам обнаружить и устранить возникающие проблемы. Он предназначен для обнаружения и попытки исправления следующих проблем:
- Указанная рабочая область Log Analytics допустима.
- Рабочая область Log Analytics настроена с помощью решения Container Insights. Если это не так, настройте рабочую область.
- Запущены модули pod набора реплик агента Azure Monitor.
- Запущены модули pod управляющей программы агента Azure Monitor.
- Служба работоспособности агента Azure Monitor запущена.
- Идентификатор рабочей области Log Analytics и ключ, настроенный в контейнерном агенте, совпадают с рабочей областью, с которым настроена аналитика.
- Убедитесь, что все рабочие узлы Linux имеют
kubernetes.io/role=agent
метку модуля pod планировщиков. Если метки нет, добавьте ее. - Определите условия, которые могут указывать
cAdvisor secure port:10250
илиunsecure port: 10255
не открываться на всех узлах в кластере.
Для выполнения из Azure PowerShell используйте следующие команды в папке, содержащей скрипт.
.\TroubleshootError_nonAzureK8s.ps1 - azureLogAnalyticsWorkspaceResourceId </subscriptions/<subscriptionId>/resourceGroups/<resourcegroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName> -kubeConfig <kubeConfigFile> -clusterContextInKubeconfig <clusterContext>
Следующие шаги
Теперь, когда мониторинг включен для сбора данных о работоспособности и использовании ресурсов гибридных кластеров Kubernetes и рабочих нагрузок, узнайте , как использовать аналитику контейнеров.