¿Cómo puedo solucionar los errores durante la creación de grupos de nodos administrados por Amazon EKS?

8 minutos de lectura
0

No se ha podido crear un grupo de nodos administrados por Amazon Elastic Kubernetes Service (Amazon EKS). Los nodos no se pueden unir al clúster y se ha mostrado un error parecido a este: «Las instancias no se han podido unir al clúster de kubernetes».

Descripción corta

Para solucionar los errores durante la creación de un grupo de nodos administrados por Amazon EKS, siga estos pasos:

  • Utilice el runbook de automatización de AWS Systems Manager para identificar los problemas habituales.
  • Confirme los requisitos de tráfico del grupo de seguridad del nodo de trabajo.
  • Compruebe los permisos de Identity and Access Management (IAM) del nodo de trabajo.
  • Confirme que Amazon Virtual Private Cloud (Amazon VPC) admite un nombre de host y una resolución de DNS en el caso del clúster.
  • Actualice ConfigMap aws-auth con NodeInstanceRole en los nodos de trabajo.
  • Defina las etiquetas para los nodos de trabajo.
  • Confirme que las subredes de Amazon VPC del nodo de trabajo tengan direcciones IP disponibles.
  • Confirme que los nodos de trabajo pueden alcanzar el punto de conexión del servidor de la API del clúster.
  • Compruebe que los puntos de conexión de las API Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Container Registry (Amazon ECR) y Amazon Simple Storage Service (Amazon S3) pueden alcanzar su región de AWS.

Resolución

Nota: Si se muestran errores mientras ejecuta comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que está utilizando la versión más reciente de AWS CLI.

Uso del runbook de automatización de Systems Manager para identificar problemas habituales

Utilice el runbook AWSSupport-TroubleshootEKSWorkerNode para encontrar los problemas habituales que impiden que los nodos de trabajo se unan a un clúster.

Importante: Para que la automatización funcione, los nodos de trabajo deben tener permiso para acceder a Systems Manager, que debe estar en ejecución. Para conceder permiso, adjunte la política administrada de AWS AmazonSSMManagedInstanceCore al rol de IAM que corresponda a su perfil de instancia de EC2. Esta es la configuración predeterminada para los grupos de nodos gestionados por EKS que se han creado mediante eksctl.

  1. Abra el runbook.
  2. Compruebe que la región de AWS configurada en la Consola de administración de AWS coincida con la de su clúster.
    **Nota:**Consulte la sección Detalles del documento del runbook para obtener más información sobre esta rutina de compilación.
  3. En la sección Parámetros de entrada, especifique el nombre del clúster en el campo Nombre del clúster y el ID de la instancia en el campo ID de trabajo.
  4. (Opcional) En el campo AutomationAssumeRole, especifique el rol de IAM para que Systems Manager pueda llevar a cabo las acciones. Si no se especifica, se utilizarán los permisos de IAM de la entidad de IAM actual para realizar las acciones en el runbook.
  5. Seleccione Ejecutar.
  6. Consulte la sección Salidas para ver por qué el nodo no se une a su clúster y los pasos que puede seguir para solucionarlo.

Confirmación de los requisitos de tráfico del grupo de seguridad del nodo de trabajo

Confirme que el grupo de seguridad del plano de control y el del nodo de trabajo estén configurados con las opciones recomendadas para tráfico de entrada y salida. De forma predeterminada, Amazon EKS aplica el grupo de seguridad del clúster a las instancias en su grupo de nodos para facilitar la comunicación entre los nodos y el plano de control. Si especifica grupos de seguridad personalizados en la plantilla de lanzamiento del grupo de nodos administrados, Amazon EKS no añadirá el grupo de seguridad del clúster.

Verificación de los permisos de IAM del nodo de trabajo

Asegúrese de que la instancia de IAM asociada al nodo de trabajo lleve adjuntas las políticas AmazonEKSWorkerNodePolicy y AmazonEC2ContainerRegistryReadOnly.

Nota: Debe adjuntar la política administrada de Amazon AmazonEKS_CNI_Policy a un rol de IAM. Puede adjuntarla al rol de la instancia del nodo. Sin embargo, se recomienda adjuntar la política a un rol asociado a la cuenta de servicio de Kubernetes aws-node en el espacio de nombres kube-system. Para obtener más información, consulte Configuración del Amazon VPC CNI plugin for Kubernetes para utilizar los roles de IAM en las cuentas de servicio.

