Desidero utilizzare un Amazon Elastic Kubernetes Service (Amazon EKS) ottimizzato per Amazon Elastic Kubernetes Service (Amazon EKS) per configurare i dati utente. Quando provo a scrivere i dati utente per il modello di avvio, ricevo il messaggio di errore "Instances failed to join the kubernetes cluster".
Risoluzione
Se includi dati utente errati nel modello di avvio, potresti ricevere il seguente messaggio di errore:
"Instances failed to join the kubernetes cluster."
L'AMI Bottlerocket unisce i dati utente con i dati utente di Amazon EKS in modo che i nodi possano unirsi al cluster. La configurazione che includi nei dati utente sovrascrive le impostazioni configurate da Amazon EKS. Per ulteriori informazioni sulle impostazioni supportate, consulta Settings reference (Riferimento alle impostazioni) sul sito web Bottlerocket.
I dati utente di Amazon Elastic Compute Cloud (Amazon EC2) nei modelli di avvio utilizzati con i gruppi di nodi gestiti basati sull'AMI Bottlerocket devono essere in formato TOML. Per ulteriori informazioni, consulta TOML sul sito web GitHub. Amazon EKS non supporta tutti i formati TOML validi. Per ulteriori informazioni, consulta Dati utente di Amazon EC2.
I dati utente di EC2 devono includere anche le seguenti impostazioni Kubernetes:
- settings.kubernetes.cluster-certificate
- settings.kubernetes.api-server
- settings.kubernetes.cluster-name
Aggiungi il seguente esempio di configurazione dei dati utente con le impostazioni precedenti nella sezione dei dati utente del modello di avvio:
[settings.kubernetes]
api-server = "https://abc.def.us-east-1.eks.amazonaws.com"
cluster-certificate = "TkQgQ0VSVElGSUNBVEUtLS0tLQo="
cluster-name = "eks-dev"
Nota: sostituisci us-east-1 con la Regione AWS in cui distribuisci il tuo cluster Amazon EKS.
Esempio di dati utente con impostazioni node-labels e 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: sostituisci cluster-name con il nome del tuo cluster e us-east-1 con la tua Regione.
Puoi anche eseguire questo comando eksctl per generare un file userdata.toml di base per il 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'
Nota: sostituisci cluster-name con il nome del tuo cluster e us-east-1 con la tua Regione. L'output del comando include un esempio di userdata già scritto.
Informazioni correlate
Bottlerocket file directory (Directory di file Bottlerocket) sul sito web GitHub