Risoluzione dei problemi Kubernetes politiche di rete per Amazon EKS - Amazon EKS

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

Risoluzione dei problemi Kubernetes politiche di rete per Amazon EKS

È possibile risolvere i problemi e analizzare le connessioni di rete che utilizzano i criteri di rete leggendo i registri dei criteri di rete ed eseguendo gli strumenti da e. BPF SDK

Log delle policy di rete

I log di flusso registrano se le connessioni sono consentite o negate da una policy di rete. I log delle policy di rete su ogni nodo includono i log di flusso per ogni pod che dispone di una policy di rete. I log delle policy di rete sono archiviati in /var/log/aws-routed-eni/network-policy-agent.log. Di seguito è riportato un esempio del file network-policy-agent.log:

{"level":"info","timestamp":"2023-05-30T16:05:32.573Z","logger":"ebpf-client","msg":"Flow Info: ","Src IP":"192.168.87.155","Src Port":38971,"Dest IP":"64.6.160","Dest Port":53,"Proto":"UDP","Verdict":"ACCEPT"}

I registri delle politiche di rete sono disabilitati per impostazione predefinita. Per abilitare i registri delle politiche di rete, procedi nel seguente modo:

Nota

I registri delle politiche di rete richiedono 1 v aggiuntivo CPU per il aws-network-policy-agent contenitore nel manifesto del VPC CNI aws-node daemonset.

Componente EKS aggiuntivo Amazon

AWS Management Console
  1. Apri la EKSconsole Amazon.

  2. Nel riquadro di navigazione a sinistra, seleziona Clusters, quindi seleziona il nome del cluster per cui desideri configurare il VPC CNI componente aggiuntivo Amazon.

  3. Seleziona la scheda Componenti aggiuntivi.

  4. Seleziona la casella nella parte superiore destra della casella del componente aggiuntivo e scegli Edit (Modifica).

  5. Nella sezione Configura name of addon pagina:

    1. Seleziona una v1.14.0-eksbuild.3 o versione successiva nell'elenco a discesa Versione.

    2. Scegli Impostazioni di configurazione facoltative.

    3. Inserisci la JSON chiave di primo livello "nodeAgent": e il valore è un oggetto con una chiave "enablePolicyEventLogs": e un valore compresi "true" nei valori di configurazione. Il testo risultante deve essere un JSON oggetto valido. L'esempio seguente mostra i criteri di rete e i registri dei criteri di rete sono abilitati e i registri dei criteri di rete vengono inviati a CloudWatch Logs:

      { "enableNetworkPolicy": "true", "nodeAgent": { "enablePolicyEventLogs": "true" } }

Lo screenshot seguente mostra un esempio di tale scenario.

<shared id="consolelong"/>mostrando il VPC CNI componente aggiuntivo con i criteri di rete e CloudWatch i registri nella configurazione opzionale.
AWS CLI
  1. Esegui il comando seguente AWS CLI. Sostituisci my-cluster con il nome del cluster e sostituisci il IAM ruolo ARN con il ruolo che stai utilizzando.

    aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 \ --service-account-role-arn arn:aws: iam::123456789012:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"nodeAgent": {"enablePolicyEventLogs": "true"}}'

Componenti aggiuntivi autogestiti

Helm

Se hai installato il Amazon VPC CNI plugin for Kubernetes tramitehelm, è possibile aggiornare la configurazione per scrivere i registri delle politiche di rete.

  1. Esegui il comando seguente per abilitare la policy di rete.

    helm upgrade --set nodeAgent.enablePolicyEventLogs=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl

Se è stato installato il Amazon VPC CNI plugin for Kubernetes tramitekubectl, è possibile aggiornare la configurazione per scrivere i registri delle politiche di rete.

  1. Apri la DaemonSet del aws-node nell'editor.

    kubectl edit daemonset -n kube-system aws-node
  2. Sostituisci il true valore false with nell'argomento del comando --enable-policy-event-logs=false args: nel aws-network-policy-agent contenitore del manifesto del VPC CNI aws-node daemonset.

    - args: - --enable-policy-event-logs=true

Invia i log delle policy di rete ad Amazon CloudWatch Logs

Puoi monitorare i log delle politiche di rete utilizzando servizi come Amazon CloudWatch Logs. Puoi utilizzare i seguenti metodi per inviare i log delle politiche di rete a Logs. CloudWatch

Per EKS i cluster, i registri delle politiche si troveranno in /aws/eks/cluster-name/cluster/ e per i cluster K8S autogestiti, i log verranno posizionati in /. /aws/k8s-cluster/cluster

