Support für Startvorlagen - Amazon EKS

Support für Startvorlagen

-verwaltete Knotengruppen werden immer mit einer Amazon EC2 Auto Scaling Gruppe -Startvorlage bereitgestellt. Wenn Sie keine eigene Startvorlage angeben, die beim Erstellen einer verwalteten Knotengruppe verwendet werden soll, erstellt die Amazon EKS-API eine Startvorlage mit Standardwerten in Ihrem Konto. Das Erstellen einer eigenen Startvorlage und einer verwalteten Knotengruppe aus dieser Vorlage hat den Vorteil, dass Sie beim Bereitstellen von verwalteten Knoten eine größere Flexibilität und Anpassung bieten können, als in der Standardstartvorlage bereitgestellt wird. Für die höchste Anpassungsstufe können Sie verwaltete Knoten mithilfe Ihrer eigenen Startvorlage und einem benutzerdefinierten AMI bereitstellen.

Nachdem Sie eine verwaltete Knotengruppe mit Ihrer eigenen Startvorlage bereitgestellt haben, können Sie sie dann mit einer anderen Version derselben Startvorlage aktualisieren. Wenn Sie Ihre Knotengruppe auf eine andere Version Ihrer Startvorlage aktualisieren, werden alle Knoten in der Gruppe recycelt, damit sie der neuen Konfiguration der angegebenen Startvorlagenversion entsprechen. Vorhandene Knotengruppen, die keine benutzerdefinierte Startvorlage verwenden, können nicht direkt aktualisiert werden. Stattdessen müssen Sie eine neue Knotengruppe mit einer benutzerdefinierten Startvorlage erstellen.

Grundlagen der Konfiguration der Vorlage starten

Sie können eine Amazon EC2 Auto Scaling Startvorlage mit dem AWS Management Console, AWS CLI oder ein AWS-SDK. Weitere Informationen finden Sie unter Erstellen einer Startvorlage für eine Auto-Scaling-Group im Benutzerhandbuch. Einige der Einstellungen in einer Startvorlage ähneln den Einstellungen, die für die Konfiguration verwalteter Knoten verwendet werden. Beim Bereitstellen oder Aktualisieren einer Knotengruppe mit einer Startvorlage müssen einige Einstellungen in der Knotengruppenkonfiguration oder in der Startvorlage angegeben werden, jedoch nicht in beiden. Wenn eine Einstellung vorhanden ist, wo sie nicht sollte, schlagen Vorgänge wie das Erstellen oder Aktualisieren einer Knotengruppe fehl.

In der folgenden Tabelle sind die Einstellungen aufgeführt, die in einer Startvorlage verboten sind und welche ähnlichen Einstellungen (falls vorhanden) in der Konfiguration der verwalteten Knotengruppe erforderlich sind. Die aufgelisteten Einstellungen sind die Einstellungen, die in der Konsole angezeigt werden. Sie haben möglicherweise ähnliche, aber unterschiedliche Namen in derAWS CLIund SDK.

Startvorlage Amazon EKS-Knotengruppenkonfiguration
IAM-Instance-ProfilUNDERErweiterte Details IAM-Knoten RoleUNDERKnotengruppenkonfigurationauf derKnotengruppeangezeigten
SubnetzUNDERNetzwerkschnittstellen(Hinzufügen einer Netzwerkschnittstelle) SubnetzeUNDERNetzwerkkonfiguration der Knotengruppeauf derNetzwerk angebenangezeigten
Verhalten beim HerunterfahrenundStop - Ruhezustand VerhaltenUNDERErweiterte Detailsaus. Beibehalten von Standard-Nicht in die Startvorlageneinstellung einschließenin der Startvorlage für beide Einstellungen. Keine Entsprechung Amazon EKS muss den Instance-Lebenszyklus steuern, nicht die Gruppe Auto Scaling.

In der folgenden Tabelle sind die Einstellungen aufgeführt, die in einer Konfiguration mit verwalteten Knoten verboten sind und welche ähnlichen Einstellungen (falls vorhanden) in einer Startvorlage erforderlich sind. Die aufgelisteten Einstellungen sind die Einstellungen, die in der Konsole angezeigt werden. Möglicherweise haben sie ähnliche Namen in derAWS CLIund SDK.

