Registro em log para Amazon EKS - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Registro em log para Amazon EKS

O registro em log do Kubernetes pode ser dividido em log do plano de controle, log de nós e registro de aplicativos. OPlano de controle do Kubernetesé um conjunto de componentes que gerenciam clusters do Kubernetes e produzem logs usados para fins de auditoria e diagnóstico. Com o Amazon EKS, você podeativar logs para diferentes componentes do plano de controlee envie-os para o CloudWatch.

O Kubernetes também executa componentes do sistema, comokubeletekube-proxyem cada nó do Kubernetes que executa seus pods. Esses componentes gravam logs em cada nó e você pode configurar CloudWatch e Container Insights para capturar esses logs para cada nó do Amazon EKS.

Os contêineres são agrupados comovagensdentro de um cluster do Kubernetes e estão programados para serem executados nos nós do Kubernetes. A maioria dos aplicativos em contêineres grava na saída padrão e no erro padrão, e o mecanismo de contêiner redireciona a saída para um driver de registro. No Kubernetes, os logs do contêiner são encontrados na/var/log/podsdiretório em um nó. Você pode configurar o CloudWatch e Container Insights para capturar esses logs para cada um dos pods do Amazon EKS.

Registro em log do plano de controle do Amazon EKS

Um cluster do Amazon EKS consiste em um plano de controle de locatário único de alta disponibilidade para o cluster do Kubernetes e os nós do Amazon EKS que executam seus contêineres. Os nós do plano de controle são executados em uma conta gerenciada porAWS. Os nós de plano de controle de cluster do Amazon EKS são integrados com CloudWatch e você pode ativar o registro em log para componentes específicos do plano de controle.

Os registros são fornecidos para cada instância do componente do plano de controle do Kubernetes.AWSgerencia a integridade de seus nós de plano de controle e fornece umSLA (contrato de nível de serviço) para o endpoint Kubernetes.

Registro em log em nós e aplicativos do Amazon EKS

Recomendamos usar oCloudWatch Container Insightspara capturar registros e métricas para o Amazon EKS. O Container Insights implementa métricas em nível de cluster, nó e pod com o CloudWatch agente e Fluent Bit ou Fluentd para captura de log no CloudWatch. O Container Insights também fornece painéis automáticos com visualizações em camadas do seu capturado CloudWatch Métricas do . O Container Insights é implantado como CloudWatch DaemonSet e Fluent Bit DaemonSet que é executado em todos os nós do Amazon EKS. Os nós do Fargate não são suportados pelo Container Insights porque os nós são gerenciados porAWSe não oferece suporte a DaemonSets. O registro do Fargate para Amazon EKS é abordado separadamente neste guia.

A tabela a seguir mostra a CloudWatch grupos de log e logs capturados peloConfiguração padrão de captura de log Fluentd ou Fluent Bitpara o Amazon EKS.

/aws/containerinsights/Cluster_Name/application Todos os arquivos de log em/var/log/containers. Este diretório fornece links simbólicos para todos os logs de contêiner do Kubernetes na/var/log/podsEstrutura de diretório do. Isso captura os registros do contêiner do aplicativo gravando emstdoutoustderr. Ele também inclui registros para contêineres do sistema Kubernetes, comoaws-vpc-cni-init,kube-proxy, ecoreDNS.
/aws/containerinsights/Cluster_Name/host Logs de/var/log/dmesg,/var/log/secure, e/var/log/messages.
/aws/containerinsights/Cluster_Name/dataplane Os logs no /var/log/journal para kubelet.service, kubeproxy.service e docker.service.

Se você não quiser usar o Container Insights com Fluent Bit ou Fluentd para registro em log, você pode capturar logs de nós e contêineres com o CloudWatch Agente instalado nos nós do Amazon EKS. Os nós do Amazon EKS são instâncias do EC2, o que significa que você deve incluí-las em sua abordagem de log padrão no nível do sistema para o Amazon EC2. Se você instalar o CloudWatch agente usando o Distribuidor e o State Manager, então os nós do Amazon EKS também estão incluídos no CloudWatch instalação, configuração e atualização do agente.

A tabela a seguir mostra logs específicos do Kubernetes e que você deve capturar se não estiver usando o Container Insights com Fluent Bit ou Fluentd para registro em log.

