Nastavení pozorovatelnosti sítě kontejnerů pro Azure Kubernetes Service (AKS) – Prometheus a Grafana spravované Azurem

V tomto článku se dozvíte, jak nastavit pozorovatelnost sítí kontejnerů pro Azure Kubernetes Service (AKS) pomocí Spravovaných Prometheus a Grafana, BYO Prometheus a Grafana, a jak vizualizovat sebrané metriky.

Pozorovatelnost kontejnerové sítě můžete použít ke shromažďování dat o síťovém provozu clusterů AKS. Umožňuje centralizovanou platformu pro monitorování stavu aplikace a sítě. V současné době se metriky ukládají v systému Prometheus a Grafana může být použita k jejich vizualizaci. Pozorovatelnost služby Container Network také nabízí možnost povolit Hubble. Tyto funkce jsou podporovány jak pro shluky Cilium, tak i pro clustery bez Cilium.

Pozorovatelnost služby Container Network je jednou z funkcí služby Advanced Container Networking Services. Další informace o Advanced Container Networking Services pro Azure Kubernetes Service (AKS) najdete v tématu Co je Advanced Container Networking Services pro Azure Kubernetes Service (AKS)?

Důležité

Od 30. listopadu 2025 už Azure Kubernetes Service (AKS) nepodporuje ani neposkytuje aktualizace zabezpečení pro Azure Linux 2.0. Image uzlu Azure Linux 2.0 je zafixována u verze 202512.06.0. Od 31. března 2026 se image uzlů odeberou a nebudete moct škálovat fondy uzlů. Přejděte na podporovanou verzi Azure Linuxu aktualizací poolů uzlů na podporovanou verzi Kubernetes nebo migrací na osSku AzureLinux3. Další informace najdete v tématu Problém s vyřazením z GitHubu a oznámení o vyřazení aktualizací Azure. Pokud chcete mít přehled o oznámeních a aktualizacích, postupujte podle poznámek k verzi AKS.

Prerequisites

  • Účet Azure s aktivním předplatným. Pokud ho nemáte, vytvořte si bezplatný účet před tím, než začnete.
  • Minimální verze Azure CLI vyžadovaná pro kroky v tomto článku je 2.56.0. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Povolte pokročilé síťové služby kontejnerů

Abyste mohli pokračovat, musíte mít cluster AKS s povolenou službou Advanced Container Networking Services .

Příkaz az aks create s příznakem --enable-acnsAdvanced Container Networking Services vytvoří nový cluster AKS se všemi funkcemi Advanced Container Networking Services. Mezi tyto funkce patří:

  • Pozorovatelnost služby Container Network: Poskytuje přehled o síťovém provozu. Další informace najdete v tématu Pozorovatelnost služby Container Network.

  • Zabezpečení sítě kontejnerů: Nabízí funkce zabezpečení, jako je filtrování FQDN. Další informace najdete v tématu Container Network Security.

Note

Clustery s datovou rovinou Cilium podporují pozorovatelnost a zabezpečení kontejnerových sítí počínaje verzí 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

Povolení pokročilých služeb síťového propojení kontejnerů v existujícím clusteru

Příkaz az aks update s příznakem --enable-acnsAdvanced Container Networking Services aktualizuje existující cluster AKS se všemi funkcemi Advanced Container Networking Services, které zahrnují pozorovatelnost služby Container Network a funkci Zabezpečení sítě kontejnerů .

Note

Pouze clustery s rovinou dat Cilium podporují funkce zabezpečení kontejnerové sítě služby Advanced Container Networking Services.

az aks update \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER_NAME \
    --enable-acns

Získání přihlašovacích údajů clusteru

Jakmile získáte přihlašovací údaje ke clusteru pomocí příkazu az aks get-credentials, pokračujte dál.

az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP

Azure spravovaný systémem Prometheus a Grafana

Pokud používáte BYO Prometheus a Grafana, přeskočte tuto část.

Pomocí následujícího příkladu nainstalujte a povolte Prometheus a Grafana pro cluster AKS.

Vytvoření prostředku Azure Monitoru

#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 '{}'

Vytvoření instance Azure Managed Grafana

K vytvoření instance Grafany použijte příkaz az grafana create . Název instance Grafana musí být jedinečný.

# 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 

Umístění ID prostředků Azure Managed Grafana a Azure Monitoru do proměnných

Pomocí příkazu az grafana show umístěte ID prostředku Grafana do proměnné. Pomocí příkazu az resource show uložte ID prostředku služby Azure Monitor do proměnné. Nahraďte myGrafana názvem vaší instance 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)

