Saltar al contenido

¿Cómo puedo solucionar los problemas de Información de contenedores en mis clústeres de Amazon EKS?

5 minutos de lectura
0

Tengo problemas al configurar Información de contenedores de Amazon CloudWatch para mis clústeres de Amazon Elastic Kubernetes Service (Amazon EKS).

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Comprobación de la instalación de Información de contenedores

Para comprobar si ha instalado correctamente Información de contenedores en su clúster de Amazon EKS, ejecute el siguiente comando:

kubectl get pods -n amazon-cloudwatch

A continuación, ejecute el siguiente comando para su pod:

kubectl describe pod pod-name -n amazon-cloudwatch

Nota: Sustituya pod-name por el nombre del pod.

Consulte la sección Eventos de la salida del comando.

Para comprobar los registros de CloudWatch, ejecute el siguiente comando:

kubectl logs pod-name  -n amazon-cloudwatch

Instalación de observabilidad de CloudWatch como un complemento administrado de Amazon EKS

Utilice el complemento de Amazon EKS para instalar Información de contenedores con una observabilidad mejorada para Amazon EKS.

Nota: Puede usar el complemento de observabilidad de CloudWatch de EKS en clústeres de Amazon EKS que ejecuten solo la versión 1.23 o posterior de Kubernetes.

Para instalar observabilidad de CloudWatch como un complemento autoadministrado, siga estos pasos:

  1. Para instalar cert-manager, ejecute el siguiente comando:

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.16.1/cert-manager.yaml
  2. Para instalar las definiciones de recursos personalizadas (CRD), ejecute el siguiente 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 el operador del agente de contenedor de CloudWatch, ejecute el siguiente 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 -

Solución de problemas de métricas que no aparecen en la consola de administración de AWS

Si no ve las métricas de Información de contenedores en la consola de administración de AWS, confirme que ha completado la configuración de Información de contenedores.

Solución de errores de Información de contenedores

Pánico no autorizado: no se pueden recuperar los datos de cadvisor de kubelet

Para resolver este problema, asegúrese de activar el modo de autorización de webhook en su kubelet.

Error de punto de enlace no válido

Ejemplo de mensaje de error:

«registro»: «2020-04-02T08:36:16Z E! cloudwatchlogs: código: InvalidEndpointURL, mensaje: uri de punto de enlace no válido, error original: &url.Error{Op:\"parse\", URL:\"https://logs.{{region_name}}.amazonaws.com/\", Err:\"{\"}, &awserr.baseError{code:\"InvalidEndpointURL\", mensaje:\"uri de punto de enlace no válida\", errs:[]error{(*url.Error)(0xc0008723c0)}}\n",

Para resolver este problema, asegúrese de sustituir todos los valores de los marcadores de posición en los comandos. Por ejemplo, confirme que la información que utiliza para cluster-name y region-name es correcta para su despliegue al ejecutar la AWS CLI.

Faltan métricas de pod en Amazon EKS o Kubernetes tras la actualización del clúster

Ejemplo de mensaje de error:

«¡W! No se recopiló ninguna métrica de pod»

Si faltan las métricas del pod después de actualizar el clúster, compruebe que la versión ejecutable del contenedor en el nodo funciona según lo previsto.

Para resolver este problema, actualice el manifiesto de despliegue para montar el socket containerd del host en el contenedor.

Ejemplo de manifiesto de despliegue:

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 un ejemplo completo del manifiesto, consulte cwagent-daemonset.yaml en el sitio web de GitHub.

No hay métricas de pods cuando se usa Bottlerocket para Amazon EKS

Ejemplo de mensaje de error:

«¡W! No se recopiló ninguna métrica de pod»

Bottlerocket usa una ruta de containerd diferente en el host. Si usa Bottlerocket, debe cambiar todos los volúmenes a la ubicación de la ruta del contenedor de Bottlerocket.

Ejemplo 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 del volumen de registros del agente de CloudWatch al recopilar las métricas de Prometheus

Para resolver este problema, actualice el agente de CloudWatch a la última versión disponible. Para encontrar su versión actual, consulte Búsqueda de información sobre las versiones del agente de CloudWatch. Para instalar la versión más reciente, consulte Instalación del agente de CloudWatch.

Error CrashLoopBackoff en el agente de CloudWatch

Para resolver este problema, asegúrese de haber configurado correctamente los permisos de AWS Identity and Access Management (IAM).

El agente de CloudWatch o el pod de Fluentd están pendientes

Es posible que el pod esté bloqueado en estado Pendiente. O bien, recibe un error FailedScheduling de su agente de CloudWatch o de sus pods de Fluentd. Para resolver este problema, confirme que los nodos tengan suficientes recursos informáticos en función de la cantidad de código y la RAM que necesitan los agentes.

Para describir los pods, ejecute el siguiente comando:

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

Configmap para Fluent Bit no se ha desplegado correctamente

Para resolver este problema, confirme que ha desplegado correctamente el mapa de configuración de fluent-bit-config en el espacio de nombres amazon-cloudwatch.

Ejemplos de mensajes de error:

[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
OFICIAL DE AWSActualizada hace 9 meses