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

7 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: “Instances failed to join the kubernetes cluster”.

Resolución

Uso del runbook de automatización para identificar problemas habituales

Utiliza el runbook AWSSupport-TroubleshootEKSWorkerNode para encontrar problemas comunes.

Importante: Para que la automatización funcione, los nodos de trabajo deben tener permiso para acceder a AWS Systems Manager y tener Systems Manager en ejecución. Para conceder el permiso, adjunta la política administrada de AWS AmazonSSMManagedInstanceCore al rol de AWS Identity and Access Management (IAM) que corresponde a tu perfil de instancia de Amazon Elastic Compute Cloud (EC2). Esta es la configuración predeterminada para los grupos de nodos administrados de Amazon EKS que se crean mediante eksctl.

Sigue estos pasos:

  1. Abre el runbook.
  2. Comprueba que la región de AWS en la consola de administración de AWS esté configurada en la misma región que tu clúster.
    Nota: Consulta la sección Detalles del runbook del runbook para obtener más información sobre este.
  3. En la sección Parámetros de entrada, especifica el nombre del clúster en el campo ClusterName y el ID de la instancia en el campo WorkerID.
  4. (Opcional) En el campo AutomationAssumeRole, especifica 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. Selecciona Ejecutar.
  6. Consulta la sección Resultados para ver por qué tu nodo de trabajo no se puede unir al clúster y las medidas que puedes tomar para resolver el error.

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

Confirma que el grupo de seguridad del plano de control y el del nodo de trabajo estén configurados con los requisitos de tráfico de entrada y salida. De forma predeterminada, Amazon EKS aplica el grupo de seguridad del clúster a las instancias en tu grupo de nodos para facilitar la comunicación entre los nodos y el plano de control. Si especificas 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úrate de que el rol de la instancia de IAM asociada al nodo de trabajo lleve adjuntas las políticas AmazonEKSWorkerNodePolicy y AmazonEC2ContainerRegistryReadOnly.

Nota: Debes adjuntar la política administrada de Amazon AmazonEKS_CNI_Policy a un rol de IAM. Puedes 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, consulta Configuración del complemento de CNI de Amazon VPC para utilizar IRSA.

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

Tras configurar el acceso privado para el punto de enlace del clúster de EKS, debes activar un nombre de host y una resolución de DNS para tu instancia de Amazon Virtual Private Cloud (Amazon VPC). Al activar el acceso privado al punto de enlace, Amazon EKS crea una zona alojada privada de Amazon Route 53 en tu nombre. A continuación, Amazon EKS la asocia con Amazon VPC en tu clúster. Para obtener más información, consulta Control del acceso de la red al punto de enlace del servidor de API del clúster.

Actualización del archivo ConfigMap aws-auth con el rol NodeInstanceRole de los nodos de trabajo

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

Definición de las etiquetas para tus nodos de trabajo

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

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

Si tu instancia de Amazon VPC se está quedando sin direcciones IP, asocia un CIDR secundario a tu instancia de Amazon VPC existente. Para obtener más información, consulta Visualizacion de los requisitos de red de Amazon EKS para VPC y subredes.

Confirmación de que los nodos de trabajo de Amazon EKS puedan alcanzar el punto de enlace del servidor de la API para el clúster

Puedes lanzar nodos de trabajo en cualquier subred de tu 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 tus nodos de trabajo se lanzan en una red privada restringida, confirma que puedan alcanzar el punto de conexión del servidor de la API de Amazon EKS. Para obtener más información, consulta los requisitos para ejecutar Amazon EKS en un clúster privado sin acceso a Internet de salida.

Nota: Se recomienda crear la puerta de enlace de NAT en una subred pública para los nodos en una subred privada respaldada por una puerta de enlace de NAT.

Si no utilizas puntos de enlace de AWS PrivateLink, comprueba el acceso a los puntos de enlace 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 API, utiliza SSH para conectarte y, a continuación, ejecuta el siguiente comando netcat:

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

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

Comprueba los registros de kubelet mientras sigas conectado a tu instancia:

journalctl -f -u kubelet

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

sudo systemctl status kubelet

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

Comprobación de que los puntos de enlace de la API puedan llegar a tu región de AWS

Utiliza SSH para conectarte a uno de los nodos de trabajo y, a continuación, ejecuta 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: Sustituye region por la región de AWS de tu nodo de trabajo.

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

En el caso de las plantillas de lanzamiento de grupos de nodos administrados con una AMI específica, debes 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, consulta 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/bashset -o xtrace/etc/eks/bootstrap.sh
${ClusterName} ${BootstrapArguments}

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

Información relacionada

Solución de problemas con los clústeres y nodos de Amazon EKS

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