Konfiguration der Amazon EKS-Knotengruppe — Verboten Startvorlage

(Nur wenn Sie ein benutzerdefiniertes AMI in einer Startvorlage angegeben haben)AMI -TypUNDERRechenkonfiguration der KnotengruppeinFestlegen der Computing- und SkalierungskonfigurationSeite — Konsole wird angezeigtAngeben in Startvorlageund die angegebene AMI -ID.

Wenn in der Startvorlage kein AMI -Typ angegeben wurde, können Sie in der Knotengruppenkonfiguration ein AMI auswählen.

AMIUNDERInhalt der Startvorlage— Sie müssen eine ID angeben, wenn Sie eine der folgenden Anforderungen haben:

DatenträgergrößeUNDERRechenkonfiguration der KnotengruppeinFestlegen der Computing- und SkalierungskonfigurationSeite — Konsole wird angezeigtAngeben in Startvorlageaus. GrößeUNDERSpeicher (Volumes)(Hinzufügen eines neuen Volumes) enthalten. Sie müssen dies in der Startvorlage angeben.
SSHkey pairUNDERKnotengruppenkonfigurationauf derNetzwerk angebenSeite — Die Konsole zeigt den Schlüssel an, der in der Startvorlage angegeben wurde oderNicht in der Startvorlage angegebenaus. SchlüsselpaarnameUNDERSchlüsselpaar (Login)aus.
Bei Verwendung einer Startvorlage können Sie keine Quellsicherheitsgruppen angeben, für die der Remotezugriff zulässig ist. SicherheitsgruppenUNDERNetwork settings (Netzwerkeinstellungen)für die Instanz oderSicherheitsgruppenUNDERNetzwerkschnittstellen(Hinzufügen einer Netzwerkschnittstelle), aber nicht beides. Weitere Informationen finden Sie unter Benutzerdefinierte Sicherheitsgruppen.
Anmerkung
  • Wenn Sie eine Knotengruppe mithilfe einer Startvorlage bereitstellen, können Sie Null oder eineInstance-TypUNDERInhalt der Startvorlagein einer Startvorlageoderkönnen Sie 0-20 Instanztypen fürInstance-Typenauf derFestlegen der Computing- und Skalierungskonfigurationin der Konsole oder mit anderen Tools, die die Amazon EKS-API verwenden. Wenn Sie in einer Startvorlage einen Instanztyp angeben und diese Startvorlage zum Bereitstellen Ihrer Knotengruppe verwenden, können Sie keine Instanztypen in der Konsole oder mit anderen Tools angeben, die die Amazon EKS-API verwenden. Wenn Sie für eine Startvorlage, in der Konsole oder mit anderen Tools, die die Amazon EKS-API verwenden, keinen Instance-Typ angeben, wird diet3.mediumStandardmäßig wird der Instance-Typ verwendet. Wenn Ihre Knotengruppe den Spot-Kapazitätstyp verwendet, empfehlen wir, mehrere Instanztypen über die Konsole anzugeben. Weitere Informationen finden Sie unter Kapazitätstypen für verwaltete Knotengruppen.

  • Wenn Container, die Sie für die Knotengruppe bereitstellen, den Instanz-Metadaten-Dienst Version 2 verwenden, stellen Sie sicher, dass Sie die-Hop-Limits für Metadatenauf2in Ihrer Startvorlage. Weitere Informationen finden Sie unter Instance-Metadaten und Benutzerdaten im Amazon EC2-Benutzerhandbuch für Linux-Instances. Wenn Sie eine verwaltete Knotengruppe bereitstellen, ohne eine benutzerdefinierte Startvorlage zu verwenden, wird dieser Wert automatisch für die Knotengruppe in der Standardstartvorlage festgelegt.

Markieren von Amazon EC2 Instances

Sie können dasTagSpecification-Parameter einer Startvorlage verwenden, um anzugeben, welche Tags auf Amazon EC2 Instances in Ihrer Knotengruppe angewendet werden sollen. Die IAM-Entität, die dieCreateNodegroupoderUpdateNodegroupVersion-APIs müssen über Berechtigungen fürec2:RunInstancesundec2:CreateTags, und die Tags müssen der Startvorlage hinzugefügt werden.

