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