Dela via


Konfigurera containernätverksobservabilitet för Azure Kubernetes Service (AKS) – Azure-hanterad Prometheus och Grafana

Den här artikeln visar hur du konfigurerar containernätverksobservabilitet för Azure Kubernetes Service (AKS) med hjälp av Managed Prometheus och Grafana och BYO Prometheus och Grafana samt visualiserar de skrapade måtten

Du kan använda Container Network Observability för att samla in data om nätverkstrafiken i dina AKS-kluster. Det möjliggör en centraliserad plattform för övervakning av program och nätverkshälsa. För närvarande lagras mått i Prometheus och Grafana kan användas för att visualisera dem. Container Network Observability erbjuder också möjligheten att aktivera Hubble. Dessa funktioner stöds för både Cilium- och icke-Cilium-kluster.

Container Network Observability är en av funktionerna i Advanced Container Networking Services. Mer information om Advanced Container Networking Services för Azure Kubernetes Service (AKS) finns i Vad är Avancerade containernätverkstjänster för Azure Kubernetes Service (AKS)?

Viktigt!

Från och med den 30 november 2025 kommer AKS inte längre att stödja eller tillhandahålla säkerhetsuppdateringar för Azure Linux 2.0. Från och med den 31 mars 2026 tas nodbilder bort och du kan inte skala dina nodpooler. Migrera till en Azure Linux-version som stöds genom att uppgradera dina nodpooler till en Kubernetes-version som stöds eller migrera till osSku AzureLinux3. Mer information finns i [Pensionering] Azure Linux 2.0-nodpooler på AKS.

Prerequisites

  • Den lägsta versionen av Azure CLI som krävs för stegen i den här artikeln är 2.56.0. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Aktivera avancerade containernätverkstjänster

För att kunna fortsätta måste du ha ett AKS-kluster med Advanced Container Networking Services aktiverat.

Kommandot az aks create med flaggan Advanced Container Networking Services, --enable-acns, skapar ett nytt AKS-kluster med alla funktioner i Advanced Container Networking Services. Dessa funktioner omfattar:

Note

Kluster med Cilium-dataplanet stöder containernätverksobservabilitet och containernätverkssäkerhet från och med Kubernetes version 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

Aktivera Advanced Container Networking Services i ett befintligt kluster

Kommandot az aks update med flaggan --enable-acnsAdvanced Container Networking Services uppdaterar ett befintligt AKS-kluster med alla avancerade funktioner för containernätverkstjänster som innehåller containernätverksobservabilitet och funktionen Container Network Security .

Note

Endast kluster med Cilium-dataplanet stöder funktioner för containernätverkssäkerhet i Advanced Container Networking Services.

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

Hämta klusterautentiseringsuppgifter

När du har hämtat klustrets autentiseringsuppgifter med kommandot az aks get-credentials.

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

Azure hanterad Prometheus och Grafana

Hoppa över det här avsnittet om du använder BYO Prometheus och Grafana

Använd följande exempel för att installera och aktivera Prometheus och Grafana för ditt AKS-kluster.

Skapa Azure Monitor-resurs

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

Skapa Azure Managed Grafana-instans

Använd az grafana create för att skapa en Grafana-instans. Namnet på Grafana-instansen måste vara unikt.

# 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 

Placera resurs-ID:t för Azure Managed Grafana och Azure Monitor i variabler

Använd az grafana show för att placera Grafana-resurs-ID:t i en variabel. Använd az resource show för att placera Azure Monitor-resurs-ID:t i en variabel. Ersätt myGrafana med namnet på grafanainstansen.

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)

Använd az aks update för att länka Azure Monitor- och Grafana-resurserna till ditt AKS-kluster.

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

Visualisering med Azure Managed Grafana

Hoppa över det här steget om du använder BYO Grafana

Note

