Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie Container Network Observability für Azure Kubernetes Service (AKS) mit verwalteten Prometheus- und Grafana-Instanzen und BYO Prometheus und Grafana einrichten, um die ausgelesenen Metriken zu visualisieren.
Mit Container Network Observability können Sie Daten über den Netzwerkdatenverkehr Ihrer AKS-Cluster sammeln. Eine zentrale Plattform für die Überwachung der Anwendungs- und Netzwerkintegrität wird aktiviert. Derzeit werden Metriken in Prometheus gespeichert, und Grafana kann verwendet werden, um sie zu visualisieren. Container Network Observability bietet auch die Möglichkeit, Hubble zu aktivieren. Diese Funktionen werden sowohl für Cilium- als auch für Nicht-Cilium-Cluster unterstützt.
Container Network Observability ist eine der Funktionen von Erweiterte Container-Netzwerkdienste. Weitere Informationen zu Advanced Container Networking Services für Azure Kubernetes Service (AKS) finden Sie unter Was ist Advanced Container Networking Services für Azure Kubernetes Service (AKS)?
Von Bedeutung
Ab dem 30. November 2025 unterstützt Azure Kubernetes Service (AKS) keine Sicherheitsupdates für Azure Linux 2.0 mehr oder stellt diese bereit. Das Azure Linux 2.0-Knotenimage ist eingefroren bei der Version 202512.06.0. Ab dem 31. März 2026 werden Knotenimages entfernt, und Sie können Ihre Knotenpools nicht skalieren. Migrieren Sie zu einer unterstützten Azure Linux-Version, indem Sie Ihre Knotenpools auf eine unterstützte Kubernetes-Version aktualisieren oder zu osSku AzureLinux3 migrieren. Weitere Informationen finden Sie unter [Stilllegung] von Azure Linux 2.0-Knotenpools in AKS.
Prerequisites
- Ein Azure-Konto mit einem aktiven Abonnement. Falls Sie kein Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter "Erste Schritte mit Azure Cloud Shell".
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Installieren Sie die Azure CLI-Erweiterung bei der ersten Verwendung, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um auf die neueste Version zu aktualisieren.
- Für die Schritte in diesem Artikel ist die Azure CLI mindestens in Version 2.56.0 erforderlich. Führen Sie
az --versionaus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI.
Aktivieren der erweiterten Container-Netzwerkdienste
Um fortfahren zu können, benötigen Sie ein AKS-Cluster mit Erweiterten Container-Netzwerkdiensten.
Der Befehl az aks create mit dem Flag Advanced Container Networking Services --enable-acns erstellt einen neuen AKS-Cluster mit allen Features der erweiterten Container-Netzwerkdiensten. Diese Funktionen umfassen Folgendes:
Container Network Observability: Bietet Einblicke in Ihren Netzwerkdatenverkehr. Weitere Informationen erhalten Sie unter Container Network Observability.
Containernetzwerksicherheit: Bietet Sicherheitsfeatures wie FQDN-Filterung. Weitere Informationen erhalten Sie unter Containernetzwerksicherheit.
Note
Cluster mit der Cilium-Datenebene unterstützen Container Network Observability und Containernetzwerksicherheit ab 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
Aktivieren von erweiterten Container-Netzwerkdiensten für einen vorhandenen Cluster
Der az aks update-Befehl mit dem Flag --enable-acns „Advanced Container Networking Services“ aktualisiert einen vorhandenen AKS-Cluster mit allen Advanced Container Networking Services-Funktionen, die Container Network Observability und die Container Network Security-Funktion enthalten.
Note
Nur Cluster mit der Cilium-Datenebene unterstützen die Features für Containernetzwerksicherheit der erweiterten Container-Netzwerkdienste.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns
Abrufen von Clusteranmeldeinformationen
Rufen Sie Ihre Clusteranmeldeinformationen mithilfe des Befehls az aks get-credentials ab.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Von Azure verwaltetes Prometheus und Grafana
Überspringen Sie diesen Abschnitt, wenn Sie BYO Prometheus und Grafana verwenden.
Verwenden Sie das folgende Beispiel, um Prometheus und Grafana für Ihren AKS-Cluster zu installieren und zu aktivieren.
Erstellen einer Azure Monitor-Ressource
#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 '{}'
Erstellen einer Azure Managed Grafana-Instanz
Verwenden Sie az grafana create, um eine Grafana-Instanz zu erstellen. Der Name der Grafana-Instanz muss eindeutig sein.
# 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
Platzieren der Azure Managed Grafana- und Azure Monitor-Ressourcen-IDs in Variablen
Verwenden Sie az grafana show, um die Grafana-Ressourcen-ID in einer Variablen zu platzieren. Verwenden Sie az resource show, um die Azure Monitor-Ressourcen-ID in einer Variablen zu platzieren. Ersetzen Sie myGrafana durch den Namen Ihrer Grafana-Instanz.
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)
Verknüpfen von Azure Monitor und Azure Managed Grafana mit dem AKS-Cluster
Verwenden Sie az aks update, um die Azure Monitor- und Grafana-Ressourcen mit Ihrem AKS-Cluster zu verknüpfen.
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
Visualisierung mithilfe von Azure Managed Grafana
Überspringen Sie diesen Schritt, wenn Sie BYO Grafana verwenden.
Note
Die Metrik hubble_flows_processed_total wird aufgrund der hohen Kardinalität der Metrik in großen Clustern standardmäßig nicht ausgelesen.
Aus diesem Gründen verfügen die Pods Flows-Dashboards über Panels mit fehlenden Daten. Um diese Metrik zu aktivieren und die fehlenden Daten aufzufüllen, müssen Sie die ama-metrics-settings-configmap ändern. Aktualisieren Sie insbesondere den Abschnitt Default-targets-metrics-keep-list. Führen Sie die folgenden Schritte aus, um die Configmap zu aktualisieren:
- Rufen Sie die neueste ama-metrics-settings-configmap ab. (https://github.com/Azure/prometheus-collector/blob/main/otelcollector/configmaps/ama-metrics-settings-configmap.yaml)
- Suchen des networkobservabilityHubble = ""
- Ändern Sie es in networkobservabilityHubble = "hubble.*"
- Jetzt sollten die Pod-Flussmetriken aufgefüllt werden.
Weitere Informationen zur minimalen Aufnahme finden Sie in der Dokumentation zu minimaler Erfassung.
Stellen Sie mit dem Befehl
kubectl get podssicher, dass die Azure Monitor-Pods ausgeführt werden.kubectl get pods -o wide -n kube-system | grep ama-Ihre Ausgabe sollte in etwa dem folgendem Beispiel entsprechen:
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) 26hWir haben Beispieldashboards erstellt. Sie finden Sie im Ordner Dashboards > Azure Managed Prometheus. Sie haben Namen wie „Kubernetes / Networking /
<name>“. Die Suite von Dashboards umfasst:- Cluster: Zeigt Metriken auf Knotenebene für Ihre Cluster an.
- DNS (Cluster): Zeigt DNS-Metriken für einen Cluster oder eine Auswahl von Knoten an.
- DNS (Workload): Zeigt DNS-Metriken für die angegebene Workload an (z. B. Pods eines DaemonSets oder einer Bereitstellung wie CoreDNS).
- Verluste (Workload): zeigt Verluste zu/von der angegebenen Workload an (z. B. Pods einer Bereitstellung oder eines DaemonSet).
- Poddatenflüsse (Namespace): zeigt L4/L7-Paketdatenflüsse in den / aus dem angegebenen Namespace an (d. h. Pods im Namespace).
- Poddatenflüsse (Workload): zeigt L4/L7-Paketflows zu/von der angegebenen Workload an (z. B. Pods einer Bereitstellung oder eines DaemonSet).
Visualisierung mithilfe von BYO Grafana
Überspringen Sie diesen Schritt, wenn Sie Azure Managed Grafana verwenden.
Fügen Sie Ihrer vorhandenen Prometheus-Konfiguration den folgenden Ausleseauftrag hinzu, und starten Sie Ihren Prometheus-Server neu:
- 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Überprüfen Sie in Targets von Prometheus, ob die network-obs-pods vorhanden sind.
Melden Sie sich bei Grafana an, und importieren Sie die folgenden Beispieldashboards mithilfe der folgenden IDs:
- Cluster: Zeigt Metriken auf Knotenebene für Ihre Cluster an. (ID: 18814)
- DNS (Cluster): Zeigt DNS-Metriken für einen Cluster oder eine Auswahl von Knoten an. (ID: 20925)
- DNS (Workload): Zeigt DNS-Metriken für die angegebene Workload an (z. B. Pods eines DaemonSets oder einer Bereitstellung wie CoreDNS). (ID: [20926] https://grafana.com/grafana/dashboards/20926-kubernetes-networking-dns-workload/)
- Verluste (Workload): zeigt Verluste zu/von der angegebenen Workload an (z. B. Pods einer Bereitstellung oder eines DaemonSet).(ID: 20927).
- Poddatenflüsse (Namespace): zeigt L4/L7-Paketdatenflüsse in den / aus dem angegebenen Namespace an (d. h. Pods im Namespace). (ID: 20928)
- Poddatenflüsse (Workload): zeigt L4/L7-Paketflows zu/von der angegebenen Workload an (z. B. Pods einer Bereitstellung oder eines DaemonSet). (ID: 20929)
Note
- Abhängig von den Einstellungen Ihrer Prometheus/Grafana-Instanzen erfordern einige Dashboardbereiche bestimmte Optimierungen, um alle Daten anzuzeigen.
- Cilium unterstützt derzeit keine DNS-Metriken/Dashboards.
Bereinigen von Ressourcen
Wenn Sie nicht vorhaben, diese Anwendung zu verwenden, löschen Sie die anderen Ressourcen, die Sie in diesem Artikel erstellt haben, mit dem Befehl az group delete.
az group delete --name $RESOURCE_GROUP
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie Container Network Observability für Ihren AKS-Cluster installieren und aktivieren.
Weitere Informationen zu Erweiterte Container-Netzwerkdienste für Azure Kubernetes Service (AKS) finden Sie unter Was ist Erweiterte Container-Netzwerkdienste für Azure Kubernetes Service (AKS)?.
Weitere Informationen zur Containernetzwerksicherheit und deren Funktionen finden Sie unter Was ist Containernetzwerksicherheit?.