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
-
-
Öffnen Sie die EKSAmazon-Konsole
. -
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.
-
Wählen Sie die Registerkarte Add-ons.
-
Wählen Sie das Kästchen oben rechts in der Add-On-Box aus und wählen Sie dann Edit (Bearbeiten).
-
Auf der Seite Konfigurieren
name of addon
Seite:-
Wählen Sie
v1.14.0-eksbuild.3
oder eine neuere Version in der Dropdown-Liste aus. -
Erweitern Sie Optionale Konfigurationseinstellungen.
-
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.
- AWS CLI
-
-
Führen Sie den folgenden AWS CLI Befehl aus.
my-cluster
Ersetzen 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 aktualisieren
helm
, um die Netzwerkrichtlinien-Protokolle zu schreiben.-
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 aktualisieren
kubectl
, um die Netzwerkrichtlinien-Protokolle zu schreiben.-
Öffnen Sie das
DaemonSet
aws-node
in Ihrem Editor.kubectl edit daemonset -n kube-system aws-node
-
Ersetzen Sie das
false
Wort durchtrue
im Befehlsargument--enable-policy-event-logs=false
args:
imaws-network-policy-agent
Container im VPC CNIaws-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/
und bei selbstverwalteten K8S-Clustern werden die Protokolle unter/gespeichert. cluster-name
/cluster//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
-
-
Öffnen Sie die EKSAmazon-Konsole
. -
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.
-
Wählen Sie die Registerkarte Add-ons.
-
Wählen Sie das Kästchen oben rechts in der Add-On-Box aus und wählen Sie dann Edit (Bearbeiten).
-
Auf der Seite Konfigurieren
name of addon
Seite:-
Wählen Sie
v1.14.0-eksbuild.3
oder eine neuere Version in der Dropdown-Liste aus. -
Erweitern Sie Optionale Konfigurationseinstellungen.
-
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
-
-
Führen Sie den folgenden Befehl aus. AWS CLI
my-cluster
Ersetzen 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 aktualisieren
helm
, um Netzwerkrichtlinien-Protokolle an Logs zu CloudWatch senden.-
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
-
-
Öffnen Sie das
DaemonSet
aws-node
in Ihrem Editor.kubectl edit daemonset -n kube-system aws-node
-
Ersetzen Sie das
false
durchtrue
in zwei Befehlsargumenten--enable-policy-event-logs=false
und--enable-cloudwatch-logs=false
args:
imaws-network-policy-agent
Container im VPC CNIaws-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.