Benutzerdefinierte Sicherheitsgruppen

Sie können eine Startvorlage verwenden, um benutzerdefinierte Amazon EC2 anzugeben-SicherheitsgruppenAuf Instances in Ihrer Knotengruppe anwenden. Dies kann entweder im Parameter für Sicherheitsgruppen auf Instanzebene oder als Teil der Konfigurationsparameter der Netzwerkschnittstelle sein. Sie können eine Instance nicht über eine Startvorlage starten, die Sicherheitsgruppen und eine Netzwerkschnittstelle angibt. Beachten Sie die folgenden Bedingungen, die für die Verwendung benutzerdefinierter Sicherheitsgruppen mit verwalteten Knotengruppen gelten:

  • Amazon EKS erlaubt nur Launch-Vorlagen mit einer einzigen Netzwerkschnittstellenspezifikation.

  • Standardmäßig wendet Amazon EKS dieCluster-Sicherheitsgruppezu den Instanzen in Ihrer Knotengruppe hinzu, um die Kommunikation zwischen Knoten und der Steuerungsebene zu erleichtern. Wenn Sie benutzerdefinierte Sicherheitsgruppen in der Startvorlage mit einer der oben genannten Optionen angeben, fügt Amazon EKS die Cluster-Sicherheitsgruppe nicht hinzu. Daher müssen Sie sicherstellen, dass die eingehenden und ausgehenden Regeln Ihrer Sicherheitsgruppen die Kommunikation mit dem Clusterendpunkt ermöglichen. Falsche Sicherheitsgruppenregeln führen dazu, dass Workerknoten dem Cluster nicht beitreten können. Informationen zu den Sicherheitsgruppenregeln, die Sie anwenden müssen, finden Sie unterÜberlegungen zur Amazon-EKS-Sicherheitsgruppeaus.

  • Wenn Sie SSH-Zugriff auf die Instanzen in Ihrer Knotengruppe benötigen, müssen Sie eine Sicherheitsgruppe einschließen, die diesen Zugriff zulässt.

Amazon EC2 Benutzerdaten

Sie können Amazon EC2 Benutzerdaten in Ihrer Startvorlage mithilfe voncloud-init, wenn Sie Ihre Instances starten. Weitere Informationen finden Sie in der cloud-init-Dokumentation. Ihre Benutzerdaten können verwendet werden, um allgemeine Konfigurationsvorgänge durchzuführen. Dieser Filter umfasst die folgenden Optionen:

Amazon EC2 Benutzerdaten in Startvorlagen, die mit verwalteten Knotengruppen verwendet werden, müssen in derMehrteilige MIME-Archivdatei. Dies liegt daran, dass Ihre Benutzerdaten mit Amazon EKS-Benutzerdaten zusammengeführt werden, die für Knoten erforderlich sind, um dem Cluster beizutreten. Geben Sie in den Benutzerdaten keine Befehle an, die gestartet oder geändert werdenkubelet, da dies im Rahmen der von Amazon EKS zusammengeführten Benutzerdaten durchgeführt wird. Bestimmtekubelet-Parameter, z. B. das Festlegen von Beschriftungen auf Knoten, können direkt über die API für verwaltete Knotengruppen konfiguriert werden.

Anmerkung

Wenn Sie eine Notwendigkeit für fortgeschrittenekubelet-Anpassung, einschließlich manuelles Starten oder Übergeben benutzerdefinierter Konfigurationsparameter, sieheAngeben eines AMIWeitere Informationen finden Sie unter. Amazon EKS führt Benutzerdaten nicht zusammen, wenn eine benutzerdefinierte AMI -ID in einer Startvorlage angegeben wird.

