Passer au contenu

Comment résoudre l'erreur qui s’affiche lorsque j'écris des données utilisateur pour un groupe de nœuds gérés basé sur l’AMI Bottlerocket dans Amazon EKS ?

Lecture de 3 minute(s)
0

Je souhaite utiliser une Amazon Machine Image (AMI) optimisée pour Amazon Elastic Kubernetes Service (Amazon EKS) pour configurer les données utilisateur. Lorsque j'essaie d'écrire des données utilisateur pour le modèle de lancement, le message d’erreur « Instances failed to join the kubernetes cluster » s’affiche.

Résolution

Si vous incluez des données utilisateur incorrectes dans votre modèle de lancement, le message d'erreur suivant peut s'afficher :

« Instances failed to join the kubernetes cluster. »

L'AMI Bottlerocket fusionne les données utilisateur avec les données utilisateur d’Amazon EKS afin que les nœuds puissent rejoindre le cluster. La configuration que vous incluez dans vos données utilisateur remplace les paramètres configurés par Amazon EKS. Pour plus d'informations sur les paramètres pris en charge, consultez la section Référence des paramètres sur le site Web de Bottlerocket.

Les données utilisateur d'Amazon Elastic Compute Cloud (Amazon EC2) figurant dans les modèles de lancement que vous utilisez avec les groupes de nœuds gérés basés sur l’AMI Bottlerocket doivent être au format TOML. Pour plus d’informations, consultez la page TOML sur le site Web de GitHub. Amazon EKS ne prend pas en charge tous les formats TOML valides. Pour en savoir plus, consultez la section Données utilisateur Amazon EC2.

Les données utilisateur EC2 doivent également inclure les paramètres Kubernetes suivants :

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

Ajoutez l'exemple de configuration des données utilisateur suivant avec les paramètres précédents dans la section Données utilisateur de votre modèle de lancement :

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

Remarque : Remplacez us-east-1 par la région AWS dans laquelle vous déployez votre cluster Amazon EKS.

Exemple de données utilisateur avec les paramètres node-labels et 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"

Remarque : Remplacez cluster-name par le nom de votre cluster et us-east-1 par votre région.

Vous pouvez également exécuter la commande eksctl suivante pour générer un fichier userdata.toml de base pour votre cluster :

~ 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'

Remarque : Remplacez cluster-name par le nom de votre cluster et us-east-1 par votre région. La sortie de la commande inclut un exemple de données utilisateur préécrit.

Informations connexes

Répertoire de fichiers Bottlerocket sur le site de GitHub

AWS OFFICIELA mis à jour il y a 2 mois