Direkt zum Inhalt

Wie behebe ich den Fehler, den ich erhalte, wenn ich Benutzerdaten für eine Bottlerocket AMI-basierte verwaltete Knotengruppe in Amazon EKS schreibe?

Lesedauer: 2 Minute
0

Ich möchte ein für Amazon Elastic Kubernetes Service (Amazon EKS) optimiertes Bottlerocket Amazon Machine Image (AMI) verwenden, um Benutzerdaten zu konfigurieren. Wenn ich versuche, Benutzerdaten für die Startvorlage zu schreiben, erhalte ich die Fehlermeldung „Instances failed to join the kubernetes cluster.“ (Instances konnten dem Kubernetes-Cluster nicht beitreten).

Lösung

Wenn du falsche Benutzerdaten in deine Startvorlage aufnimmst, wird möglicherweise die folgende Fehlermeldung angezeigt:

„Instances failed to join the kubernetes cluster.“

Das Bottlerocket-AMI führt die Benutzerdaten mit den Amazon EKS-Benutzerdaten zusammen, sodass die Knoten dem Cluster beitreten können. Die Konfiguration, die du in deine Benutzerdaten aufnimmst, überschreibt die Einstellungen, die Amazon EKS konfiguriert. Weitere Informationen zu den unterstützten Einstellungen findest du unter Einstellungsreferenz auf der Bottlerocket-Website.

Die Amazon Elastic Compute Cloud (Amazon EC2)-Benutzerdaten in den Startvorlagen, die du mit den Bottlerocket AMI-basierten verwalteten Knotengruppen verwendest, müssen im TOML-Format vorliegen. Weitere Informationen findest du unter TOML auf der GitHub-Website. Amazon EKS unterstützt nicht alle gültigen TOML-Formate. Weitere Informationen findest du unter Amazon EC2-Benutzerdaten.

Die EC2-Benutzerdaten müssen auch die folgenden Kubernetes-Einstellungen enthalten:

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

Füge die folgende Beispiel-Benutzerdatenkonfiguration mit den vorherigen Einstellungen im Abschnitt „Benutzerdaten“ deiner Startvorlage hinzu:

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

Hinweis: Ersetze us-east-1 durch die AWS-Region, in der du deinen Amazon EKS-Cluster bereitstellst.

Beispiel für Benutzerdaten mit node-labels- und node-taints-Einstellungen:

[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"

Hinweis: Ersetze cluster-name durch den Namen deines Clusters und us-east-1 durch deine Region.

Du kannst auch den folgenden eksctl-Befehl ausführen, um eine einfache userdata.toml-Datei für deinen Cluster zu generieren:

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

Hinweis: Ersetze cluster-name durch den Namen deines Clusters und us-east-1 durch deine Region. Die Ausgabe des Befehls enthält ein vorgefertigtes Beispiel für userdata.

Ähnliche Informationen

Bottlerocket-Dateiverzeichnis auf der GitHub-Website

AWS OFFICIALAktualisiert vor 3 Monaten