Sie können mehrere Benutzerdatenblöcke in einer einzelnen mehrteiligen MIME-Datei kombinieren. So können Sie beispielsweise einen Cloud-Boothook, der den Docker-Daemon konfiguriert, mit einem Benutzerdaten-Shell-Skript kombinieren, das ein benutzerdefiniertes Paket installiert. Eine mehrteilige MIME-Datei umfasst folgende Komponenten:

  • Deklaration von Inhaltstyp und Teilgrenze – Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • Deklaration der MIME-Version – MIME-Version: 1.0

  • Ein oder mehrere Benutzerdatenblöcke mit folgenden Komponenten:

    • Eröffnungsgrenze, die den Beginn eines Benutzerdatenblocks signalisiert – --==BOUNDARY==

    • Die Inhaltstypdeklaration für den Block: Content-Type: text/cloud-config; charset="us-ascii". Weitere Informationen zu Inhaltstypen finden Sie in der Cloud-Init-Dokumentation.

    • Inhalt der Benutzerdaten, beispielsweise eine Liste mit Shell-Befehlen oder cloud-init-Anweisungen

    • Abschlussgrenze, die das Ende der mehrteiligen MIME-Datei signalisiert: --==BOUNDARY==--

    Im Folgenden finden Sie ein Beispiel für eine mehrteilige MIME-Datei, die Sie verwenden können, um Ihre eigene zu erstellen.

    MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash echo "Running custom user data script" --==MYBOUNDARY==--

Angeben eines AMI

Wenn Sie eine der folgenden Anforderungen haben, geben Sie eine AMI -ID imimageId-Startvorlage. Wählen Sie die Anforderung, die Sie für zusätzliche Informationen haben.

Sie können die Argumente an diebootstrap.shdurch Verwendung voneksctlohne Angabe einer Startvorlage oder durch Angabe der Informationen im Abschnitt „Benutzerdaten“ einer Startvorlage.

Eksctl without specifying a launch template

Erstellen Sie eine Datei mit dem Namen my-nodegroup.yaml und dem folgenden Inhalt. In diesem Beispiel wird eine Knotengruppe erstellt, die eine zusätzlichekubeletArgument, um ein benutzerdefiniertesmax pods-Wert mit dembootstrap.shSkript, das im Amazon EKS optimierten AMI enthalten ist. Weitere Informationen finden Sie unter der Datei bootstrap.sh auf GitHub.

Ersetzen Sie alle<example values>(einschließlich<>) mit eigenen Werten.

--- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: <my-cluster-name> region: <us-west-2> managedNodeGroups: - name: <my-nodegroup ami: <ami-0e6af48ea232fbdb1> instanceType: m5.large> privateNetworking: true disableIMDSv1: true labels: { <x86-al2-specified-mng> } overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh <my-cluster-name> \ --kubelet-extra-args <'--max-pods=40'> \ --b64-cluster-ca <certificateAuthority> \ --apiserver-endpoint <endpoint> \ --dns-cluster-ip <serivceIpv4Cidr>.10 \ --use-max-pods false

Das einzige erforderliche Argument im vorherigen Beispiel ist der Clustername (my-cluster-name) enthalten. Durch Festlegen der Werte für--apiserver-endpoint,--b64-cluster-ca, und--dns-cluster-ip, gibt es keine Notwendigkeit für diebootstrap-Skript verwenden, um eindescribeCluster-Aufruf, der in privaten Cluster-Setups oder Clustern nützlich ist, in denen Sie Knoten häufig ein- und ausskalieren.

Sie können die Werte für den Cluster suchen, um die Werte für die optionalen Argumente mit dem folgenden Befehl anzugeben.

aws eks describe-cluster --name <my-cluster-name>

Die Beispielwerte für die optionalen Argumente sind der Name der Eigenschaften, die in der Ausgabe des Befehls zurückgegeben werden. Der Wert für--dns-cluster-ipist Ihr Service CIDR mit.10am Ende. Beispiel: Wenn den zurückgegebenen Wert für serviceIpv4Cidrist10.100.0.0/16, dann ist Ihr Wert10.100.0.10aus.

Für alle verfügbareneksctl configfinden Sie unterSchema der Config dateiimeksctl-Dokumentation.Eksctlerstellt weiterhin eine Startvorlage für Sie und füllt die Benutzerdaten mit den Daten aus, die Sie imconfigfile.

Erstellen Sie Ihre Worker-Knoten-Gruppe mit dem folgenden Befehl.

