¿Cómo soluciono los errores de creación de grupos de nodos administrados por Amazon EKS?

Última actualización: 11/05/2022

Mi grupo de nodos administrados de Amazon Elastic Kubernetes Service (Amazon EKS) no se pudo crear. Los nodos no pueden unirse al clúster y recibí un error similar al siguiente:

“Instances failed to join the kubernetes cluster” (Las instancias no pudieron unirse al clúster de kubernetes).

Resolución

Siga estas instrucciones de solución de problemas para resolver el error de creación del grupo de nodos administrados de Amazon EKS.

Nota: Si recibe errores al ejecutar comandos de AWS Command Line Interface (AWS CLI), asegúrese de que está utilizando la versión más reciente de AWS CLI.

Confirme que los nodos de trabajo de Amazon EKS pueden alcanzar el punto de enlace del servidor de la API de su clúster

Puede lanzar nodos de trabajo de Amazon EKS en una subred asociada a una tabla de enrutamiento al punto de enlace de la API a través de una puerta de enlace NAT o una gateway de Internet.

Si sus nodos de trabajo se lanzan en una red privada restringida, confirme que los nodos de trabajo pueden alcanzar el punto de enlace 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 saliente.

Nota: si los nodos están 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, verifique 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 Elastic Compute Cloud (EC2)
  • Amazon Elastic Container Registry (Amazon ECR)
  • Amazon Simple Storage Service (Amazon S3)

Para comprobar que el nodo de trabajo tiene acceso al servidor de la API, ejecute el siguiente comando netcat desde el nodo de trabajo:

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

Nota: Reemplace 9FCF4EA77D81408ED82517B9B7E60D52.yl4.eu-north-1.eks.amazonaws.com por el punto de enlace del servidor de la API.

Conéctese a su instancia de Amazon EC2 del nodo de trabajo de Amazon EKS mediante SSH. A continuación, ejecute el siguiente comando para comprobar los registros de kubelet:

journalctl -f -u kubelet

Si los registros de kubelet no proporcionan información sobre la fuente del problema, ejecute el siguiente comando para comprobar 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 problemas adicionales.

Compruebe que se pueda acceder a los puntos de conexión de la API de Amazon EC2, Amazon ECR y Simple Storage Service (Amazon S3)

Use SSH para conectarse a uno de los nodos de trabajo.

Para comprobar si los puntos de conexión de la API de Amazon EC2, Amazon ECR y Simple Storage Service (Amazon S3) para su región de AWS son accesibles, ejecute el siguiente comando:

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

Nota: reemplace <region> por la región de AWS para su nodo de trabajo.

Configurar los datos de usuario para el nodo de trabajo

La AMI personalizada en las plantillas de lanzamiento debe utilizar la invocación de arranque de Amazon EKS con los datos de usuario de la plantilla de lanzamiento. Amazon EKS no fusionará la información de arranque predeterminada con los datos del usuario. Para obtener más información, consulte Introducción de la plantilla de lanzamiento y la compatibilidad con AMI personalizadas en los grupos de nodos administrados de Amazon EKS.

Para configurar los datos de usuario para su nodo de trabajo, puede especificar los datos del usuario al lanzar las instancias de Amazon EC2.

Actualice el campo de datos de usuario para los nodos de trabajo de manera similar a lo siguiente:

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

Nota: Reemplace ${ClusterName} por el nombre de su clúster de Amazon EKS. Reemplace ${BootstrapArguments} con valores de arranque adicionales o deje el valor en blanco.

Confirmar que la Amazon VPC para su clúster de Amazon EKS admite un nombre de host DNS y una resolución de DNS

Debe habilitar los nombres de host DNS y la resolución de DNS con los nodos de trabajo después de cambiar el acceso al punto de conexión del clúster de público a privado. Cuando habilita el acceso privado de punto de conexión para su clúster, Amazon EKS crea una zona alojada privada de Route 53 en su nombre. A continuación, Amazon EKS lo asocia con el clúster de la nube virtual privada de Amazon (Amazon VPC).
VPC.

Para obtener más información, consulte Control de acceso de puntos de conexión de clúster de Amazon EKS.

Verificar los permisos del nodo de trabajo

Asegúrese de que el rol de instancia de IAM asociado al nodo de trabajo tenga las políticas AmazonEKSWorkerNodePolicy y AmazonEC2ContainerRegistryReadOnly adjuntas.

Nota: La política administrada de Amazon AmazonEKS_CNI_Policy debe adjuntarse al rol de instancia del nodo o a un rol diferente que se asigne a la cuenta de servicio de Kubernetes del nodo de AWS. Se recomienda asignar la política al rol asociado a la cuenta de servicio de Kubernetes en lugar de asignarla al rol.

Confirmar 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 grupo de seguridad del nodo de trabajo estén configurados con la configuración recomendada para el tráfico entrante y saliente.

Confirmar que las subredes de Amazon VPC del nodo de trabajo tengan direcciones IP disponibles

Si la Amazon VPC se está quedando sin direcciones IP, puede asociar un CIDR secundario a su VPC de Amazon existente. Para obtener más información, consulte Aumentar las direcciones IP disponibles para su Amazon VPC.