Sdílet prostřednictvím


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)?.

Požadavky

  • Úč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.

Poznámka:

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ů.

Poznámka:

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

Vizualizace

Vizualizace s využitím Azure Managed Grafana

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

Poznámka:

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í panely na řídicích panelech Pods Flows chybějící data. 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ř. pody daemonSet nebo nasazení, jako je CoreDNS).
    • Poklesy (úloha): ukazuje poklesy do/z zadané úlohy (např. 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 paketů (pracovní zátěž): Zobrazuje L4/L7 toky paketů do nebo ze zadané pracovní zátěže (např. podů z 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 network-obs-pods jsou k dispozici.

  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ř. 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 zadané pracovní zátěže (např. pody nasazení nebo démonické sady). (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)
    • Pod Flows (úloha): Zobrazuje toky paketů L4/L7 do/z zadaného workloadu (např. Pody Deploymentu nebo DaemonSetu).(ID: 20929)

    Poznámka:

    • V závislosti na nastavení instancí Prometheus/Grafana můžou některé panely řídicích panelů vyžadovat ú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.