Monitora il traffico dei carichi di lavoro Kubernetes con Container Network Observability - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Monitora il traffico dei carichi di lavoro Kubernetes con Container Network Observability

Amazon EKS offre funzionalità avanzate di osservabilità della rete che forniscono informazioni più approfondite sull'ambiente di rete dei container. Queste funzionalità ti aiutano a comprendere, monitorare e risolvere meglio il tuo panorama di rete Kubernetes in. AWS Con una migliore osservabilità della rete di container, puoi sfruttare metriche granulari relative alla rete per un migliore rilevamento proattivo delle anomalie nel traffico del cluster, nei flussi cross-AZ e nei servizi. AWS Utilizzando queste metriche, puoi misurare le prestazioni del sistema e visualizzare le metriche sottostanti utilizzando il tuo stack di osservabilità preferito.

Inoltre, Amazon EKS ora fornisce visualizzazioni di monitoraggio della rete nella AWS console che accelerano e migliorano la risoluzione precisa dei problemi per un'analisi più rapida delle cause principali. Puoi anche sfruttare queste funzionalità visive per individuare i principali interlocutori e i flussi di rete che causano ritrasmissioni e timeout di ritrasmissione, eliminando i punti ciechi durante gli incidenti.

Queste funzionalità sono abilitate da Amazon CloudWatch Network Flow Monitor.

Casi d’uso

Misura le prestazioni della rete per rilevare anomalie

Diversi team si basano su uno stack di osservabilità che consente loro di misurare le prestazioni del sistema, visualizzare le metriche del sistema e allarmarsi nel caso in cui venga superata una soglia specifica. L'osservabilità della rete di container in EKS si allinea a questo aspetto, esponendo le metriche chiave del sistema che è possibile analizzare per ampliare l'osservabilità delle prestazioni di rete del sistema a livello di pod e nodo di lavoro.

Sfrutta le visualizzazioni della console per una risoluzione dei problemi più precisa

In caso di allarme proveniente dal sistema di monitoraggio, potresti voler concentrarti sul cluster e sul carico di lavoro da cui ha avuto origine il problema. A tale scopo, puoi sfruttare le visualizzazioni della console EKS che restringono l'ambito di indagine a livello di cluster e accelerano la divulgazione dei flussi di rete responsabili della maggior parte delle ritrasmissioni, dei timeout di ritrasmissione e del volume di dati trasferiti.

Tieni traccia dei migliori oratori nel tuo ambiente Amazon EKS

Molti team utilizzano EKS come base per le proprie piattaforme, rendendolo il punto focale dell'attività di rete di un ambiente applicativo. Utilizzando le funzionalità di monitoraggio della rete di questa funzionalità, puoi monitorare quali carichi di lavoro sono responsabili della maggior parte del traffico (misurato in base al volume di dati) all'interno del cluster AZs, oltre al traffico verso destinazioni esterne all'interno AWS (DynamoDB e S3) e oltre AWS il cloud (Internet o on-premise). Inoltre, è possibile monitorare le prestazioni di ciascuno di questi flussi in base alle ritrasmissioni, ai timeout di ritrasmissione e ai dati trasferiti.

Funzionalità

  1. Metriche delle prestazioni: questa funzionalità consente di acquisire le metriche di sistema relative alla rete per pod e nodi di lavoro direttamente dall'agente Network Flow Monitor (NFM) in esecuzione nel cluster EKS.

  2. Mappa dei servizi: questa funzionalità visualizza dinamicamente l'intercomunicazione tra i carichi di lavoro nel cluster, consentendo di divulgare rapidamente le metriche chiave (ritrasmissioni - RT, timeout di ritrasmissione - RTO e dati trasferiti - DT) associate ai flussi di rete tra pod comunicanti.

  3. Tabella dei flussi: con questa tabella, puoi monitorare i migliori oratori nei carichi di lavoro Kubernetes del tuo cluster da tre diverse angolazioni: visualizzazione del AWS servizio, visualizzazione del cluster e visualizzazione esterna. Per ogni vista, puoi vedere le ritrasmissioni, i timeout di ritrasmissione e i dati trasferiti tra il pod di origine e la sua destinazione.

    • AWS visualizzazione del servizio: mostra i migliori oratori ai AWS servizi (DynamoDB e S3)

    • Visualizzazione cluster: mostra i migliori oratori all'interno del cluster (da est ← a → ovest)

    • Vista esterna: mostra i migliori oratori alle destinazioni esterne al cluster all'esterno AWS

