Como soluciono problemas do Container Insights para meus clusters do Amazon EKS?

5 minuto de leitura
0

Encontro problemas ao configurar o Amazon CloudWatch Container Insights para meus clusters do Amazon Elastic Kubernetes Service (Amazon EKS).

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Verifique sua instalação do Container Insights

Para verificar se você instalou corretamente o Container Insights em seu cluster Amazon EKS, execute o seguinte comando:

kubectl get pods -n amazon-cloudwatch

Em seguida, execute o seguinte comando para seu pod:

kubectl describe pod pod-name -n amazon-cloudwatch

Observação: substitua o pod-name pelo nome do pod.

Verifique a seção Eventos da saída do comando.

Para verificar seus logs do CloudWatch, execute o seguinte comando:

kubectl logs pod-name  -n amazon-cloudwatch

Instale o CloudWatch Observability como um complemento gerenciado pelo Amazon EKS

Use o complemento Amazon EKS para instalar o Container Insights com observabilidade aprimorada para o Amazon EKS.

Observação: é possível usar o complemento CloudWatch Observability EKS em clusters do Amazon EKS que executam somente o Kubernetes versão 1.23 ou posterior.

Para instalar o CloudWatch Observability como um complemento autogerenciado, conclua as seguintes etapas:

  1. Para instalar o cert-manager, execute o seguinte comando:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.yaml
  2. Para instalar as definições de recursos personalizados (CRD), execute o seguinte comando:

    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-custom-resource-definitions.yaml | kubectl apply --server-side -f -
  3. Para instalar o operador do agente de contêiner do CloudWatch, execute o seguinte comando:

    ClusterName=my-cluster-name
    RegionName=my-cluster-region
    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/main/k8s-quickstart/cwagent-operator-rendered.yaml | sed 's/{{cluster_name}}/'${ClusterName}'/g;s/{{region_name}}/'${RegionName}'/g' | kubectl apply -f -

Solucione problemas de métricas que não aparecem no Console de Gerenciamento da AWS

Se você não vê as métricas do Container Insights no Console de Gerenciamento da AWS, confirme que concluiu a configuração do Container Insights.

Solucionar erros do Container Insights

Unauthorized panic: Cannot retrieve cadvisor data from kubelet

Para resolver esse problema, certifique-se de ativar o modo de autorização Webhook em seu kubelet.

Invalid endpoint error

Exemplo de mensagem de erro:

“log”: “2020-04-02T08:36:16Z E! cloudwatchlogs: code: InvalidEndpointURL, message: invalid endpoint uri, original error: &url.Error{Op:\"parse\", URL:\"https://logs.{{region_name}}.amazonaws.com/\", Err:\"{\"}, &awserr.baseError{code:\"InvalidEndpointURL\", message:\"invalid endpoint uri\", errs:[]error{(*url.Error)(0xc0008723c0)}}\n",

Para resolver esse problema, certifique-se de substituir todos os valores de espaço reservado em seus comandos. Por exemplo, confirme se as informações que você usa para cluster-name e region-name estão corretas para sua implantação ao executar a AWS CLI.

Métricas de pod ausentes no Amazon EKS ou no Kubernetes após a atualização do cluster

Exemplo de mensagem de erro:

“W! No pod metric collected”

Se as métricas do pod estiverem ausentes após a atualização do cluster, verifique se o runtime do contêiner no nó está funcionando conforme o esperado.

Para resolver esse problema, atualize seu manifesto de implantação para montar o soquete containerd do host no contêiner.

Exemplo de manifesto de implantação:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: cloudwatch-agent
  namespace: amazon-cloudwatch
spec:
  template:
    spec:
      containers:
        - name: cloudwatch-agent
# ...
          # Don't change the mountPath
          volumeMounts:
# ...
            - name: dockersock
              mountPath: /var/run/docker.sock
              readOnly: true
            - name: varlibdocker
              mountPath: /var/lib/docker
              readOnly: true
            - name: containerdsock # NEW mount
              mountPath: /run/containerd/containerd.sock
              readOnly: true
# ...
      volumes:
# ...
        - name: dockersock
          hostPath:
            path: /var/run/docker.sock
        - name: varlibdocker
          hostPath:
            path: /var/lib/docker
        - name: containerdsock # NEW volume
          hostPath:
            path: /run/containerd/containerd.sock

Para ver um exemplo completo do manifesto, consulte cwagent-daemonset.yaml no site do GitHub.

Não há métrica de pod ao usar o Bottlerocket para Amazon EKS

Exemplo de mensagem de erro:

“W! No pod metric collected”

O Bottlerocket usa um caminho de contêiner diferente no host. Se você usar o Bottlerocket, deverá alterar todos os volumes para o local do caminho do contêiner Bottlerocket.

Exemplo de comando:

volumes:
  # ...
    - name: containerdsock
      hostPath:
        # path: /run/containerd/containerd.sock
        # bottlerocket does not mount containerd sock at normal place
        # https://github.com/bottlerocket-os/bottlerocket/commit/91810c85b83ff4c3660b496e243ef8b55df0973b
        path: /run/dockershim.sock

aumento inesperado do volume de logs do agente CloudWatch ao coletar métricas do Prometheus

Para resolver esse problema, atualize o agente do CloudWatch para a versão mais recente disponível. Para encontrar sua versão atual, consulte Como encontrar informações sobre as versões dos agentes do CloudWatch. Para instalar a versão mais recente, consulte Instalar o agente CloudWatch.

Erro CrashLoopBackoff no agente CloudWatch

Para resolver esse problema, certifique-se de ter configurado corretamente suas permissões do AWS Identity and Access Management (AWS IAM).

O agente CloudWatch ou o pod Fluentd estão pendentes

Seu pod pode estar travado no estado Pendente. Ou você recebe um erro FailedScheduling do seu agente do CloudWatch ou dos pods do Fluentd. Para resolver esse problema, confirme se seus nós têm recursos computacionais suficientes com base na quantidade de código e na RAM que os agentes precisam.

Para descrever os pods, execute o seguinte comando:

kubectl describe pod cloudwatch-agent-85ppg -n amazon-cloudwatch

Configmap for fluent bit not deployed correctly

Para resolver esse problema, confirme se você implantou corretamente o mapa de configuração fluent-bit-config no namespace amazon-cloudwatch.

Exemplos de mensagens de erro:

[2024/10/02 11:16:42] [error] [config] inconsistent use of tab and space
[2024/10/02 11:16:42] [error] [config] error in /fluent-bit/etc/..2024_10_02_11_16_29.3759745087//application-log.conf:62: invalid indentation level
[2024/10/02 11:16:42] [error] configuration file contains errors, aborting.cwagent-daemonset.yaml
AWS OFICIAL
AWS OFICIALAtualizada há 2 meses