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

11 minutos de lectura
0

Mis nodos de trabajo no se unen a mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS).

Descripción breve

Para que sus nodos de trabajo se unan a su clúster de Amazon EKS, siga estos pasos:

  • Utilice el runbook de AWS Systems Manager para identificar problemas habituales.
  • Confirme que su Amazon Virtual Private Cloud (Amazon VPC) sea compatible con DNS.
  • Confirme que los nodos de trabajo de su perfil de instancia tengan los permisos correctos.
  • Configure los datos de usuario de sus nodos de trabajo.
  • Compruebe que las redes estén configuradas correctamente para las subredes de Amazon VPC.
  • Compruebe que los nodos de trabajo estén en la misma VPC que el clúster de EKS.
  • Actualice el ConfigMap de aws-auth con el NodeInstanceRole de sus nodos de trabajo.
  • Cumpla con los requisitos del grupo de seguridad de sus nodos de trabajo.
  • Defina las etiquetas para sus nodos de trabajo.
  • Confirme que sus nodos de trabajo lleguen al punto de conexión del servidor API de su clúster de EKS.
  • Confirme que el rol del clúster esté configurado correctamente para su clúster de EKS.
  • Para las regiones de AWS que admiten puntos de conexión de AWS Security Token Service (AWS STS), confirme que el punto de conexión regional de AWS STS esté activado.
  • Asegúrese de que la AMI esté configurada para funcionar con Amazon EKS e incluya los componentes necesarios.
  • Utilice SSH para conectarse a la instancia de Amazon Elastic Compute Cloud (Amazon EC2) de su nodo de trabajo y, a continuación, busque errores en los registros del agente de kubelet.
  • Utilice el script del recopilador de registros de Amazon EKS para solucionar errores.

**Importante:**Los siguientes pasos no incluyen las configuraciones necesarias para registrar los nodos de trabajo en entornos en los que no se cumplen los siguientes criterios:

  • En la VPC del clúster, el parámetro de configuración domain-name-servers está configurado como AmazonProvidedDNS. Para obtener más información, consulte Conjuntos de opciones de DHCP.
  • Está utilizando una imagen de máquina de Amazon (AMI) con Linux optimizada para Amazon EKS para lanzar sus nodos de trabajo.
    **Nota:**La AMI de Linux optimizada para Amazon EKS proporciona todas las configuraciones necesarias, incluido un script de arranque /etc/eks/bootstrap.sh, para registrar los nodos de trabajo en su clúster.

Solución

Utilice el runbook 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 su clúster.

Importante: Para que la automatización funcione, los nodos de trabajo deben tener permiso para acceder a Systems Manager y tener Systems Manager en ejecución. Para conceder este permiso, adjunte la política AmazonSSMManagedInstanceCore al rol de AWS Identity and Access Management (IAM). Este es el rol de IAM que corresponde a su perfil de instancia de Amazon EC2. Esta es la configuración predeterminada para los grupos de nodos gestionados de Amazon EKS que se crean mediante eksctl. Utilice el siguiente formato para el nombre del clúster:[-a-zA-Z0-9]{1,100}$.

  1. Abra el runbook.
  2. Compruebe que la región de AWS en la consola de administración de AWS esté configurada en la misma región que su clúster.
    Nota: Consulte la sección Detalles del documento del runbook para obtener más información sobre este.
  3. En la sección Parámetros de entrada, especifique el nombre del clúster en el campo ClusterName y el ID de instancia de Amazon EC2 en el campo WorkerID.
  4. (Opcional) En el campo AutomationAssumeRole, especifique el rol de IAM para permitir que Systems Manager realice acciones. Si no lo especifica, se utilizarán los permisos de IAM de su entidad de IAM actual para realizar las acciones del runbook.
  5. Elija Ejecutar.
  6. Consulte la sección Resultados para ver por qué su nodo de trabajo no se une al clúster y las medidas que puede tomar para resolverlo.

Confirmar que la Amazon VPC es compatible con DNS

Confirme que la Amazon VPC de su clúster de EKS tenga activados los nombres de host DNS y la resolución de DNS.

Para comprobar estos atributos y activarlos, siga estos pasos:

  1. Abra la consola de Amazon VPC.
  2. En el panel de navegación, seleccione Sus VPC.
  3. Seleccione la VPC que desee editar.
  4. En la pestaña Detalles, compruebe si los nombres de host DNS y la resolución de DNS están activados.
  5. Si no están activados, seleccione Habilitar para ambos atributos.
  6. Elija Guardar cambios.

