Salta al contenuto

Come posso risolvere i problemi di Container Insights per i miei cluster Amazon EKS?

5 minuti di lettura
0

Riscontro problemi durante la configurazione di Amazon CloudWatch Container Insights per i miei cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Controlla l'installazione di Container Insights

Per verificare se hai installato correttamente Container Insights sul cluster Amazon EKS, esegui questo comando:

kubectl get pods -n amazon-cloudwatch

Quindi esegui questo comando per il pod:

kubectl describe pod pod-name -n amazon-cloudwatch

Nota: sostituisci pod-name con il nome del tuo pod.

Controlla la sezione Eventi dell'output del comando.

Per controllare i log di CloudWatch, esegui questo comando:

kubectl logs pod-name  -n amazon-cloudwatch

Installa CloudWatch Observability come componente aggiuntivo gestito da Amazon EKS

Utilizza il componente aggiuntivo di Amazon EKS per installare Container Insights con osservabilità migliorata per Amazon EKS.

Nota: puoi utilizzare il componente aggiuntivo CloudWatch Observability EKS solamente su cluster Amazon EKS che eseguono Kubernetes versione 1.23 o successiva.

Per installare CloudWatch Observability come componente aggiuntivo autogestito, completa i seguenti passaggi:

  1. Per installare cert-manager, esegui questo comando:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.yaml
  2. Per installare le definizioni delle risorse personalizzate (CRD), esegui questo 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. Per installare l'operatore dell'agente container CloudWatch, esegui questo 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 -

Risolvi i problemi relativi alle metriche che non appaiono nella Console di gestione AWS

Se non vedi le metriche di Container Insights nella Console di gestione AWS, verifica di aver completato la configurazione di Container Insights.

Risolvi gli errori di Container Insights

Panic non autorizzato: impossibile recuperare i dati di cadvisor da kubelet

Per risolvere l'errore, assicurati di attivare la modalità di autorizzazione Webhook nel kubelet.

Errore di endpoint non valido

Esempio di messaggio di errore:

"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",

Per risolvere l'errore, assicurati di sostituire tutti i valori segnaposto nei comandi. Ad esempio, verifica che le informazioni utilizzate per cluster-name e region-name siano corrette per la tua distribuzione quando esegui AWS CLI.

Metriche del pod mancanti su Amazon EKS o Kubernetes dopo l'aggiornamento del cluster

Esempio di messaggio di errore:

"W! No pod metric collected"

Se mancano le metriche del pod dopo l'aggiornamento del cluster, controlla che il runtime del container sul nodo funzioni come previsto.

Per risolvere l'errore, aggiorna il manifesto di distribuzione per montare il socket containerd dall'host nel container.

Esempio di manifesto di distribuzione:

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

Per un esempio completo del manifesto, consulta cwagent-daemonset.yaml sul sito web di GitHub.

Nessuna metrica del pod utilizzando Bottlerocket per Amazon EKS

Esempio di messaggio di errore:

"W! No pod metric collected"

Bottlerocket utilizza un percorso containerd diverso sull'host. Se utilizzi Bottlerocket, devi modificare tutti i volumi specificando la posizione del percorso del container Bottlerocket.

Esempio di 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 imprevisto del volume di log riscontrato per l'agente CloudWatch con la raccolta delle metriche Prometheus

Per risolvere l'errore, aggiorna l'agente CloudWatch all'ultima versione disponibile. Per trovare la versione corrente, consulta Ricerca di informazioni sulle versioni degli agenti CloudWatch. Per installare la versione più recente, consulta Installa l'agente CloudWatch.

Errore CrashLoopBackOff sull'agente CloudWatch

Per risolvere l'errore, assicurati di aver configurato correttamente le autorizzazioni AWS Identity and Access Management (IAM).

Agente CloudWatch o pod Fluentd bloccato nello stato In sospeso

Il pod potrebbe essere bloccato nello stato In sospeso. Potresti avere ricevere un errore FailedScheduling dall'agente CloudWatch o dai pod Fluentd. Per risolvere l'errore, verifica che i nodi abbiano risorse di elaborazione sufficienti in base alla quantità di codice e alla RAM richieste dagli agenti.

Per descrivere i pod, esegui questo comando:

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

Mappa di configurazione per Fluent Bit non distribuita correttamente

Per risolvere l'errore, verifica di aver distribuito correttamente la mappa di configurazione fluent-bit-config nel namespace amazon-cloudwatch.

Esempi di messaggio di errore:

[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 UFFICIALEAggiornata 8 mesi fa