Nozioni di base

Per iniziare, abilita Container Network Observability nella console EKS per un cluster nuovo o esistente. Ciò automatizzerà la creazione delle dipendenze di Network Flow Monitor (NFM) (risorse Scope and Monitor). Inoltre, dovrai installare il componente aggiuntivo Network Flow Monitor Agent. In alternativa, puoi installare queste dipendenze utilizzando EKS APIs (per il componente aggiuntivo) AWS CLI, NFM APIs o Infrastructure as Code (come Terraform). Una volta stabilite queste dipendenze, puoi configurare lo strumento di monitoraggio preferito per raccogliere le metriche delle prestazioni di rete per pod e nodi di lavoro dall'agente NFM. Per visualizzare l'attività di rete e le prestazioni dei carichi di lavoro, è possibile accedere alla console EKS nella scheda «Rete» del dashboard di osservabilità del cluster.

Quando si utilizza Network Flow Monitor in EKS, è possibile mantenere il flusso di lavoro e lo stack tecnologico di osservabilità esistenti, sfruttando al contempo una serie di funzionalità aggiuntive che consentono di comprendere e ottimizzare ulteriormente il livello di rete del proprio ambiente EKS. Puoi saperne di più sui prezzi di Network Flow Monitor qui.

Prerequisiti e note importanti

  1. Come accennato in precedenza, se abilitate Container Network Observability dalla console EKS, le dipendenze delle risorse NFM sottostanti (Scope e Monitor) verranno create automaticamente per vostro conto e sarete guidati attraverso il processo di installazione del componente aggiuntivo EKS per NFM.

  2. Se desideri abilitare questa funzionalità utilizzando Infrastructure as Code (IaC) come Terraform, dovrai definire le seguenti dipendenze nel tuo IaC: NFM Scope, NFM Monitor, componente aggiuntivo EKS per NFM. Inoltre, dovrai concedere le autorizzazioni pertinenti al componente aggiuntivo EKS utilizzando Pod Identity o IAM roles for service accounts (IRSA).

  3. È necessario eseguire una versione minima di 1.1.0 per il componente aggiuntivo EKS dell'agente NFM.

  4. È necessario utilizzare la versione 6.21.0 o successiva di Terraform AWS Provider per il supporto delle risorse di Network Flow Monitor.

Autorizzazioni IAM richieste

Componente aggiuntivo EKS per l'agente NFM

Puoi utilizzare la policy CloudWatchNetworkFlowMonitorAgentPublishPolicyAWS gestita con Pod Identity. Questa policy contiene le autorizzazioni per l'agente NFM a inviare report di telemetria (metriche) a un endpoint Network Flow Monitor.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect" : "Allow", "Action" : [ "networkflowmonitor:Publish" ], "Resource" : "*" } ] }

Osservabilità della rete dei container nella console EKS

Le seguenti autorizzazioni sono necessarie per abilitare la funzionalità e visualizzare la mappa dei servizi e la tabella dei flussi nella console.

{ "Version" : "2012-10-17", "Statement" : [ { "Effect": "Allow", "Action": [ "networkflowmonitor:ListScopes", "networkflowmonitor:ListMonitors", "networkflowmonitor:GetScope", "networkflowmonitor:GetMonitor", "networkflowmonitor:CreateScope", "networkflowmonitor:CreateMonitor", "networkflowmonitor:TagResource", "networkflowmonitor:StartQueryMonitorTopContributors", "networkflowmonitor:StopQueryMonitorTopContributors", "networkflowmonitor:GetQueryStatusMonitorTopContributors", "networkflowmonitor:GetQueryResultsMonitorTopContributors" ], "Resource": "*" } ] }

Utilizzo di AWS CLI, API EKS e API NFM

