Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Solución de problemas del modo automático de EKS

Modo de enfoque
Solución de problemas del modo automático de EKS - Amazon EKS

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Ayude a mejorar esta página

Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.

Con el modo automático de EKS, AWS asume más responsabilidad por las instancias de EC2 de la cuenta de AWS. EKS asume la responsabilidad del tiempo de ejecución del contenedor en los nodos, el sistema operativo en los nodos y determinados controladores. Incluye un controlador de almacenamiento en bloque, un controlador de equilibrio de carga y un controlador de computación.

Debe utilizar las API de Kubernetes y AWS para solucionar problemas en los nodos. Puede hacer lo siguiente:

nota

El modo automático de EKS utiliza instancias administradas por EC2. No puede acceder directamente a las instancias administradas por EC2, ni siquiera mediante SSH.

Es posible que tenga los siguientes problemas con soluciones específicas para los componentes del modo automático de EKS:

Puede utilizar los siguientes métodos para solucionar problemas de los componentes del modo automático de EKS:

Agente de supervisión de nodos

El modo automático de EKS incluye el agente de supervisión de nodos de Amazon EKS. Puede utilizar este agente para ver información de solución de problemas y depuración relativa a los nodos. El agente de supervisión de nodos publica events de Kubernetes y conditions de nodos. Para obtener más información, consulte Cómo habilitar la reparación automática de los nodos e investigar los problemas de estado de los nodos.

Obtenga la salida de la consola de una instancia administrada por EC2 mediante la CLI de AWS EC2

Este procedimiento ayuda a solucionar problemas en el arranque o a nivel del kernel.

En primer lugar, debe determinar el ID de la instancia de EC2 asociada a la carga de trabajo. En segundo lugar, utilice AWS CLI para recuperar la salida de la consola.

  1. Confirme que kubectl se encuentra instalado y conectado al clúster

  2. (Opcional) Utilice el nombre de una implementación de Kubernetes para enumerar los pods asociados.

    kubectl get pods -l app=<deployment-name>
  3. Utilice el nombre del pod de Kubernetes para determinar el ID de instancia de EC2 del nodo asociado.

    kubectl get pod <pod-name> -o wide
  4. Utilice el ID de instancia de EC2 para recuperar la salida de la consola.

    aws ec2 get-console-output --instance-id <instance id> --latest --output text

Obtenga los registros de los nodos mediante contenedores de depuración y la kubectl CLI

La forma recomendada de recuperar los registros de un nodo del modo automático de EKS es utilizar el recurso NodeDiagnostic. Para ver los pasos, consulte Recuperación de los registros de nodos de un nodo administrado mediante kubectl y S3.

Sin embargo, puede transmitir los registros activos desde una instancia mediante el comando kubectl debug node. Este comando lanza un nuevo pod en el nodo que desea depurar y que puede usar de forma interactiva.

  1. Lance un contenedor de depuración. El siguiente comando usa i-01234567890123456 para el ID de instancia del nodo, -it asigna tty y adjunta stdin para el uso interactivo y utiliza el perfil sysadmin del archivo kubeconfig.

    kubectl debug node/i-01234567890123456 -it --profile=sysadmin --image=public.ecr.aws/amazonlinux/amazonlinux:2023

    Un ejemplo de salida sería el siguiente.

    Creating debugging pod node-debugger-i-01234567890123456-nxb9c with container debugger on node i-01234567890123456. If you don't see a command prompt, try pressing enter. bash-5.2#
  2. Desde el intérprete de comandos, ahora puede instalar util-linux-core, que proporciona el comando nsenter. Use nsenter para ingresar el espacio de nombres de montaje del PID 1 (init) en el host y ejecutar el comando journalctl para transmitir los registros desde el kubelet:

    yum install -y util-linux-core nsenter -t 1 -m journalctl -f -u kubelet

Por motivos de seguridad, la imagen del contenedor de Amazon Linux no instala muchos binarios de forma predeterminada. Puede usar el comando yum whatprovides a fin de identificar el paquete que debe instalarse para proporcionar un binario determinado.