Invia i registri delle politiche di rete con Amazon VPC CNI plugin for Kubernetes

Se si abilitano le policy di rete, ai pod viene aggiunto un secondo container aws-node per un agente del nodo. Questo agente del nodo può inviare i registri delle politiche di rete a CloudWatch Logs.

Nota

Solo i log delle policy di rete vengono inviati dall'agente del nodo. Gli altri log creati da VPC CNI non sono inclusi.

Prerequisiti

  • Aggiungi le seguenti autorizzazioni come strofa o politica separata al IAM ruolo che stai utilizzando per. VPC CNI

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }

Componente EKS aggiuntivo Amazon

AWS Management Console
  1. Apri la EKSconsole Amazon.

  2. Nel riquadro di navigazione a sinistra, seleziona Clusters, quindi seleziona il nome del cluster per cui desideri configurare il VPC CNI componente aggiuntivo Amazon.

  3. Seleziona la scheda Componenti aggiuntivi.

  4. Seleziona la casella nella parte superiore destra della casella del componente aggiuntivo e scegli Edit (Modifica).

  5. Nella sezione Configura name of addon pagina:

    1. Seleziona una v1.14.0-eksbuild.3 o versione successiva nell'elenco a discesa Versione.

    2. Scegli Impostazioni di configurazione facoltative.

    3. Inserisci la JSON chiave di primo livello "nodeAgent": e il valore è un oggetto con una chiave "enableCloudWatchLogs": e un valore compresi "true" nei valori di configurazione. Il testo risultante deve essere un JSON oggetto valido. L'esempio seguente mostra i criteri di rete e i registri dei criteri di rete sono abilitati e i registri vengono inviati a CloudWatch Logs:

      { "enableNetworkPolicy": "true", "nodeAgent": { "enablePolicyEventLogs": "true", "enableCloudWatchLogs": "true", } }

Lo screenshot seguente mostra un esempio di tale scenario.

+ image: :images/ console-cni-config-network - policy-logs-cwl .png [AWS Management Console mostra il VPC CNI componente aggiuntivo con i criteri di rete e i log nella configurazione opzionale. CloudWatch , larghezza scalata = 80%]

AWS CLI
  1. Eseguite il comando seguente. AWS CLI Sostituisci my-cluster con il nome del cluster e sostituisci il IAM ruolo ARN con il ruolo che stai utilizzando.

    aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 \ --service-account-role-arn arn:aws: iam::123456789012:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"nodeAgent": {"enablePolicyEventLogs": "true", "enableCloudWatchLogs": "true"}}'

Componenti aggiuntivi autogestiti

Helm

Se hai installato il Amazon VPC CNI plugin for Kubernetes tramitehelm, è possibile aggiornare la configurazione per inviare i log delle politiche di rete a CloudWatch Logs.

  1. Esegui il comando seguente per abilitare i registri delle politiche di rete e inviarli a Logs. CloudWatch

    helm upgrade --set nodeAgent.enablePolicyEventLogs=true --set nodeAgent.enableCloudWatchLogs=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl
  1. Apri la DaemonSet del aws-node nell'editor.

    kubectl edit daemonset -n kube-system aws-node
  2. Sostituisci il true valore false with in due argomenti di comando --enable-policy-event-logs=false e --enable-cloudwatch-logs=false in args: in the aws-network-policy-agent container del VPC CNI aws-node daemonset manifest.

    - args: - --enable-policy-event-logs=true - --enable-cloudwatch-logs=true

Invia i registri delle politiche di rete con un Fluent Bit demone

Se stai usando Fluent Bit in un demonset per inviare i log dai nodi, puoi aggiungere una configurazione per includere i log delle policy di rete provenienti dalle policy di rete. È possibile utilizzare la configurazione di esempio seguente:

[INPUT] Name tail Tag eksnp.* Path /var/log/aws-routed-eni/network-policy-agent*.log Parser json DB /var/log/aws-routed-eni/flb_npagent.db Mem_Buf_Limit 5MB Skip_Long_Lines On Refresh_Interval 10

Incluso eBPF SDK

Il Amazon VPC CNI plugin for Kubernetes installa eBPF SDKraccolta di strumenti sui nodi. Puoi utilizzare il plugin eBPF SDKstrumenti per identificare i problemi relativi alle politiche di rete. Ad esempio, il comando seguente elenca i programmi in esecuzione sul nodo.

sudo /opt/cni/bin/aws-eks-na-cli ebpf progs

Per eseguire questo comando, è possibile utilizzare qualsiasi metodo di connessione al nodo.