Måttet hubble_flows_processed_total samlas inte in som standard på grund av hög måttkardinalitet i storskaliga kluster. Därför har Pods Flows instrumentpanelerna paneler med saknade data. Om du vill aktivera det här måttet och fylla i saknade data måste du ändra konfigurationskartan ama-metrics-settings-configmap. Mer specifikt uppdaterar du avsnittet default-targets-metrics-keep-list. Följ stegen nedan för att uppdatera konfigurationskartan:

  1. Hämta den senaste konfigurationskartan ama-metrics-settings-configmap. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
  2. Leta upp networkobservabilityHubble = ""
  3. Ändra till networkobservabilityHubble = "hubble.*"
  4. Nu bör Pod-flödesmåtten visas.

Mer information om vad minimal inmatning är finns i dokumentationen om minimal inmatning.


  1. Kontrollera att Azure Monitor-poddarna körs med kommandot kubectl get pods .

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

    Dina utdata bör se ut ungefär som följande exempelutdata:

    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. Vi har skapat instrumentpanelsexempel. De finns under mappen Instrumentpaneler > i Azure Managed Prometheus . De har namn som "Kubernetes/ Networking / <name>". Sviten med instrumentpaneler innehåller:

    • Kluster: visar mått på nodnivå för dina kluster.
    • DNS (kluster): visar DNS-mått i ett kluster eller val av noder.
    • DNS (Arbetsbelastning): visar DNS-mått för den angivna arbetsbelastningen (till exempel poddar för en DaemonSet eller distribution, till exempel CoreDNS).
    • Drops (Workload): visar droppar till/från den angivna arbetsbelastningen (till exempel poddar för en distribution eller DaemonSet).
    • Poddflöden (namnområde): visar L4/L7-paketflöden till/från det angivna namnområdet (dvs. poddar i namnområdet).
    • Poddflöden (arbetsbelastning): visar L4/L7-paketflöden till/från den angivna arbetsbelastningen (till exempel Poddar för en distribution eller DaemonSet).

Visualisering med BYO Grafana

Hoppa över det här steget om du använder Azure-hanterad Grafana

  1. Lägg till följande skrapjobb i din befintliga Prometheus-konfiguration och starta om Prometheus-servern:

    - 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. Under Mål i Prometheus, kontrollera att network-obs-pods finns.

  3. Logga in på Grafana och importera följande exempelinstrumentpaneler med hjälp av följande ID:n:

    • Kluster: visar mått på nodnivå för dina kluster. (ID: 18814)
    • DNS (kluster): visar DNS-mått i ett kluster eller val av noder. (ID: 20925)
    • DNS (Arbetsbelastning): visar DNS-mått för den angivna arbetsbelastningen (till exempel poddar för en DaemonSet eller distribution, till exempel CoreDNS). (ID: [20926] https://grafana.com/grafana/dashboards/20926-kubernetes-networking-dns-workload/)
    • Drops (Workload): visar droppar till/från den angivna arbetsbelastningen (till exempel poddar för en distribution eller DaemonSet). (ID: 20927).
    • Poddflöden (namnområde): visar L4/L7-paketflöden till/från det angivna namnområdet (dvs. poddar i namnområdet). (ID: 20928)
    • Poddflöden (arbetsbelastning): visar L4/L7-paketflöden till/från den angivna arbetsbelastningen (till exempel Poddar för en distribution eller DaemonSet). (ID: 20929)

    Note

    • Beroende på dina Inställningar för Prometheus/Grafana-instanser kräver vissa instrumentpaneler specifika justeringar för att visa alla data.
    • Cilium stöder för närvarande inte DNS-mått/instrumentpaneler.

Rensa resurser

Om du inte planerar att använda det här programmet tar du bort de andra resurser som du skapade i den här artikeln med hjälp av az group delete kommandot .

  az group delete --name $RESOURCE_GROUP

Nästa steg

I den här artikeln har du lärt dig hur du installerar och aktiverar containernätverksobservabilitet för ditt AKS-kluster.