Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как настроить наблюдаемость сети контейнеров для Службы Azure Kubernetes (AKS) с помощью Управляемого Prometheus и Grafana, а также собственного Prometheus и Grafana, и визуализировать собранные метрики.
С помощью наблюдения за сетью контейнеров можно собирать данные о сетевом трафике кластеров AKS. Она обеспечивает централизованную платформу для мониторинга работоспособности приложений и сети. В настоящее время метрики хранятся в Prometheus и Grafana можно использовать для их визуализации. Наблюдательность сети контейнеров также обеспечивает возможность включения Hubble. Эти возможности поддерживаются как для кластеров Cilium, так и для кластеров, отличных от Cilium.
Наблюдение за сетью контейнеров является одной из функций расширенных сетевых служб контейнеров. Дополнительные сведения о службах расширенной сетевой интеграции контейнеров для Azure Kubernetes Service (AKS) см. в статье Что такое службы расширенной сетевой интеграции контейнеров для Azure Kubernetes Service (AKS)?
Это важно
Начиная с 30 ноября 2025 года AKS больше не будет поддерживать или предоставлять обновления безопасности для Azure Linux 2.0. Начиная с 31 марта 2026 года образы узлов будут удалены, и вы не сможете масштабировать пулы узлов. Выполните миграцию в поддерживаемую версию Linux Azure, обновив пулы узлов до поддерживаемой версии Kubernetes или выполните миграцию на osSku AzureLinux3. Дополнительные сведения см. в статье [Устаревание] Пулы узлов Azure Linux 2.0 в AKS.
Prerequisites
- Учетная запись Azure с активной подпиской. Если у вас еще нет аккаунта, создайте бесплатную учетную запись, прежде чем начать.
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см. в статье "Начало работы с Azure Cloud Shell".
Если вы предпочитаете запускать справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, войдите в Azure CLI с помощью команды az login . Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других параметрах входа см. в статье "Проверка подлинности в Azure с помощью Azure CLI".
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений и управление ими с помощью Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
- Минимальная версия Azure CLI, необходимая для действий, описанных в этой статье, — 2.56.0. Чтобы узнать версию, выполните команду
az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Включение расширенных служб сетей контейнеров
Для продолжения необходимо иметь кластер AKS с включенными расширенными службами сетей контейнеров.
Команда az aks create с флагом --enable-acnsрасширенных сетевых служб контейнеров создает новый кластер AKS со всеми функциями расширенных сетевых служб контейнеров. Эти функции охватывают следующие возможности:
Наблюдение за сетью контейнеров. Предоставляет аналитические сведения о сетевом трафике. Дополнительные сведения см. в разделе "Наблюдаемость сети контейнеров".
Безопасность сети контейнеров: предлагает такие функции безопасности, как фильтрация полного доменного имени. Дополнительные сведения см. в статье "Безопасность сети контейнеров".
Note
Кластеры с плоскостью данных Cilium поддерживают наблюдаемость сети контейнеров и безопасность сети контейнеров, начиная с Kubernetes версии 1.29.
# Set an environment variable for the AKS cluster name. Make sure to replace the placeholder with your own value.
export CLUSTER_NAME="<aks-cluster-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--generate-ssh-keys \
--location eastus \
--max-pods 250 \
--network-plugin azure \
--network-plugin-mode overlay \
--network-dataplane cilium \
--node-count 2 \
--pod-cidr 192.168.0.0/16 \
--kubernetes-version 1.29 \
--enable-acns
Включение продвинутых сетевых служб для контейнеров в существующем кластере
Команда az aks update с флагом "Расширенные сетевые службы контейнеров" --enable-acnsобновляет существующий кластер AKS со всеми функциями расширенных сетевых служб контейнеров, включая наблюдение за сетями контейнеров и функцию безопасности сети контейнеров .
Note
Только кластеры с плоскостем данных Cilium поддерживают функции безопасности сети контейнеров расширенных сетевых служб контейнеров.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns
Получение учетных данных кластера
После получения учетных данных кластера с помощью az aks get-credentials команды.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Управляемые Azure Prometheus и Grafana
Пропустить этот раздел, если используется BYO Prometheus и Grafana
Используйте следующий пример, чтобы установить и включить Prometheus и Grafana для кластера AKS.
Создание ресурса Azure Monitor
#Set an environment variable for the Grafana name. Make sure to replace the placeholder with your own value.
export AZURE_MONITOR_NAME="<azure-monitor-name>"
# Create Azure monitor resource
az resource create \
--resource-group $RESOURCE_GROUP \
--namespace microsoft.monitor \
--resource-type accounts \
--name $AZURE_MONITOR_NAME \
--location eastus \
--properties '{}'
Создание управляемого экземпляра Grafana в Azure
Используйте az grafana create для создания экземпляра Grafana. Имя экземпляра Grafana должно быть уникальным.
# Set an environment variable for the Grafana name. Make sure to replace the placeholder with your own value.
export GRAFANA_NAME="<grafana-name>"
# Create Grafana instance
az grafana create \
--name $GRAFANA_NAME \
--resource-group $RESOURCE_GROUP
Размещение идентификаторов ресурсов Azure Managed Grafana и Azure Monitor в переменных
Используйте az grafana show , чтобы поместить идентификатор ресурса Grafana в переменную. Используйте az resource show , чтобы поместить идентификатор ресурса Azure Monitor в переменную. Замените myGrafana названием вашей инстанции Grafana.
grafanaId=$(az grafana show \
--name $GRAFANA_NAME \
--resource-group $RESOURCE_GROUP \
--query id \
--output tsv)
azuremonitorId=$(az resource show \
--resource-group $RESOURCE_GROUP \
--name $AZURE_MONITOR_NAME \
--resource-type "Microsoft.Monitor/accounts" \
--query id \
--output tsv)
Подключите Azure Monitor и Azure Managed Grafana к кластеру AKS
Используйте az aks update , чтобы связать ресурсы Azure Monitor и Grafana с кластером AKS.
az aks update \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--enable-azure-monitor-metrics \
--azure-monitor-workspace-resource-id $azuremonitorId \
--grafana-resource-id $grafanaId
Visualization
Визуализация с использованием Azure Managed Grafana
Пропустить этот шаг при использовании BYO Grafana
Note
hubble_flows_processed_total Метрика по умолчанию не удаляется из-за высокой кратности метрик в крупных кластерах.
Из-за этого панели мониторинга потоков Pods имеют панели с отсутствующими данными. Чтобы включить эту метрику и заполнить отсутствующие данные, необходимо изменить ama-metrics-settings-configmap. В частности, обновите раздел списка метрик по умолчанию. Следуйте приведённым ниже шагам, чтобы обновить configmap:
- Скачайте обновлённую ama-metrics-settings-configmap. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
- Найдите networkobservabilityHubble = ""
- Измените его на networkobservabilityHubble = hubble.*.
- Теперь метрики потока Pod должны заполняться.
Чтобы узнать больше о минимальном поглощении, см. документацию по минимальному поглощению.
Убедитесь, что модули pod Azure Monitor выполняются с помощью
kubectl get podsкоманды.kubectl get pods -o wide -n kube-system | grep ama-Выходные данные должны выглядеть примерно так:
ama-metrics-5bc6c6d948-zkgc9 2/2 Running 0 (21h ago) 26h ama-metrics-ksm-556d86b5dc-2ndkv 1/1 Running 0 (26h ago) 26h ama-metrics-node-lbwcj 2/2 Running 0 (21h ago) 26h ama-metrics-node-rzkzn 2/2 Running 0 (21h ago) 26h ama-metrics-win-node-gqnkw 2/2 Running 0 (26h ago) 26h ama-metrics-win-node-tkrm8 2/2 Running 0 (26h ago) 26hМы создали примеры панелей мониторинга. Их можно найти в папке "Панели мониторинга > Azure Managed Prometheus ". Они имеют такие имена, как
<name>. Набор панелей мониторинга включает:- Кластеры: отображаются метрики уровня узла для кластеров.
- DNS (кластер): отображаются метрики DNS в кластере или выборе узлов.
- DNS (рабочая нагрузка): отображаются метрики DNS для указанной рабочей нагрузки (такие как Pod-ы DaemonSet или Deployment, например, CoreDNS).
- Drops (Рабочая нагрузка): отображает отбрасывания в/из указанной рабочей нагрузки (например, Pods развертывания или DaemonSet).
- Потоки pod (пространство имен): показывают потоки пакетов L4/L7 к и из указанного пространства имен (то есть pod в этом пространстве имен).
- Потоки Pod (рабочая нагрузка): отображают потоки пакетов L4/L7 в/из указанной рабочей нагрузки (например, Pod для Deployment или DaemonSet).
Визуализация с помощью BYO Grafana
Пропустите этот шаг, если используется управляемая Grafana от Azure.
Добавьте следующее задание на сбор данных в существующую конфигурацию Prometheus и перезапустите сервер Prometheus.
- job_name: networkobservability-hubble kubernetes_sd_configs: - role: pod relabel_configs: - target_label: cluster replacement: myAKSCluster action: replace - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_label_k8s_app] regex: kube-system;(retina|cilium) action: keep - source_labels: [__address__] action: replace regex: ([^:]+)(?::\d+)? replacement: $1:9965 target_label: __address__ - source_labels: [__meta_kubernetes_pod_node_name] target_label: instance action: replace metric_relabel_configs: - source_labels: [__name__] regex: '|hubble_dns_queries_total|hubble_dns_responses_total|hubble_drop_total|hubble_tcp_flags_total' # if desired, add |hubble_flows_processed_total action: keepВ разделе Targets Prometheus проверьте наличие network-obs-pods.
Войдите в Grafana и импортируйте следующие примеры панелей мониторинга с помощью следующих идентификаторов:
- Кластеры: отображаются метрики уровня узла для кластеров. (Идентификатор: 18814)
- DNS (кластер): отображаются метрики DNS в кластере или выборе узлов. (Идентификатор: 20925)
- DNS (рабочая нагрузка): отображаются метрики DNS для указанной рабочей нагрузки (такие как Pod-ы DaemonSet или Deployment, например, CoreDNS). (Идентификатор: [20926] https://grafana.com/grafana/dashboards/20926-kubernetes-networking-dns-workload/)
- Потери (рабочая нагрузка): показывает потери в/из указанной рабочей нагрузки (например, Pods для Deployment или DaemonSet). (Идентификатор: 20927).
- Потоки pod (пространство имен): показывают потоки пакетов L4/L7 к и из указанного пространства имен (то есть pod в этом пространстве имен). (Идентификатор: 20928)
- Потоки Pod (рабочая нагрузка): отображают потоки пакетов L4/L7 в/из указанной рабочей нагрузки (например, Pod для Deployment или DaemonSet). (Идентификатор: 20929)
Note
- В зависимости от параметров экземпляров Prometheus/Grafana некоторые панели мониторинга требуют определенных настроек для отображения всех данных.
- Cilium в настоящее время не поддерживает метрики и панели мониторинга DNS.
Очистка ресурсов
Если вы не планируете использовать это приложение, удалите другие ресурсы, созданные в этой статье, с помощью az group delete команды.
az group delete --name $RESOURCE_GROUP
Дальнейшие шаги
Из этой статьи вы узнали, как установить и включить наблюдаемость сети контейнеров для кластера AKS.
Для получения более подробной информации о расширенных сетевых службах контейнеров для Службы Azure Kubernetes (AKS) см. раздел Что такое расширенные сетевые службы контейнеров для Службы Azure Kubernetes (AKS)?.
Дополнительные сведения о безопасности сети контейнеров и ее возможностях см. в разделе "Что такое безопасность сети контейнеров?".
Azure Kubernetes Service