Udostępnij przez


Konfigurowanie możliwości obserwowania sieci kontenerów dla usługi Azure Kubernetes Service (AKS) — zarządzane przez platformę Azure Prometheus i Grafana

W tym artykule pokazano, jak skonfigurować obserwowalność sieci kontenerów dla usługi Azure Kubernetes Service (AKS) przy użyciu zarządzanych rozwiązań Prometheus i Grafana oraz BYO Prometheus i Grafana, a także jak wizualizować zebrane metryki.

Kontenerowa Obserwowalność Sieci umożliwia zbieranie danych dotyczących ruchu sieciowego klastrów AKS. Umożliwia ona scentralizowaną platformę do monitorowania kondycji aplikacji i sieci. Obecnie wskaźniki są przechowywane w Prometheusie, a Grafana służy do ich wizualizacji. Możliwość obserwowania sieci kontenerów umożliwia również włączenie usługi Hubble. Funkcje te są obsługiwane zarówno w przypadku klastrów Cilium, jak i innych niż Cilium.

Obserwacja sieci kontenerów jest jedną z funkcji usług Advanced Container Networking Services. Aby uzyskać więcej informacji na temat usług Advanced Container Networking Services dla usługi Azure Kubernetes Service (AKS), zobacz Co to jest usługa Advanced Container Networking Services dla usługi Azure Kubernetes Service (AKS)?

Ważne

Począwszy od 30 listopada 2025 r., usługa Azure Kubernetes Service (AKS) nie obsługuje już ani nie zapewnia aktualizacji zabezpieczeń dla systemu Azure Linux 2.0. Obraz węzła systemu Linux 2.0 platformy Azure został zamrożony w wersji 202512.06.0. Od 31 marca 2026 r. obrazy węzłów zostaną usunięte i nie będzie można skalować pul węzłów. Przeprowadź migrację do obsługiwanej wersji systemu Linux platformy Azure, uaktualniając pule węzłów do obsługiwanej wersji rozwiązania Kubernetes lub migrując do systemu osSku AzureLinux3. Aby uzyskać więcej informacji, zapoznaj się z zgłoszeniem dotyczącym wycofania na GitHubie i ogłoszeniem o wycofaniu aktualizacji platformy Azure. Aby być na bieżąco z ogłoszeniami i aktualizacjami, śledź informacje o wersji usługi AKS.

Prerequisites

  • Konto Azure z aktywną subskrypcją. Jeśli go nie masz, przed rozpoczęciem utwórz bezpłatne konto .
  • Minimalna wersja interfejsu wiersza polecenia platformy Azure wymagana do wykonania kroków w tym artykule to 2.56.0. Uruchom az --version, aby znaleźć wersję. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

Włącz usługi zaawansowanej sieci kontenerowej

Aby kontynuować, musisz mieć klaster usługi AKS z włączoną usługą Advanced Container Networking Services .

Polecenie az aks create z flagą --enable-acns Advanced Container Networking Services tworzy nowy klaster AKS ze wszystkimi funkcjami Advanced Container Networking Services. Obejmują one następujące funkcje:

  • Obserwowanie sieci kontenerów: zapewnia wgląd w ruch sieciowy. Aby dowiedzieć się więcej, odwiedź stronę Obserwacja sieci kontenerów.

  • Zabezpieczenia sieci kontenerów: oferuje funkcje, takie jak filtrowanie FQDN. Aby dowiedzieć się więcej, odwiedź stronę Zabezpieczenia sieci kontenerów.

Note

Klastry z płaszczyzną danych Cilium obsługują obserwowalność sieci kontenerów i zabezpieczenia sieci kontenerów, począwszy od wersji 1.29 platformy Kubernetes.

# 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

Włączanie usług Advanced Container Networking Services w istniejącym klastrze

Polecenie az aks update z flagą --enable-acns Advanced Container Networking Services aktualizuje istniejący klaster AKS, dodając wszystkie funkcje Advanced Container Networking Services, w tym obserwowalność sieci kontenerów oraz funkcję zabezpieczania sieci kontenerów.

Note

Tylko klastry z płaszczyzną danych Cilium obsługują funkcje zabezpieczeń sieci kontenerów usługi Advanced Container Networking Services.

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

Pobieranie poświadczeń klastra

Gdy już uzyskasz poświadczenia klastra za pomocą polecenia az aks get-credentials.

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

Zarządzane przez platformę Azure rozwiązania Prometheus i Grafana

Pomiń tę sekcję, jeśli używasz rozwiązania BYO Prometheus i Grafana

Użyj poniższego przykładu, aby zainstalować i aktywować Prometheus i Grafana w swoim klastrze AKS.

Tworzenie zasobu usługi 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 '{}'

Utwórz instancję Azure Managed Grafana

Użyj az grafana create, aby utworzyć wystąpienie Grafana. Nazwa instancji Grafana musi być unikatowa.

# 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 

Identyfikatory zasobów usługi Azure Managed Grafana i Azure Monitor umieść w zmiennych

Użyj polecenia az grafana show, aby w zmiennej umieścić identyfikator zasobu Grafana. Użyj polecenia az resource show, aby umieścić identyfikator zasobu usługi Azure Monitor w zmiennej. Zastąp myGrafana nazwą wystąpienia narzędzia 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)