eksctl create nodegroup --config-file=my-nodegroup.yaml
User data in a launch template

Geben Sie die folgenden Informationen im Abschnitt Benutzerdaten Ihrer Startvorlage an. Ersetzen Sie alle<example values>(einschließlich<>) mit eigenen Werten. In diesem Beispiel wird eine Knotengruppe erstellt, die eine zusätzlichekubeletArgument, um ein benutzerdefiniertesmax pods-Wert mit dembootstrap.shSkript, das im Amazon EKS optimierten AMI enthalten ist. Weitere Informationen finden Sie unter der Datei bootstrap.sh auf GitHub.

#!/bin/bash /etc/eks/bootstrap.sh <my-cluster-name> \ --kubelet-extra-args <'--max-pods=40'> \ --b64-cluster-ca <certificateAuthority> \ --apiserver-endpoint <endpoint> --dns-cluster-ip <serivceIpv4Cidr>.10 --use-max-pods false

Das einzige erforderliche Argument im vorherigen Beispiel ist der Clustername (<my-cluster-name>) enthalten. Durch Festlegen der Werte für--apiserver-endpoint,--b64-cluster-ca, und--dns-cluster-ip, gibt es keine Notwendigkeit für diebootstrap-Skript verwenden, um eindescribeCluster-Aufruf, der in privaten Cluster-Setups oder Clustern nützlich ist, in denen Sie Knoten häufig ein- und ausskalieren.

Sie können die Werte für den Cluster suchen, um die Werte für die optionalen Argumente mit dem folgenden Befehl anzugeben.

aws eks describe-cluster --name <my-cluster-name>

Die Beispielwerte für die optionalen Argumente sind der Name der Eigenschaften, die in der Ausgabe des Befehls zurückgegeben werden. Der Wert für--dns-cluster-ipist Ihr Service CIDR mit.10am Ende. Beispiel: Wenn den zurückgegebenen Wert für serviceIpv4Cidrist10.100.0.0/16, dann ist Ihr Wert10.100.0.10aus.

Weitere Informationen finden Sie unterAmazon Machine Images (AMI)Im Amazon EC2 Benutzerhandbuch für Linux-Instances. Die Amazon EKS AMI -Build-Spezifikation enthält Ressourcen und Konfigurationsskripte zum Erstellen eines benutzerdefinierten Amazon EKS AMI auf Basis von Amazon Linux 2. Weitere Informationen finden Sie unterAmazon EKS AMI Build-Spezifikationauf GitHub: Informationen zum Erstellen benutzerdefinierter AMIs, die mit anderen Betriebssystemen installiert werden, finden SieAmazon EKS Beispiel-AMIsauf GitHub:

Wichtig

Bei der Angabe eines AMI führt Amazon EKS keine Benutzerdaten zusammen. Vielmehr sind Sie verantwortlich für die Bereitstellung der erforderlichenbootstrap-Befehle für Knoten, um dem Cluster beizutreten. Wenn Ihre Knoten dem Cluster nicht beitreten können, wird Amazon EKS CreateNodegroup und UpdateNodegroupVersion-Aktionen schlagen ebenfalls fehl.

Einschränkungen beim Angeben einer AMI -ID mit verwalteten Knotengruppen

  • Sie müssen eine neue Knotengruppe erstellen, um zwischen der Angabe einer AMI -ID in einer Startvorlage und der Angabe einer AMI-ID zu wechseln.

  • Sie werden in der Konsole nicht benachrichtigt, wenn eine neuere AMI -Version verfügbar ist. Um Ihre Knotengruppe auf eine neuere AMI -Version zu aktualisieren, erstellen Sie eine neue Version Ihrer Startvorlage mit einer aktualisierten AMI-ID und aktualisieren Sie die Knotengruppe mit der neuen Launchvorlagenversion.

  • Die folgenden Felder können in der API nicht festgelegt werden, wenn Sie eine AMI -ID angeben:

    • amiType

    • releaseVersion

    • version

  • Sie können keine Windows AMI -ID angeben, da Windows nicht in verwalteten Knotengruppen verwendet werden kann.