Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Solucionar problemas de políticas de rede do Kubernetes para o Amazon EKS
Você pode solucionar problemas e investigar conexões de rede que usam políticas de rede lendo os logs de política de rede e executando ferramentas do SDK do eBPF.
Logs da política de rede
Sejam as conexões permitidas ou negadas pelas políticas de uma rede, isso é registrado nos logs de fluxo. Os logs da política de rede de cada nó incluem os logs de fluxo para todo pod que tem uma política de rede. Os logs da política de rede são armazenados em /var/log/aws-routed-eni/network-policy-agent.log
. O seguinte exemplo é de um arquivo de 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"}
Os logs de política de rede estão desabilitados por padrão. Para habilitar os logs de política de rede, siga estas etapas:
nota
Os logs de política de rede requerem uma vCPU adicional para o contêiner aws-network-policy-agent
no manifesto aws-node
do daemonset do plug-in CNI da VPC.
Complemento do Amazon EKS
- AWS Management Console
-
-
Abra o console do Amazon EKS
. -
No painel de navegação à esquerda, selecione Clusters e o nome do cluster para o qual você deseja configurar o complemento Amazon VPC CNI.
-
Escolha a guia Add-ons (Complementos).
-
Selecione a caixa no canto superior direito da caixa do complemento e depois escolha Edit (Editar).
-
Na página Configurar
nome do complemento
:-
Selecione a versão
v1.14.0-eksbuild.3
ou posterior na lista suspensa Versão. -
Expanda Definições de configuração opcionais.
-
Insira a chave JSON de mais alto nível
"nodeAgent":
e o valor é um objeto com uma chave"enablePolicyEventLogs":
e valor de"true"
em Valores da configuração. O texto resultante deve ser um objeto JSON válido. O exemplo apresentado a seguir mostra que a política de rede e os logs de política de rede estão habilitados e que os logs de política de rede são enviados para o CloudWatch Logs:{ "enableNetworkPolicy": "true", "nodeAgent": { "enablePolicyEventLogs": "true" } }
-
-
A captura de tela a seguir mostra um exemplo desse cenário.

- AWS CLI
-
-
Execute o seguinte comando da AWS CLI. Substitua
my-cluster
pelo nome do cluster e o ARN do perfil do IAM pelo perfil que você está usando.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"}}'
-
Complemento autogerenciado
- Helm
-
Caso tenha instalado o plug-in CNI da Amazon VPC para Kubernetes por meio do
helm
, você pode atualizar a configuração para gravar os logs da política de rede.-
Execute o comando a seguir para habilitar a política de rede.
helm upgrade --set nodeAgent.enablePolicyEventLogs=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
-
- kubectl
-
Caso tenha instalado o plug-in CNI da Amazon VPC para Kubernetes por meio do
kubectl
, você pode atualizar a configuração para gravar os logs da política de rede.-
Abra o
aws-node
DaemonSet
no editor.kubectl edit daemonset -n kube-system aws-node
-
Substitua
false
portrue
no argumento do comando--enable-policy-event-logs=false
emargs:
no contêiner doaws-network-policy-agent
no manifesto do daemonset doaws-node
do VPC CNI.- args: - --enable-policy-event-logs=true
-
Enviar logs de política de rede para o Amazon CloudWatch Logs
Você pode monitorar os logs da política de rede usando serviços como o Amazon CloudWatch Logs. Você pode usar os métodos a seguir para enviar os logs da política de rede para o CloudWatch Logs.
Nos clusters do EKS, os logs da política podem ser encontrados em /aws/eks/
, enquanto, para clusters autogerenciados do K8S, os logs estarão em cluster-name
/cluster//aws/k8s-cluster/cluster/
.
Enviar logs da política de rede com o plug-in CNI da Amazon VPC para Kubernetes
Se você habilitar uma política de rede, um segundo contêiner será adicionado aos pods do aws-node
para um agente do nó. Esse agente do nó pode enviar os logs da política de rede para o CloudWatch Logs.
nota
Somente os logs da política de rede são enviados pelo agente do nó. Outros logs feitos pelo VPC CNI não são incluídos.
Pré-requisitos
-
Adicione as permissões a seguir como uma seção ou uma política separada ao perfil do IAM que você está usando para o VPC CNI.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
Complemento do Amazon EKS
- AWS Management Console
-
-
Abra o console do Amazon EKS
. -
No painel de navegação à esquerda, selecione Clusters e o nome do cluster para o qual você deseja configurar o complemento Amazon VPC CNI.
-
Escolha a guia Add-ons (Complementos).
-
Selecione a caixa no canto superior direito da caixa do complemento e depois escolha Edit (Editar).
-
Na página Configurar
nome do complemento
:-
Selecione a versão
v1.14.0-eksbuild.3
ou posterior na lista suspensa Versão. -
Expanda Definições de configuração opcionais.
-
Insira a chave JSON de mais alto nível
"nodeAgent":
e o valor é um objeto com uma chave"enableCloudWatchLogs":
e valor de"true"
em Valores da configuração. O texto resultante deve ser um objeto JSON válido. O exemplo apresentado a seguir mostra que a política de rede e os logs de política de rede estão habilitados e que os logs são enviados para o CloudWatch Logs:{ "enableNetworkPolicy": "true", "nodeAgent": { "enablePolicyEventLogs": "true", "enableCloudWatchLogs": "true", } }
-
A captura de tela a seguir mostra um exemplo desse cenário.
-

- AWS CLI
-
-
Execute o seguinte comando da AWS CLI. Substitua
my-cluster
pelo nome do cluster e o ARN do perfil do IAM pelo perfil que você está usando.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"}}'
-
Complemento autogerenciado
- Helm
-
Caso tenha instalado o plug-in CNI da Amazon VPC para Kubernetes por meio do
helm
, você pode atualizar a configuração para enviar os logs da política de rede para o CloudWatch Logs.-
Execute o comando apresentado a seguir para habilitar logs de política de rede e enviá-los ao CloudWatch Logs.
helm upgrade --set nodeAgent.enablePolicyEventLogs=true --set nodeAgent.enableCloudWatchLogs=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
-
- kubectl
-
-
Abra o
aws-node
DaemonSet
no editor.kubectl edit daemonset -n kube-system aws-node
-
Substitua
false
portrue
nos dois argumentos do comando--enable-policy-event-logs=false
e--enable-cloudwatch-logs=false
emargs:
no contêineraws-network-policy-agent
no manifestoaws-node
do daemonset do plug-in CNI da VPC.- args: - --enable-policy-event-logs=true - --enable-cloudwatch-logs=true
-
Enviar logs da política de rede com um daemonset do Fluent Bit
Caso esteja usando o Fluent Bit em um daemonset para enviar os logs dos nós, você poderá adicionar configurações para incluir os logs da política de rede das políticas de rede. Você pode usar o seguinte exemplo de configuração:
[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
SDK do eBPF incluído
O plug-in CNI da Amazon VPC para Kubernetes instala uma coleção de ferramentas do SDK do eBPF nos nós. Você pode usar as ferramentas do SDK do eBPF para identificar problemas com as políticas de rede. Por exemplo, o comando a seguir lista os programas que estão sendo executados no nó.
sudo /opt/cni/bin/aws-eks-na-cli ebpf progs
Para executar esse comando, você pode usar qualquer método de conexão com o nó.