yum whatprovides ps
Last metadata expiration check: 0:03:36 ago on Thu Jan 16 14:49:17 2025. procps-ng-3.3.17-1.amzn2023.0.2.x86_64 : System and process monitoring utilities Repo : @System Matched from: Filename : /usr/bin/ps Provide : /bin/ps procps-ng-3.3.17-1.amzn2023.0.2.x86_64 : System and process monitoring utilities Repo : amazonlinux Matched from: Filename : /usr/bin/ps Provide : /bin/ps

Consulte los recursos asociados al modo automático de EKS en la consola de AWS

Puede utilizar la consola de AWS para ver el estado de los recursos asociados al clúster del modo automático de EKS.

  • Volúmenes de EBS

    • Para ver los volúmenes del modo automático de EKS, busque la clave de etiqueta eks:eks-cluster-name

  • Balanceadores de carga

    • Para ver los equilibradores de carga del modo automático de EKS, busque la clave de etiqueta eks:eks-cluster-name

  • Instancias EC2

    • Para ver las instancias del modo automático de EKS, busque la clave de etiqueta eks:eks-cluster-name

Consulte los errores de IAM en la cuenta de AWS

  1. Vaya a la consola de CloudTrail

  2. Seleccione “Historial de eventos” en el panel de navegación izquierdo

  3. Aplique filtros de códigos de error:

    • AccessDenied

    • UnauthorizedOperation

    • InvalidClientTokenId

Busque errores relacionados con el clúster de EKS. Utilice los mensajes de error para actualizar las entradas de acceso de EKS, el rol de IAM del clúster o el rol de IAM del nodo. Es posible que tenga que asociar una nueva política a estos roles con permisos para el modo automático de EKS.

Solución de problemas de pods que no se pueden programar en el nodo del modo automático

Si el estado de los pods es Pending y no se programan en un nodo del modo automático, verifique si el manifiesto de implementación o el pod tiene nodeSelector. Si nodeSelector está presente, asegúrese de que use eks.amazonaws.com/compute-type: auto para programar en los nodos creados con el modo automático de EKS. Para obtener más información sobre las etiquetas de nodos utilizadas por el modo automático de EKS, consulte Cómo controlar si una carga de trabajo se implementa en nodos del modo automático de EKS.

Solución de problemas de un nodo que no se une al clúster

El modo automático de EKS configura automáticamente las nuevas instancias de EC2 con la información correcta para que se unan al clúster, lo que incluye el punto de conexión del clúster y la autoridad de certificación (CA) del clúster. Sin embargo, es posible que estas instancias sigan sin unirse al clúster de EKS como nodo. Ejecute los siguientes comandos para identificar las instancias que no se unieron al clúster:

  1. Ejecute kubectl get nodeclaim para buscar NodeClaims con Ready = False.

    kubectl get nodeclaim
  2. Ejecute kubectl describe nodeclaim <node_claim> y busque en Estado cualquier problema que impida que el nodo se una al clúster.

    kubectl describe nodeclaim <node_claim>

Mensajes de error comunes:

Error getting launch template configs

Es posible que reciba este error si configura etiquetas personalizadas en NodeClass con los permisos predeterminados del rol de IAM del clúster. Consulte Más información sobre las identidades y el acceso en el modo automático de EKS.

Error creating fleet

Es posible que exista algún problema de autorización al hacer la llamada RunInstances desde la API de EC2. Compruebe si hay errores en AWS CloudTrail y consulte en Rol de IAM del clúster del modo automático de Amazon EKS los permisos de IAM requeridos.

Detección de problemas de conectividad de los nodos con el VPC Reachability Analyzer

nota

Se le cobrará por cada análisis que ejecute el Analizador de accesibilidad de VPC. Para obtener más información sobre precios, consulte Precios de Amazon VPC.

Una de las razones por las que una instancia no se unió al clúster es un problema de conectividad de red que le impide acceder al servidor de API. Para diagnosticar este problema, puede usar el Analizador de accesibilidad de VPC para efectuar un análisis de la conectividad entre un nodo que no puede unirse al clúster y el servidor de API. Necesitará dos datos:

  • ID de instancia de un nodo que no puede unirse al clúster

  • Dirección IP del punto de conexión del servidor de API de Kubernetes