Użyj az aks update aby połączyć zasoby Azure Monitor i Grafana z klastrem 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

Wizualizacja przy użyciu narzędzia Azure Managed Grafana

Pomiń ten krok, jeśli używasz narzędzia BYO Grafana

Note

Metryka hubble_flows_processed_total nie jest zbierana domyślnie ze względu na wysoką kardynalność metryk w klastrach na dużą skalę. W związku z tym Panele sterowania Ruchy Podów mają panele z brakującymi danymi. Aby włączyć tę metrykę i wypełnić brakujące dane, należy zmodyfikować mapę ama-metrics-settings-configmap. W szczególności zaktualizuj sekcję default-targets-metrics-keep-list. Wykonaj poniższe kroki, aby zaktualizować configmap:

  1. Pobierz najnowszy ama-metrics-settings-configmap. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
  2. Zlokalizuj networkobservabilityHubble = ""
  3. Zmień ją na networkobservabilityHubble = "hubble.*"
  4. Teraz powinny zostać wypełnione metryki przepływu zasobnika.

Aby dowiedzieć się więcej na temat minimalnego pozyskiwania, proszę zapoznać się z dokumentacją minimalnego pozyskiwania.


  1. Aby upewnić się, że zasobniki usługi Azure Monitor są uruchomione, użyj polecenia kubectl get pods.

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

    Dane wyjściowe powinny wyglądać podobnie do następujących przykładowych danych wyjściowych:

    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. Utworzyliśmy przykładowe pulpity nawigacyjne. Znajdują się one w folderze Tablice > Azure Managed Prometheus. Mają nazwy takie jak "Kubernetes / Networking / <name>". Pakiet pulpitów nawigacyjnych obejmuje:

    • Klastry: przedstawia metryki na poziomie węzła dla klastrów.
    • DNS (Klaster): wyświetla metryki DNS w klastrze lub w wybranych węzłach.
    • DNS (obciążenie): pokazuje metryki DNS dla określonego obciążenia (na przykład Pody DaemonSet lub wdrożeń, takich jak CoreDNS).
    • Spadki (Obciążenie): pokazuje spadki związane z określonym obciążeniem, np. zasobniki używane przez wdrożenie lub DaemonSet.
    • Przepływy zasobników (przestrzeń nazw): pokazuje przepływy pakietów L4/L7 do/z określonej przestrzeni nazw (tj. zasobniki w przestrzeni nazw).
    • Przepływy zasobników (obciążenie): pokazuje przepływy pakietów L4/L7 przychodzące do i wychodzące z określonego obciążenia (na przykład zasobniki wdrożenia lub DaemonSet).

Wizualizacja przy użyciu narzędzia BYO Grafana

Pomiń ten krok, jeśli korzystasz z zarządzanej przez platformę Azure narzędzia Grafana

  1. Dodaj następujące zadanie zeskrobania do istniejącej konfiguracji rozwiązania Prometheus i uruchom ponownie serwer 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. W sekcji Targets Prometheusa, sprawdź, czy obecne są network-obs-pods.

  3. Zaloguj się do aplikacji Grafana i zaimportuj następujące przykładowe pulpity nawigacyjne przy użyciu następujących identyfikatorów:

    • Klastry: przedstawia metryki na poziomie węzła dla klastrów. (IDENTYFIKATOR: 18814)
    • SYSTEM DNS (klaster): wyświetla metryki DNS w klastrze lub wybrane węzły. (IDENTYFIKATOR: 20925)
    • DNS (obciążenie): pokazuje metryki DNS dla określonego obciążenia (na przykład Pody DaemonSet lub wdrożeń, takich jak CoreDNS). (IDENTYFIKATOR: [20926] https://grafana.com/grafana/dashboards/20926-kubernetes-networking-dns-workload/)
    • Spadki (Obciążenie): pokazuje spadki do/z określonego obciążenia (na przykład zasobniki Deploymentu lub DaemonSet). (IDENTYFIKATOR: 20927).
    • Przepływy zasobników (przestrzeń nazw): pokazuje przepływy pakietów L4/L7 do/z określonej przestrzeni nazw (tj. zasobniki w przestrzeni nazw). (IDENTYFIKATOR: 20928)
    • Przepływy zasobników (obciążenie): pokazuje przepływy pakietów L4/L7 przychodzące do i wychodzące z określonego obciążenia (na przykład zasobniki wdrożenia lub DaemonSet). (IDENTYFIKATOR: 20929)

    Note

    • W zależności od ustawień instancji Prometheus/Grafana niektóre panele pulpitu nawigacyjnego wymagają specyficznych dostosowań, aby wyświetlić wszystkie dane.
    • Cilium nie obsługuje obecnie metryk/paneli kontrolnych DNS.

Uprzątnij zasoby

Jeśli nie planujesz korzystania z tej aplikacji, usuń inne zasoby utworzone w tym artykule przy użyciu az group delete polecenia .

  az group delete --name $RESOURCE_GROUP

Dalsze kroki

W tym artykule dowiesz się, jak zainstalować i włączyć obserwowalność sieci kontenerów dla klastra usługi AKS.