#!/bin/bash # Script to create required Network Flow Monitor resources set -e CLUSTER_NAME="my-eks-cluster" CLUSTER_ARN="arn:aws:eks:{Region}:{Account}:cluster/{ClusterName}" REGION="us-west-2" AGENT_NAMESPACE="amazon-network-flow-monitor" echo "Creating Network Flow Monitor resources..." # Check if Network Flow Monitor agent is running in the cluster echo "Checking for Network Flow Monitor agent in cluster..." if kubectl get pods -n "$AGENT_NAMESPACE" --no-headers 2>/dev/null | grep -q "Running"; then echo "Network Flow Monitor agent exists and is running in the cluster" else echo "Network Flow Monitor agent not found. Installing as EKS addon..." aws eks create-addon \ --cluster-name "$CLUSTER_NAME" \ --addon-name "$AGENT_NAMESPACE" \ --region "$REGION" echo "Network Flow Monitor addon installation initiated" fi # Get Account ID ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) echo "Cluster ARN: $CLUSTER_ARN" echo "Account ID: $ACCOUNT_ID" # Check for existing scope echo "Checking for existing Network Flow Monitor Scope..." EXISTING_SCOPE=$(aws networkflowmonitor list-scopes --region $REGION --query 'scopes[0].scopeArn' --output text 2>/dev/null || echo "None") if [ "$EXISTING_SCOPE" != "None" ] && [ "$EXISTING_SCOPE" != "null" ]; then echo "Using existing scope: $EXISTING_SCOPE" SCOPE_ARN=$EXISTING_SCOPE else echo "Creating new Network Flow Monitor Scope..." SCOPE_RESPONSE=$(aws networkflowmonitor create-scope \ --targets "[{\"targetIdentifier\":{\"targetId\":{\"accountId\":\"${ACCOUNT_ID}\"},\"targetType\":\"ACCOUNT\"},\"region\":\"${REGION}\"}]" \ --region $REGION \ --output json) SCOPE_ARN=$(echo $SCOPE_RESPONSE | jq -r '.scopeArn') echo "Scope created: $SCOPE_ARN" fi # Create Network Flow Monitor with EKS Cluster as local resource echo "Creating Network Flow Monitor..." MONITOR_RESPONSE=$(aws networkflowmonitor create-monitor \ --monitor-name "${CLUSTER_NAME}-monitor" \ --local-resources "type=AWS::EKS::Cluster,identifier=${CLUSTER_ARN}" \ --scope-arn "$SCOPE_ARN" \ --region $REGION \ --output json) MONITOR_ARN=$(echo $MONITOR_RESPONSE | jq -r '.monitorArn') echo "Monitor created: $MONITOR_ARN" echo "Network Flow Monitor setup complete!" echo "Monitor ARN: $MONITOR_ARN" echo "Scope ARN: $SCOPE_ARN" echo "Local Resource: AWS::EKS::Cluster (${CLUSTER_ARN})"

Utilizzo dell'infrastruttura come codice (IaC)

Terraform

Se utilizzi Terraform per gestire la tua infrastruttura AWS cloud, puoi includere le seguenti configurazioni di risorse per abilitare l'osservabilità della rete di contenitori per il tuo cluster.

Ambito NFM

data "aws_caller_identity" "current" {} resource "aws_networkflowmonitor_scope" "example" { target { region = "us-east-1" target_identifier { target_type = "ACCOUNT" target_id { account_id = data.aws_caller_identity.current.account_id } } } tags = { Name = "example" } }

Monitor NFM