/var/log/containers Este diretório fornece links simbólicos para todos os logs de contêiner do Kubernetes sob a/var/log/podsEstrutura de diretório do. Isso captura efetivamente os registros do contêiner do aplicativo gravando emstdoutoustderr. Isso inclui registros para contêineres do sistema Kubernetes, comoaws-vpc-cni-init,kube-proxy, ecoreDNS. Importante: Isso não é necessário se você estiver usando o Container Insights.
var/log/aws-routed-eni/ipamd.log

/var/log/aws-routed-eni/plugin.log
Os logs do daemon L-IPAM podem ser encontrados aqui

Você deve certificar-se de que os nós do Amazon EKS instalem e configurem o CloudWatch agente para enviar registros e métricas apropriadas no nível do sistema. No entanto, o AMI otimizado do Amazon EKS não inclui o agente do Systems Manager. Usar oModelos de execução, você pode automatizar a instalação do agente do Systems Manager e um padrão CloudWatch configuração que captura logs específicos importantes do Amazon EKS com um script de inicialização implementado por meio da seção de dados do usuário. Os nós do Amazon EKS são implantados usando um grupo Auto Scaling como umGrupo de nós gerenciadosou comoNós autogerenciados.

Com grupos de nós gerenciados, você fornece umModelo de execuçãoque inclui a seção de dados do usuário para automatizar a instalação do agente do Systems Manager e CloudWatch Configuração do . Você pode personalizar e usar oamazon_eks_managed_node_group_launch_config.yaml AWS CloudFormationmodelo para criar um modelo de execução que instala o agente do Systems Manager, CloudWatch agente, e também adiciona uma configuração de log específica do Amazon EKS ao CloudWatch Diretório de configuração. Este modelo pode ser usado para atualizar seu modelo de inicialização de grupos de nós gerenciados do Amazon EKS com um infrastructure-as-code (IaC) abordagem. Cada atualização para oAWS CloudFormationO modelo fornece uma nova versão do modelo de execução. Depois, você pode atualizar o grupo de nós para usar a nova versão do modelo e ter oProcesso de ciclo de vida gerenciadoatualize seus nós sem tempo de inatividade. Certifique-se de que a função do IAM e o perfil da instância aplicados ao grupo de nós gerenciados inclua oCloudWatchAgentServerPolicyeAmazonSSMManagedInstanceCore AWSpolíticas gerenciadas.

Com nós autogerenciados, você provisiona e gerencia diretamente o ciclo de vida e a estratégia de atualização para seus nós do Amazon EKS. Nós autogerenciados permitem executar nós do Windows em seu cluster do Amazon EKS eBottlerocket, junto comOutras opções. Você pode usarAWS CloudFormationpara implantar nós autogerenciados em seus clusters do Amazon EKS, o que significa que você pode usar uma abordagem de alteração gerenciada e iAC para seus clusters do Amazon EKS.AWSO fornece oamazon-eks-nodegroup.yaml AWS CloudFormationModelo que você pode usar no estado em que se encontram ou personalizar. O modelo provisiona todos os recursos necessários para nós do Amazon EKS em um cluster (por exemplo, uma função do IAM separada, grupo de segurança, grupo do Amazon EC2 Auto Scaling e um modelo de execução). Oamazon-eks-nodegroup.yaml AWS CloudFormationtemplate é uma versão atualizada que instala o agente do Systems Manager necessário, CloudWatch agente, e também adiciona uma configuração de log específica do Amazon EKS ao CloudWatch Diretório de configuração.

Logging para Amazon EKS no Fargate

Com o Amazon EKS no Fargate, você pode implantar pods sem alocar ou gerenciar seus nós do Kubernetes. Isso elimina a necessidade de capturar logs no nível do sistema para os nós do Kubernetes. Para capturar os logs dos pods do Fargate, você pode usar o Fluent Bit para encaminhar os logs diretamente para o CloudWatch. Isso permite que você encaminhe registros automaticamente para CloudWatch sem configuração adicional ou um contêiner sidecar para seus pods do Amazon EKS no Fargate. Para obter mais informações sobre isso, consulteRegistro em log do Fargatena documentação do Amazon EKS eBit fluente para Amazon EKSnoAWSBlog. Esta solução captura oSTDOUTeSTDERRStreams de entrada/saída (E/S) do contêiner e os envia para CloudWatch por meio do Fluent Bit, com base na configuração Fluent Bit estabelecida para o cluster do Amazon EKS no Fargate.