Confirmación de la compatibilidad de Amazon VPC con un nombre de host y una resolución de DNS en el caso de su clúster

Tras configurar el acceso privado para el punto de conexión del clúster de EKS, debe activar un nombre de host y una resolución de DNS para su Amazon VPC. Al activar el acceso privado al punto de conexión, Amazon EKS crea una zona alojada privada de Amazon Route 53 en su nombre. A continuación, Amazon EKS la asocia con Amazon VPC en su clúster. Para obtener más información, consulte Control de acceso al punto de conexión del clúster de Amazon EKS.

Actualización del ConfigMap aws-auth con nodeInstanceRole para los nodos de trabajo

Compruebe que ConfigMap aws-auth esté configurado correctamente con el rol de IAM de sus nodos de trabajo, no con el perfil de instancia.

Definición de las etiquetas para sus nodos de trabajo

En la propiedad Etiqueta de los nodos de trabajo, establezca la clave en kubernetes.io/cluster/clusterName y defina el valor como propio.

Confirmación de la disponibilidad de direcciones IP para las subredes de Amazon VPC del nodo de trabajo

Si su Amazon VPC se está quedando sin direcciones IP, puede asociar un CIDR secundario a su Amazon VPC existente. Para obtener más información, consulte Requisitos y consideraciones de Amazon EKS VPC y la subred.

Confirmar que los nodos de trabajo de Amazon EKS pueden alcanzar el punto de conexión del servidor API para el clúster

Puede lanzar nodos de trabajo en cualquier subred de su clúster, VPC o subred interconectada si hay una ruta de Internet a través de las siguientes puertas de enlace:

  • NAT
  • Internet
  • Tránsito

Si sus nodos de trabajo se lanzan en una red privada restringida, confirme que puedan alcanzar el punto de conexión del servidor de la API de Amazon EKS. Para obtener más información, consulte los requisitos para ejecutar Amazon EKS en un clúster privado sin acceso a Internet de salida.

Nota: En el caso de los nodos en una subred privada respaldada por una puerta de enlace NAT, se recomienda crear la puerta de enlace NAT en una subred pública.

Si no utiliza puntos de conexión de AWS PrivateLink, compruebe el acceso a los puntos de conexión de la API a través de un servidor Proxy para los siguientes servicios de AWS:

  • Amazon EC2
  • Amazon ECR
  • Amazon S3

Para comprobar que el nodo de trabajo tenga acceso al servidor de la API, conéctese a su nodo de trabajo mediante SSH y ejecute el siguiente comando netcat:

nc -vz 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com 443

Nota: Sustituya 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com por su punto de conexión del servidor de la API.

Compruebe los registros de kubelet mientras siga conectado a su instancia:

journalctl -f -u kubelet

Si los registros de kubelet no proporcionan información sobre el origen del problema, compruebe el estado del kubelet en el nodo de trabajo:

sudo systemctl status kubelet

Recopile los registros de Amazon EKS y los registros del sistema operativo para solucionar otros problemas.

Comprobar si los puntos de conexión de las API de Amazon EC2, Amazon ECR y Amazon S3 pueden alcanzar su región de AWS

Utilice SSH para conectarse a uno de los nodos de trabajo y, a continuación, ejecute los siguientes comandos para cada servicio:

$ nc -vz ec2.region.amazonaws.com 443
$ nc -vz ecr.region.amazonaws.com 443
$ nc -vz s3.region.amazonaws.com 443

Nota: Sustituya region por la región de AWS de su nodo de trabajo.

Configuración de los datos de usuario para su nodo de trabajo

En el caso de las plantillas de lanzamiento de grupos de nodos administrados con una AMI específica, debe proporcionar comandos de arranque para que los nodos de trabajo se unan al clúster. Amazon EKS no combina los comandos de arranque predeterminados con los datos de usuario. Para obtener más información, consulte Introducción a la compatibilidad de AMI personalizada y la plantilla de lanzamiento en grupos de nodos administrados de Amazon EKS y Especificación de una AMI.

Ejemplo de plantilla de lanzamiento con comandos de arranque:

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}

Nota: Sustituya ${ClusterName} por el nombre de su clúster de Amazon EKS. Sustituya ${BootstrapArguments} por valores de arranque adicionales en caso necesario.

Información relacionada

Solución de problemas de Amazon EKS

¿Cómo puedo hacer que mis nodos de trabajo se unan a mi clúster de Amazon EKS?