resource "aws_networkflowmonitor_monitor" "example" { monitor_name = "eks-cluster-name-monitor" scope_arn = aws_networkflowmonitor_scope.example.scope_arn local_resource { type = "AWS::EKS::Cluster" identifier = aws_eks_cluster.example.arn } remote_resource { type = "AWS::Region" identifier = "us-east-1" # this must be the same region that the cluster is in } tags = { Name = "example" } }

Componente aggiuntivo EKS per NFM

resource "aws_eks_addon" "example" { cluster_name = aws_eks_cluster.example.name addon_name = "aws-network-flow-monitoring-agent" }

Come funziona?

Metriche delle prestazioni

Parametri del sistema

Se utilizzi strumenti di terze parti (3P) per monitorare il tuo ambiente EKS (come Prometheus e Grafana), puoi acquisire le metriche di sistema supportate direttamente dall'agente Network Flow Monitor. Queste metriche possono essere inviate allo stack di monitoraggio per ampliare la misurazione delle prestazioni di rete del sistema a livello di pod e nodo di lavoro. Le metriche disponibili sono elencate nella tabella, in Metriche di sistema supportate.

Illustrazione delle metriche del sistema di scraping

Per abilitare queste metriche, sovrascrivete le seguenti variabili di ambiente utilizzando le variabili di configurazione durante il processo di installazione (vedi: containers/ -advanced-configuration/): https://aws.amazon.com/blogs/ amazon-eks-add-ons

OPEN_METRICS: Enable or disable open metrics. Disabled if not supplied Type: String Values: [“on”, “off”] OPEN_METRICS_ADDRESS: Listening IP address for open metrics endpoint. Defaults to 127.0.0.1 if not supplied Type: String OPEN_METRICS_PORT: Listening port for open metrics endpoint. Defaults to 80 if not supplied Type: Integer Range: [0..65535]

Metriche del livello di flusso

Inoltre, Network Flow Monitor acquisisce i dati del flusso di rete insieme alle metriche del livello di flusso: ritrasmissioni, timeout di ritrasmissione e dati trasferiti. Questi dati vengono elaborati da Network Flow Monitor e visualizzati nella console EKS per far emergere il traffico nell'ambiente del cluster e il relativo rendimento in base a queste metriche del livello di flusso.

Il diagramma seguente illustra un flusso di lavoro in cui entrambi i tipi di metriche (sistema e livello di flusso) possono essere sfruttati per ottenere una maggiore intelligenza operativa.

Illustrazione del flusso di lavoro con diverse metriche prestazionali
  1. Il team della piattaforma può raccogliere e visualizzare le metriche di sistema nel proprio stack di monitoraggio. Una volta attivati gli avvisi, possono rilevare anomalie di rete o problemi che influiscono sui pod o sui nodi di lavoro utilizzando le metriche di sistema fornite dall'agente NFM.

  2. Come passaggio successivo, i team della piattaforma possono sfruttare le visualizzazioni native della console EKS per restringere ulteriormente l'ambito delle indagini e accelerare la risoluzione dei problemi in base alle rappresentazioni dei flussi e alle metriche associate.

Nota importante: l'acquisizione delle metriche di sistema dall'agente NFM e il processo con cui l'agente NFM invia le metriche a livello di flusso al backend NFM sono processi indipendenti.

Metriche di sistema supportate

Nota importante: le metriche di sistema vengono esportate in formato. OpenMetrics

Nome parametro Tipo Dimensioni Description

ingress_flow

Gauge

instance_id, iface, pod, namespace, nodo

Conteggio del flusso TCP in ingresso () TcpPassiveOpens

Flusso_uscita

Gauge

instance_id, iface, pod, namespace, node

Conteggio del flusso TCP in uscita () TcpActiveOpens

pacchetti_in ingresso

Gauge

instance_id, iface, pod, namespace, nodo

Numero di pacchetti in ingresso (delta)

pacchetti_in uscita

Gauge

instance_id, iface, pod, namespace, node

Numero di pacchetti in uscita (delta)

ingress_bytes

Gauge

instance_id, iface, pod, namespace, nodo

Conteggio dei byte in ingresso (delta)

egress_bytes

Gauge

instance_id, iface, pod, namespace, nodo

Conteggio dei byte in uscita (delta)

bw_in_allowance_exceeded

Gauge

instance_id, eni, nodo

Pacchetti queued/dropped dovuti al limite di larghezza di banda in entrata

bw_out_allowance_exceeded

Gauge

instance_id, eni, nodo

Pacchetti queued/dropped dovuti al limite di larghezza di banda in uscita

pps_allowance_exceeded

Gauge

instance_id, eni, nodo

Pacchetti queued/dropped dovuti al limite PPS bidirezionale

conntrack_allowance_exceeded

Gauge

instance_id, eni, nodo

Pacchetti persi a causa del limite di tracciamento della connessione

linklocal_allowance_exceeded

Gauge

instance_id, eni, nodo

I pacchetti sono caduti a causa del limite PPS del servizio proxy locale

Metriche del livello di flusso supportate
Nome parametro Tipo Description

Ritrasmissioni TCP

Contatore

Numero di volte in cui un mittente invia nuovamente un pacchetto perso o danneggiato durante la trasmissione.

Timeout di ritrasmissione TCP

Contatore

Numero di volte in cui un mittente ha avviato un periodo di attesa per determinare se un pacchetto è andato perso durante il transito.

Dati (byte) trasferiti

Contatore

Volume di dati trasferiti tra un'origine e una destinazione per un determinato flusso.

Mappa dei servizi e tabella dei flussi

Illustrazione di come NFM funziona con EKS
  1. Una volta installato, l'agente Network Flow Monitor viene eseguito DaemonSet su ogni nodo di lavoro e raccoglie i primi 500 flussi di rete (in base al volume di dati trasferiti) ogni 30 secondi.

  2. Questi flussi di rete sono suddivisi nelle seguenti categorie: Intra AZ, Inter AZ, EC2 → S3, → EC2 DynamoDB (DDB) e Unclassified. A ogni flusso sono associate 3 metriche: ritrasmissioni, timeout di ritrasmissione e dati trasferiti (in byte).

    • Intra AZ: flussi di rete tra pod nella stessa AZ

    • Inter AZ: la rete scorre tra pod diversi AZs

    • EC2 → S3: la rete scorre dai pod a S3

    • EC2 → DDB: flussi di rete dai pod al DDB

    • Non classificato: la rete scorre dai pod a Internet o in locale

  3. I flussi di rete dell'API Network Flow Monitor Top Contributors vengono utilizzati per potenziare le seguenti esperienze nella console EKS:

    • Mappa dei servizi: visualizzazione dei flussi di rete all'interno del cluster (Intra AZ e Inter AZ).

    • Tabella dei flussi: presentazione in tabella dei flussi di rete all'interno del cluster (Intra AZ e Inter AZ), dai pod ai AWS servizi (EC2 → S3 e EC2 → DDB) e dai pod alle destinazioni esterne (non classificate).

I flussi di rete estratti dall'API Top Contributors hanno un ambito temporale di 1 ora e possono includere fino a 500 flussi per categoria. Per quanto riguarda la mappa dei servizi, ciò significa che è possibile reperire e presentare fino a 1000 flussi dalle categorie di flusso Intra AZ e Inter AZ in un intervallo di tempo di 1 ora. Per quanto riguarda la tabella dei flussi, ciò significa che è possibile reperire e presentare fino a 3000 flussi di rete da tutte le 6 categorie di flussi di rete in un intervallo di tempo di 2 ore.

Esempio: mappa dei servizi

Visualizzazione della distribuzione

Illustrazione della mappa dei servizi con app di e-commerce nella visualizzazione di distribuzione

Vista Pod

Illustrazione della mappa dei servizi con app di e-commerce in visualizzazione pod

Vista di distribuzione

Illustrazione della mappa dei servizi con l'app della galleria fotografica nella visualizzazione di distribuzione

Vista Pod

Illustrazione della mappa dei servizi con app per la galleria fotografica in modalità pod

Esempio: tabella di flusso

AWS visualizzazione del servizio

Illustrazione della visualizzazione della tabella di flusso

Vista a grappolo

Illustrazione della tabella di flusso nella vista cluster

Considerazioni e limitazioni

  • L'osservabilità della rete di contenitori in EKS è disponibile solo nelle regioni in cui è supportato Network Flow Monitor.

  • Le metriche di sistema supportate sono in OpenMetrics formato e possono essere estratte direttamente dall'agente Network Flow Monitor (NFM).

  • Per abilitare l'osservabilità della rete dei container in EKS utilizzando Infrastructure as Code (IaC) come Terraform, è necessario definire e creare queste dipendenze nelle configurazioni: ambito NFM, monitor NFM e agente NFM.

  • Network Flow Monitor supporta fino a circa 5 milioni di flussi al minuto. Si tratta di circa 5.000 EC2 istanze (nodi di lavoro EKS) con l'agente Network Flow Monitor installato. L'installazione di agenti su più di 5000 istanze può influire sulle prestazioni di monitoraggio fino a quando non sarà disponibile capacità aggiuntiva.

  • È necessario eseguire una versione minima di 1.1.0 per il componente aggiuntivo EKS dell'agente NFM.

  • È necessario utilizzare la versione 6.21.0 o successiva di Terraform AWS Provider per il supporto delle risorse di Network Flow Monitor.

  • Per arricchire i flussi di rete con i metadati dei pod, i pod devono funzionare nel proprio spazio dei nomi di rete isolato, non nello spazio dei nomi della rete host.