Fehlerbehebung Kubernetes Netzwerkrichtlinien Für Amazon EKS - Amazon EKS

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Fehlerbehebung Kubernetes Netzwerkrichtlinien Für Amazon EKS

Sie können Netzwerkverbindungen, die Netzwerkrichtlinien verwenden, beheben und untersuchen, indem Sie die Netzwerkrichtlinien-Protokolle lesen und Tools aus dem E ausführen BPFSDK.

Netzwerkrichtlinien-Protokolle

Ob Verbindungen durch eine Netzwerkrichtlinie zugelassen oder verweigert werden, wird in Flussprotokollen protokolliert. Die Netzwerkrichtlinien-Protokolle auf jedem Knoten enthalten die Flussprotokolle für jeden Pod, der über eine Netzwerkrichtlinie verfügt. Netzwerkrichtlinien-Protokolle werden unter /var/log/aws-routed-eni/network-policy-agent.log gespeichert. Das folgende Beispiel stammt aus einer network-policy-agent.log-Datei:

{"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"}

Netzwerkrichtlinien-Protokolle sind standardmäßig deaktiviert. Gehen Sie folgendermaßen vor, um die Netzwerkrichtlinienprotokolle zu aktivieren:

Anmerkung

Netzwerkrichtlinienprotokolle erfordern eine zusätzliche Zahl von 1 v CPU für den aws-network-policy-agent Container im VPC CNI aws-node Daemonset-Manifest.

EKSAmazon-Zusatzprodukt

AWS Management Console
  1. Öffnen Sie die EKSAmazon-Konsole.

  2. Wählen Sie im linken Navigationsbereich Clusters und dann den Namen des Clusters aus, für den Sie das VPC CNI Amazon-Add-on konfigurieren möchten.

  3. Wählen Sie die Registerkarte Add-ons.

  4. Wählen Sie das Kästchen oben rechts in der Add-On-Box aus und wählen Sie dann Edit (Bearbeiten).

  5. Auf der Seite Konfigurieren name of addon Seite:

    1. Wählen Sie v1.14.0-eksbuild.3 oder eine neuere Version in der Dropdown-Liste aus.

    2. Erweitern Sie Optionale Konfigurationseinstellungen.

    3. Geben Sie den JSON Schlüssel der obersten Ebene ein "nodeAgent": und der Wert ist ein Objekt mit einem Schlüssel "enablePolicyEventLogs": und Wert von "true" in den Konfigurationswerten. Der resultierende Text muss ein gültiges JSON Objekt sein. Das folgende Beispiel zeigt, dass Netzwerkrichtlinien und Netzwerkrichtlinien-Protokolle aktiviert sind und die Netzwerkrichtlinien-Protokolle an CloudWatch Logs gesendet werden:

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

Der folgende Screenshot zeigt ein Beispiel für dieses Szenario.

<shared id="consolelong"/>zeigt das VPC CNI Add-on mit Netzwerkrichtlinie und CloudWatch Protokollen in der optionalen Konfiguration.
AWS CLI
  1. Führen Sie den folgenden AWS CLI Befehl aus. my-clusterErsetzen Sie es durch den Namen Ihres Clusters und ersetzen Sie die IAM Rolle ARN durch die Rolle, die Sie verwenden.

    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"}}'

Selbstverwaltetes Add-On

Helm

Wenn Sie das installiert haben Amazon VPC CNI plugin for Kubernetes über können Sie die Konfiguration aktualisierenhelm, um die Netzwerkrichtlinien-Protokolle zu schreiben.

  1. Führen Sie den folgenden Befehl aus, um die Netzwerkrichtlinie zu aktivieren.

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

Wenn Sie das installiert haben Amazon VPC CNI plugin for Kubernetes über können Sie die Konfiguration aktualisierenkubectl, um die Netzwerkrichtlinien-Protokolle zu schreiben.

  1. Öffnen Sie das DaemonSet aws-node in Ihrem Editor.

    kubectl edit daemonset -n kube-system aws-node
  2. Ersetzen Sie das false Wort durch true im Befehlsargument --enable-policy-event-logs=false args: im aws-network-policy-agent Container im VPC CNI aws-node Daemonset-Manifest.

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

Netzwerkrichtlinien-Protokolle an Amazon CloudWatch Logs senden

Sie können die Netzwerkrichtlinienprotokolle mithilfe von Diensten wie Amazon CloudWatch Logs überwachen. Sie können die folgenden Methoden verwenden, um die Netzwerkrichtlinienprotokolle an Logs zu CloudWatch senden.

Bei EKS Clustern befinden sich die Richtlinienprotokolle unter /aws/eks/cluster-name/cluster/ und bei selbstverwalteten K8S-Clustern werden die Protokolle unter/gespeichert. /aws/k8s-cluster/cluster