Para obtener el ID de instancia, tendrá que crear una carga de trabajo en el clúster para que el modo automático de EKS lance una instancia de EC2. Esto también crea un objeto NodeClaim en el clúster que tendrá el ID de la instancia. Ejecute kubectl get nodeclaim -o yaml para imprimir todas las NodeClaims del clúster. Cada NodeClaim contiene el ID de instancia como un campo y, de nuevo, en ProviderID:

kubectl get nodeclaim -o yaml

Un ejemplo de salida sería el siguiente.

nodeName: i-01234567890123456 providerID: aws:///us-west-2a/i-01234567890123456

Puede determinar el punto de conexión del servidor de API de Kubernetes mediante la ejecución de kubectl get endpoint kubernetes -o yaml. Las direcciones se encuentran en el campo de direcciones:

kubectl get endpoints kubernetes -o yaml

Un ejemplo de salida sería el siguiente.

apiVersion: v1 kind: Endpoints metadata: name: kubernetes namespace: default subsets: - addresses: - ip: 10.0.143.233 - ip: 10.0.152.17 ports: - name: https port: 443 protocol: TCP

Con estos dos datos, puede efectuar el análisis s. Primero, vaya al Analizador de accesibilidad de VPC en la AWS Management Console.

  1. Haga clic en “Crear y analizar ruta”.

  2. Proporcione un nombre para el análisis (por ejemplo, “Error en la unión de nodos”).

  3. En “Tipo de origen” seleccione “Instancias”.

  4. Ingrese el ID de instancia del nodo que falla como “Origen”.

  5. En “Destino de ruta”, seleccione “Dirección IP”.

  6. Ingrese una de las direcciones IP del servidor de API como “Dirección de destino”.

  7. Amplíe la sección “Configuración de encabezados de paquetes adicionales”.

  8. Ingrese 443 como “Puerto de destino”.

  9. Seleccione “Protocolo” como TCP si aún no está seleccionado.

  10. Haga clic en “Crear y analizar ruta”.

  11. El análisis puede tardar unos minutos en completarse. Si los resultados del análisis indican un error de accesibilidad, indicarán dónde se produjo el error en la ruta de la red para que pueda resolver el problema.

Cómo compartir volúmenes entre pods

Los nodos del modo automático de EKS se configuran con SELinux en modo de aplicación, lo que proporciona un mayor aislamiento entre los pods que se ejecutan en el mismo nodo. Cuando SELinux está habilitado, a la mayoría de los pods no privilegiados se les aplicará automáticamente su propia etiqueta de seguridad multicategoría (MCS). Esta etiqueta MCS es única para cada pod y está diseñada para garantizar que el proceso de un pod no pueda manipular el proceso de ningún otro pod o del host. Incluso si un pod etiquetado funciona como raíz y tiene acceso al sistema de archivos del host, no podrá manipular los archivos, hacer llamadas confidenciales del sistema desde el host, acceder al tiempo de ejecución del contenedor ni obtener la clave secreta del kubelet.

Por este motivo, es posible que tenga problemas al intentar compartir datos entre pods. Por ejemplo, una PersistentVolumeClaim con el modo de acceso ReadWriteOnce no permitirá que varios pods accedan al volumen simultáneamente.

Para habilitar este uso compartido entre pods, puede usar seLinuxOptions de los pods para configurar la misma etiqueta MCS en esos pods. En este ejemplo, asignamos las tres categorías c123,c456,c789 al pod. Esto no entrará en conflicto con ninguna de las categorías que se asignen automáticamente a los pods en el nodo, ya que solo se les asignarán dos categorías.

securityContext: seLinuxOptions: level: "s0:c123,c456,c789"

Solución de problemas de los controladores incluidos en el modo automático

Si surge un problema con un controlador, averigüe lo siguiente:

Tema siguiente:

Clústeres

Tema anterior:

Red
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.