Para obtener más información, consulte Ver y actualizar los atributos de DNS de su VPC.

Confirmar que los nodos de trabajo de su perfil de instancia tengan los permisos correctos

Adjunte las siguientes políticas administradas por AWS al rol asociado a los nodos de trabajo de su perfil de instancia:

  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonEC2ContainerRegistryReadOnly

Para adjuntar políticas a los roles, consulte Adición de permisos de identidad de IAM (consola).

Configurar los datos de usuario para sus nodos de trabajo

Nota: Si usa AWS CloudFormation para lanzar sus nodos de trabajo, no tiene que configurar los datos de usuario de sus nodos de trabajo. En lugar de ello, siga las instrucciones para Lanzar nodos autoadministrados de Amazon Linux en la consola de administración de AWS.

Si lanza sus nodos de trabajo mediante grupos de nodos gestionados, no tendrá que configurar ningún dato de usuario con las AMI de Amazon Linux optimizadas para Amazon EKS. Solo deberá configurar los datos de usuario si utiliza AMI personalizadas para lanzar sus nodos de trabajo a través de grupos de nodos gestionados.

Si utiliza grupos de nodos gestionados por Amazon con una plantilla de lanzamiento personalizada, especifique los datos de usuario correctos en la plantilla de lanzamiento. Si el clúster de Amazon EKS es un clúster totalmente privado que utiliza puntos de conexión de VPC para realizar conexiones, especifique lo siguiente en los datos de usuario:

  • certificate-authority
  • api-server-endpoint
  • IP del clúster DNS

Si es necesario, facilite los datos de usuario para proporcionar argumentos al archivo bootstrap.sh incluido con una AMI de Linux/Bottlerocket optimizada para Amazon EKS.

Para configurar los datos de usuario de sus nodos de trabajo, especifique los datos de usuario al lanzar las instancias de Amazon EC2.

Por ejemplo, si utiliza una herramienta de terceros, como Terraform, actualice el campo Datos de usuario para iniciar sus nodos de trabajo de EKS:

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

Importante:

  • Sustituya ${ClusterName} por el nombre de su clúster de EKS.
  • Sustituya ${BootstrapArguments} por valores de arranque adicionales o deje esta propiedad en blanco.

Comprobar que las redes estén configuradas correctamente para las subredes de Amazon VPC

  • Si utiliza una puerta de enlace de Internet, asegúrese de que esté conectada correctamente a la tabla de enrutamiento sin ningún agujero negro.
  • Si utiliza una puerta de enlace NAT, asegúrese de que esté configurada correctamente en una subred pública. Además, compruebe que la tabla de enrutamiento no contenga ningún agujero negro.
  • Si utiliza puntos de conexión privados de VPC para un clúster totalmente privado, asegúrese de tener los siguientes puntos de conexión:
    com.amazonaws.region.ec2 (punto de conexión de interfaz)
    com.amazonaws.region.ecr.api (punto de conexión de interfaz)
    com.amazonaws.region.ecr.dkr (punto de conexión de interfaz)
    com.amazonaws.region.s3 (punto de conexión de puerta de enlace)
    com.amazonaws.region.sts (punto de conexión de interfaz)
  • Los pods que se configuran con los roles de IAM para las cuentas de servicio adquieren las credenciales de una llamada a la API de AWS Security Token Service (AWS STS). Si no hay acceso saliente a Internet, debe crear y usar un punto de conexión de AWS STS VPC en su VPC.
  • El grupo de seguridad del punto de conexión de VPC debe tener una regla de entrada que permita el tráfico desde el puerto 443. Para obtener más información, consulte Controlar el tráfico hacia los recursos mediante grupos de seguridad.
  • Asegúrese de que la política vinculada al punto de conexión de VPC tenga los permisos necesarios.

Nota: Si utiliza cualquier otro servicio de AWS, debe crear esos puntos de conexión. Para ver algunos servicios y puntos de conexión que se utilizan con frecuencia, consulte Requisitos del clúster privado. Además, puede crear un servicio de punto de conexión en función de su caso de uso.

Comprobar que los nodos de trabajo estén en la misma Amazon VPC que el clúster de EKS

  1. Abra la consola de Amazon EKS.
  2. Elija Clústeres y, a continuación, seleccione su clúster.
  3. En la sección Redes, identifique las subredes asociadas a su clúster.

