Saltar al contenido

¿Cómo soluciono el error que recibo al escribir datos de usuario para un grupo de nodos administrados basado en AMI de Bottlerocket en Amazon EKS?

3 minutos de lectura
0

Quiero usar una imagen de máquina de Amazon (AMI) de Bottlerocket optimizada para Amazon Elastic Kubernetes Service (Amazon EKS) para configurar los datos de usuario. Cuando intento escribir datos de usuario para la plantilla de inicio, recibo el error «Instances failed to join the kubernetes cluster».

Resolución

Si incluyes datos de usuario incorrectos en la plantilla de inicio, es posible que recibas el siguiente mensaje de error:

«Instances failed to join the kubernetes cluster».

La AMI de Bottlerocket combina los datos de usuario con los datos de usuario de Amazon EKS para que los nodos puedan unirse al clúster. La configuración que incluyes en los datos de usuario anula la configuración que Amazon EKS configura. Para obtener más información sobre los ajustes compatibles, consulta la Settings reference (Referencia de configuración) en el sitio web de Bottlerocket.

Los datos de usuario de Amazon Elastic Compute Cloud (Amazon EC2) de las plantillas de inicio que utilices con los grupos de nodos administrados basados en la AMI de Bottlerocket deben estar en formato TOML. Para obtener más información, consulta TOML en el sitio web de GitHub. Amazon EKS no admite todos los formatos TOML válidos. Para obtener más información, consulta Datos de usuario de Amazon EC2.

Los datos de usuario de EC2 también deben incluir la siguiente configuración de Kubernetes:

  • settings.kubernetes.cluster-certificate
  • settings.kubernetes.api-server
  • settings.kubernetes.cluster-name

Agrega el siguiente ejemplo de configuración de datos de usuario con la configuración anterior en la sección de datos de usuario de la plantilla de inicio:

[settings.kubernetes]
api-server = "https://abc.def.us-east-1.eks.amazonaws.com"
cluster-certificate = "TkQgQ0VSVElGSUNBVEUtLS0tLQo="
cluster-name = "eks-dev"

Nota: Sustituye us-east-1 por la región de AWS en la que despliegas el clúster de Amazon EKS.

Ejemplo de datos de usuario con configuraciones de node-labels y node-taints:

[settings.kubernetes]
api-server = "https://abc.def.us-east-1.eks.amazonaws.com"
cluster-certificate = "TkQgQ0VSVElGSUNBVEUtLS0tLQo="
cluster-name = "eks-dev"

[settings.kubernetes.node-labels]
"label1" = "foo"
"label2" = "bar"

[settings.kubernetes.node-taints]
"dedicated" = "airflow:NoSchedule"

Nota: Sustituye cluster-name por el nombre de tu clúster y us-east-1 por tu región.

También puedes ejecutar el siguiente comando eksctl para generar un archivo userdata.toml básico para tu clúster:

~ eksctl get cluster --region us-east-1 --name cluster-name -o json | jq --raw-output '.[] | "[settings.kubernetes]\napi-server = \"" + .Endpoint + "\"\ncluster-certificate =\"" + .CertificateAuthority.Data + "\"\ncluster-name = " + .Name'

Nota: Sustituye cluster-name por el nombre de tu clúster y us-east-1 por tu región. El resultado del comando incluye un ejemplo de datos de usuario escrito previamente.

Información relacionada

Bottlerocket file directory (Directorio de archivos de Bottlerocket) en el sitio web de GitHub

OFICIAL DE AWSActualizada hace 2 meses