Direkt zum Inhalt

Wie behebe ich Probleme mit Container Insights für meine Amazon-EKS-Cluster?

Lesedauer: 4 Minute
0

Wenn ich Amazon CloudWatch Container Insights für meine Cluster des Amazon Elastic Kubernetes Service (Amazon EKS) konfiguriere, treten Probleme auf.

Behebung

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version von AWS CLI verwendest.

Überprüfe deine Container-Insights-Installation

Um festzustellen, ob du Container Insights ordnungsgemäß auf deinem Amazon-EKS-Cluster installiert hast, führe folgenden Befehl aus:

kubectl get pods -n amazon-cloudwatch

Führe danach den folgenden Befehl für deinen Pod aus:

kubectl describe pod pod-name -n amazon-cloudwatch

Hinweis: Ersetze pod-name durch den Pod-Namen.

Überprüfe den Abschnitt Ereignisse der Befehlsausgabe.

Führe den folgenden Befehl aus, um dein CloudWatch-Protokoll zu überprüfen:

kubectl logs pod-name  -n amazon-cloudwatch

Installiere CloudWatch Observability als ein von Amazon EKS verwaltetes Add-on

Verwende das Amazon-EKS-Add-on, um Container Insights mit verbesserter Beobachtbarkeit für Amazon EKS zu installieren.

Hinweis: Du kannst das CloudWatch-Observability-EKS-Add-on auf Amazon-EKS-Clustern verwenden, auf denen nur Kubernetes Version 1.23 oder später ausgeführt wird.

Führe die folgenden Schritte durch, um CloudWatch Observability als selbstverwaltetes Add-on zu installieren:

  1. Führe den folgenden Befehl aus, um cert-manager zu installieren:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.yaml
  2. Führe den folgenden Befehl aus, um die benutzerdefinierten Ressourcendefinitionen (CRD) zu installieren:

    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. Führe den folgenden Befehl aus, um den CloudWatch-Container-Agent-Operator zu installieren:

    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 -

Behebe Fehler bei Metriken, die nicht in der AWS-Managementkonsole angezeigt werden

Wenn in der AWS-Managementkonsole keine Container-Insights-Metriken angezeigt werden, bestätige, dass du die Einrichtung von Container Insights abgeschlossen hast.

Container-Insights-Fehler beheben

Nicht autorisierte Panik: Cadvisor-Daten können nicht vom Kubelet abgerufen werden

Um dieses Problem zu beheben, stelle sicher, dass du den Webhook-Autorisierungsmodus in deinem Kubelet aktiviert hast.

Fehler ungültiger Endpunkt

Beispiel für eine Fehlermeldung:

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

Um dieses Problem zu beheben, achte darauf, alle Platzhalterwerte in deinen Befehlen zu ersetzen. Vergewissere dich beispielsweise, dass die Angaben, die du für cluster-name und region-name verwendest, mit deiner Bereitstellung übereinstimmen, wenn du die AWS CLI ausführst.

Pod-Metriken fehlen auf Amazon EKS oder Kubernetes nach einem Cluster-Upgrade

Beispiel für eine Fehlermeldung:

"W! No pod metric collected"

Wenn nach dem Upgrade deines Clusters keine Pod-Metriken angezeigt werden, überprüfe, ob die Container-Laufzeit auf dem Knoten wie erwartet funktioniert.

Um dieses Problem zu beheben, aktualisiere dein Bereitstellungsmanifest, um den Containerd-Socket vom Host in den Container einzubinden.

Beispiel für ein Bereitstellungsmanifest:

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

Ein vollständiges Beispiel des Manifests findest du unter cwagent-daemonset.yaml auf der GitHub-Website.

Keine Pod-Metriken bei der Verwendung von Bottlerocket für Amazon EKS

Beispiel für eine Fehlermeldung:

"W! No pod metric collected"

Bottlerocket verwendet einen anderen Containerd-Pfad auf dem Host. Wenn du Bottlerocket verwendest, musst du alle Volumes auf den Pfad des Bottlerocket-Containers ändern.

Beispielbefehl:

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

Unerwarteter Anstieg des Protokollvolumens durch den CloudWatch-Agenten beim Erfassen von Prometheus-Metriken

Um dieses Problem zu beheben, aktualisiere den CloudWatch-Agenten auf die neueste verfügbare Version. Um deine aktuelle Version herauszufinden, siehe Informationen über die Versionen der CloudWatch-Agenten finden. Um die neueste Version zu installieren, siehe CloudWatch-Agenten installieren.

CrashLoopBackOff-Fehler beim CloudWatch-Agenten

Um dieses Problem zu lösen, achte darauf, dass du deine AWS-Identity-and-Access-Management(IAM)-Berechtigungen richtig konfiguriert hast.

CloudWatch-Agent/Fluentd-Pod steckt im Status „Ausstehend“ fest

Dein Pod steckt möglicherweise im Status Ausstehend fest. Oder dir wird die Fehlermeldung FailedScheduling von deinem CloudWatch-Agenten oder den Fluentd-Pods angezeigt. Um dieses Problem zu beheben, stelle sicher, dass deine Knoten über genügend Rechenleistung verfügen, basierend auf der Codemenge und dem RAM, die die Agenten benötigen.

Führe den folgenden Befehl aus, um die Pods zu beschreiben:

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

Configmap für Fluent Bit wurde nicht korrekt bereitgestellt

Um dieses Problem zu beheben, achte darauf, dass du die fluent-bit-config-Configmap im amazon-cloudwatch-Namespace ordnungsgemäß bereitgestellt hast.

Beispiel für Fehlermeldungen:

[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 OFFICIALAktualisiert vor 8 Monaten