Pomocí příkazu az aks update propojte prostředky Azure Monitoru a Grafany s clusterem 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

Vizualizace s využitím Azure Managed Grafana

Tento krok přeskočte, pokud používáte BYO Grafana

Note

Metrika hubble_flows_processed_total se ve výchozím nastavení nesbírá kvůli vysoké kardinalitě metrik ve velkorozsahových clusterech. Z tohoto důvodu mají řídicí panely Toky podů panely s chybějícími daty. Pokud chcete tuto metriku povolit a naplnit chybějící data, musíte upravit mapu ama-metrics-settings-configmap. Konkrétně aktualizujte oddíl "default-targets-metrics-keep-list". Pomocí následujících kroků aktualizujte mapu konfigurace:

  1. Získejte nejnovější mapu ama-metrics-settings-configmap. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
  2. Vyhledejte networkobservabilityHubble = ""
  3. Změňte ho na networkobservabilityHubble = "hubble.*"
  4. Nyní by se měly metriky toku podů začít naplňovat.

Další informace o minimálním příjmu najdete v dokumentaci k minimálnímu příjmu.


  1. Pomocí příkazu kubectl get pods se ujistěte, že pody služby Azure Monitor běží.

    kubectl get pods -o wide -n kube-system | grep ama-
    

    Výstup by měl vypadat podobně jako v následujícím příkladu výstupu:

    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
    
  2. Vytvořili jsme ukázkové řídicí panely. Najdete je ve složce Řídicí panely > Azure Managed Prometheus. Mají názvy jako Kubernetes / Sítě / <name>. Sada řídicích panelů zahrnuje:

    • Clustery: Zobrazuje metriky na úrovni uzlu pro vaše clustery.
    • DNS (cluster): Zobrazuje metriky DNS v clusteru nebo výběru uzlů.
    • DNS (úloha): Zobrazuje metriky DNS pro zadanou úlohu (například pody daemonSet nebo nasazení, jako je CoreDNS).
    • Pokles (pracovní zátěž): Zobrazuje poklesy do/z uvedené pracovní zátěže (například pody nasazení nebo DaemonSetu).
    • Toky paketů v podech (jmenný prostor): zobrazuje toky paketů L4/L7 do/z zadaného jmenného prostoru (tj. pody v jmenném prostoru).
    • Toky podů (zátěž): Zobrazuje L4/L7 toky paketů do/z zadané zátěže (například podů v rámci nasazení nebo DaemonSetu).

Vizualizace v BYO Grafana

Pokud používáte Grafana spravovanou v Azure, tento krok přeskočte.

  1. Do stávající konfigurace systému Prometheus přidejte následující úlohu sběru dat a restartujte server 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
    
  2. V cílech Prometheus ověřte, že jsou k dispozici network-obs-pods.

  3. Přihlaste se k Grafana a naimportujte následující ukázkové řídicí panely pomocí následujících ID:

    • Clustery: Zobrazuje metriky na úrovni uzlu pro vaše clustery. (ID: 18814)
    • DNS (cluster): Zobrazuje metriky DNS v clusteru nebo výběru uzlů. (ID: 20925)
    • DNS (úloha): Zobrazuje metriky DNS pro zadanou úlohu (například pody daemonSet nebo nasazení, jako je CoreDNS). (ID: [20926] https://grafana.com/grafana/dashboards/20926-kubernetes-networking-dns-workload/)
    • Poklesy (pracovní zátěž): ukazuje poklesy do/z určené pracovní zátěže (například pody nasazení nebo DaemonSet). (ID: 20927).
    • Toky paketů v podech (jmenný prostor): zobrazuje toky paketů L4/L7 do/z zadaného jmenného prostoru (tj. pody v jmenném prostoru). (ID: 20928)
    • Toky podů (zátěž): Zobrazuje L4/L7 toky paketů do/z zadané zátěže (například podů v rámci nasazení nebo DaemonSetu). (ID: 20929)

    Note

    • V závislosti na nastavení instancí Prometheus/Grafana některé panely řídicích panelů vyžadují konkrétní úpravy, aby se zobrazila všechna data.
    • Cilium v současné době nepodporuje metriky a řídicí panely DNS.

Úklid prostředků

Pokud nemáte v plánu používat tuto aplikaci, pomocí příkazu odstraňte další prostředky, které jste vytvořili v tomto článku az group delete .

  az group delete --name $RESOURCE_GROUP

Další kroky

V tomto článku s postupy jste zjistili, jak nainstalovat a povolit pozorovatelnost služby Container Network pro cluster AKS.