Nota: Puede configurar diferentes subredes para lanzar sus nodos de trabajo. Las subredes deben existir en la misma Amazon VPC y estar etiquetadas adecuadamente. Amazon EKS solo administra automáticamente las etiquetas para las subredes que se configuran durante la creación del clúster. Por lo tanto, asegúrese de etiquetar las subredes de forma adecuada.

Para obtener más información, consulte Requisitos y consideraciones de subred.

Actualizar el ConfigMap de aws-auth con el NodeInstanceRole de los nodos de trabajo

Compruebe que el ConfigMap de aws-auth esté configurado correctamente con el rol de IAM del nodo de trabajo y no con el perfil de instancia.

Para comprobar el archivo ConfigMap de aws-auth, ejecute el siguiente comando:

kubectl describe configmap -n kube-system aws-auth

Si el ConfigMap de aws-auth no está configurado correctamente, aparecerá el siguiente error:

571 reflector.go:153\] k8s.io/kubernetes/pkg/kubelet/kubelet.go:458 : Failed to list \*v1.Node: Unauthorized

Cumplir los requisitos del grupo de seguridad de los nodos 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 una configuración recomendada para el tráfico entrante y saliente. Además, confirme que sus reglas de ACL de red personalizadas estén configuradas para permitir el tráfico hacia y desde 0.0.0.0/0 para los puertos 80, 443 y 1025-65535.

Definición de las etiquetas de sus nodos de trabajo

Para la propiedad Tag de sus nodos de trabajo, configure Key como kubernetes.io/cluster/clusterName y configure Value como owned.

Para obtener más información, consulte Requisitos y consideraciones de VPC.

Confirmar que los nodos de trabajo lleguen al punto de conexión del servidor API del clúster de EKS

Tenga en cuenta los siguientes factores:

  • Puede lanzar nodos de trabajo en una subred que esté asociada a una tabla de enrutamiento que dirija al punto de conexión de la API a través de una puerta de enlace de Internet o NAT.
  • Si lanza sus nodos de trabajo en una red privada restringida, confirme que sus nodos de trabajo lleguen al punto de conexión del servidor de la API de EKS.
  • Si lanza los nodos de trabajo con una Amazon VPC que usa un DNS personalizado en lugar de AmazonProvidedDNS, es posible que no resuelvan el punto de conexión. Se produce un punto de conexión sin resolver cuando se desactiva el acceso público al punto de conexión y solo se activa el acceso privado. Para obtener más información, consulte Activar la resolución de DNS para los puntos de conexión del clúster de Amazon EKS.

Confirmar que el rol del clúster esté configurado correctamente para su clúster

El clúster debe tener el rol de clúster con el permiso mínimo de AmazonEKSClusterPolicy. Además, la relación de confianza de su clúster debe permitir el servicio eks.amazonaws.com para sts:AssumeRole.

Ejemplo:

{
  "Version": "2012-10-17",
  "Statement": \[
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  \]
}

Para obtener más información, consulte Rol de IAM del clúster de Amazon EKS.

Confirmar que los puntos de conexión STS regionales estén activados

Si el clúster se encuentra en una región que admite puntos de conexión STS, active el punto de conexión STS regional para autenticar el kubelet. A continuación, el kubelet puede crear el objeto de nodo.

Asegurarse de que la AMI esté configurada para funcionar con EKS e incluya los componentes necesarios

Si la AMI utilizada para los nodos de trabajo no es la AMI de Amazon Linux optimizadas para Amazon EKS, confirme que los siguientes componentes de Kubernetes estén en estado activo:

  • kubelet
  • Autenticador de AWS IAM
  • Docker (Amazon EKS versión 1.23 y anteriores)
  • containerd

Conectarse a la instancia del nodo de trabajo de EKS con SSH y comprobar los registros del agente de kubelet

El agente de kubelet está configurado como un servicio systemd.

1.    Para validar sus registros de kubelet, ejecute el siguiente comando:

journalctl -f -u kubelet

2.    Para resolver cualquier problema, consulte la guía de resolución de problemas de Amazon EKS para ver los errores más comunes.

Utilizar el script del recopilador de registros de Amazon EKS para solucionar errores

Puede utilizar los archivos de registro y los registros del sistema operativo para solucionar los problemas en su Amazon EKS.

Debe usar SSH para conectarse al nodo de trabajo con el problema y ejecutar el siguiente script:

curl -O https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/log-collector-script/linux/eks-log-collector.sh

sudo bash eks-log-collector.sh

Información relacionada

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

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año