Senden Sie Netzwerkrichtlinien-Protokolle mit Amazon VPC CNI plugin for Kubernetes

Wenn Sie die Netzwerkrichtlinie aktivieren, wird den aws-node-Pods ein zweiter Container für einen Konten-Agent hinzugefügt. Dieser Node-Agent kann die CloudWatch Netzwerkrichtlinien-Protokolle an Logs senden.

Anmerkung

Nur die Netzwerkrichtlinien-Protokolle werden vom Knoten-Agent gesendet. Andere von der erstellte Protokolle VPC CNI sind nicht enthalten.

Voraussetzungen

  • Fügen Sie der IAM Rolle, die Sie für die verwenden, die folgenden Berechtigungen als Strophe oder separate Richtlinie hinzu. VPC CNI

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

EKSAmazon-Zusatzprodukt

AWS Management Console
  1. Öffnen Sie die EKSAmazon-Konsole.

  2. Wählen Sie im linken Navigationsbereich Clusters und dann den Namen des Clusters aus, für den Sie das VPC CNI Amazon-Add-on konfigurieren möchten.

  3. Wählen Sie die Registerkarte Add-ons.

  4. Wählen Sie das Kästchen oben rechts in der Add-On-Box aus und wählen Sie dann Edit (Bearbeiten).

  5. Auf der Seite Konfigurieren name of addon Seite:

    1. Wählen Sie v1.14.0-eksbuild.3 oder eine neuere Version in der Dropdown-Liste aus.

    2. Erweitern Sie Optionale Konfigurationseinstellungen.

    3. Geben Sie den JSON Schlüssel der obersten Ebene ein "nodeAgent": und der Wert ist ein Objekt mit einem Schlüssel "enableCloudWatchLogs": und Wert von "true" in den Konfigurationswerten. Der resultierende Text muss ein gültiges JSON Objekt sein. Das folgende Beispiel zeigt, dass die Netzwerkrichtlinie und die Netzwerkrichtlinien-Protokolle aktiviert sind und die Protokolle an CloudWatch Logs gesendet werden:

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

Der folgende Screenshot zeigt ein Beispiel für dieses Szenario.

+ image: :images/ console-cni-config-network - policy-logs-cwl .png [AWS Management Console zeigt das VPC CNI Add-on mit Netzwerkrichtlinie und CloudWatch Protokollen in der optionalen Konfiguration. , skalierte Breite = 80%]

AWS CLI
  1. Führen Sie den folgenden Befehl aus. AWS CLI my-clusterErsetzen Sie es durch den Namen Ihres Clusters und ersetzen Sie die IAM Rolle ARN durch die Rolle, die Sie verwenden.

    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"}}'

Selbstverwaltetes Add-On

Helm

Wenn Sie das installiert haben Amazon VPC CNI plugin for Kubernetes über können Sie die Konfiguration aktualisierenhelm, um Netzwerkrichtlinien-Protokolle an Logs zu CloudWatch senden.

  1. Führen Sie den folgenden Befehl aus, um Netzwerkrichtlinien-Protokolle zu aktivieren und sie an CloudWatch Logs zu senden.

    helm upgrade --set nodeAgent.enablePolicyEventLogs=true --set nodeAgent.enableCloudWatchLogs=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl
  1. Öffnen Sie das DaemonSet aws-node in Ihrem Editor.

    kubectl edit daemonset -n kube-system aws-node
  2. Ersetzen Sie das false durch true in zwei Befehlsargumenten --enable-policy-event-logs=false und --enable-cloudwatch-logs=false args: im aws-network-policy-agent Container im VPC CNI aws-node Daemonset-Manifest.

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

Senden Sie Netzwerkrichtlinien-Protokolle mit einem Fluent Bit Daemonset

Wenn du verwendest Fluent Bit In einem Daemonset zum Senden von Protokollen von Ihren Knoten können Sie eine Konfiguration hinzufügen, um die Netzwerkrichtlinien-Protokolle aus Netzwerkrichtlinien einzubeziehen. Sie können die folgende Beispielkonfiguration verwenden:

[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

Inbegriffen eBPF SDK

Das Tool Amazon VPC CNI plugin for Kubernetes installiert eBPF SDKSammlung von Tools auf den Knoten. Sie können das eBPF SDKTools zur Identifizierung von Problemen mit Netzwerkrichtlinien. Der folgende Befehl listet zum Beispiel die Programme auf, die auf dem Knoten ausgeführt werden.

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

Zum Ausführen dieses Befehls können Sie eine beliebige Methode verwenden, um eine Verbindung mit dem Knoten herzustellen.