Passen Sie verwaltete Knoten mit Startvorlagen an - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Passen Sie verwaltete Knoten mit Startvorlagen an

Für die höchste Anpassungsstufe können Sie verwaltete Knoten mithilfe Ihrer eigenen Startvorlage bereitstellen. Die Verwendung einer Startvorlage ermöglicht Funktionen wie die folgenden:

  • Bereitstellen von Bootstrap-Argumenten bei der Bereitstellung eines Knotens bereitstellen, z. B. zusätzliche kubelet-Argumente

  • Weisen Sie IP-Adressen Pods aus einem anderen CIDR Block zu als der IP-Adresse, die dem Knoten zugewiesen wurde.

  • Stellen Sie Ihre eigenen benutzerdefinierten Knoten AMI bereit.

  • Stellen Sie Ihre eigenen benutzerdefinierten CNI auf Knoten bereit.

Wenn Sie beim ersten Erstellen einer verwalteten Knotengruppe Ihre eigene Startvorlage angeben, haben Sie auch später mehr Flexibilität. Wenn Sie eine verwaltete Knotengruppe mit Ihrer eigenen Startvorlage bereitstellen, können Sie sie schrittweise mit einer anderen Version derselben Startvorlage aktualisieren. Wenn Sie Ihre Knotengruppe auf eine andere Version Ihrer Startvorlage aktualisieren, werden alle Knoten in der Gruppe wiederverwertet, damit sie der neuen Konfiguration der angegebenen Startvorlagenversion entsprechen.

Verwaltete Knotengruppen werden immer mit einer Startvorlage bereitgestellt, die mit der Amazon EC2 Auto Scaling Scaling-Gruppe verwendet werden kann. Wenn Sie keine Startvorlage angeben, EKS API erstellt Amazon automatisch eine mit Standardwerten in Ihrem Konto. Es wird jedoch nicht empfohlen, automatisch generierte Startvorlagen zu ändern. Außerdem können vorhandene Knotengruppen, die keine benutzerdefinierte Startvorlage verwenden, 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 Scaling-Startvorlage mit dem AWS Management Console AWS CLI, oder einem erstellen AWS SDK. Weitere Informationen finden Sie unter Erstellen einer Startvorlage für eine Auto Scaling Scaling-Gruppe im Amazon EC2 Auto Scaling Scaling-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 entweder in der Knotengruppenkonfiguration oder in der Startvorlage angegeben werden. Geben Sie nicht an beiden Stellen eine Einstellung an. Wenn eine Einstellung vorhanden ist, wo sie nicht sollte, schlagen Vorgänge wie das Erstellen oder Aktualisieren einer Knotengruppe fehl.

In der folgenden Tabelle werden die Einstellungen aufgelistet, die in einer Startvorlage nicht zulässig sind. Es listet auch ähnliche Einstellungen auf, falls verfügbar, die 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 im AWS CLI undSDK.

Startvorlage - Verboten Konfiguration der EKS Amazon-Knotengruppe
Subnetz in Netzwerkschnittstellen (Hinzufügen einer Netzwerkschnittstelle) Subnets (Subnetze) unter Node group network configuration (Netzwerkkonfiguration der Knotengruppe) auf der Seite Specify networking (Netzwerk angeben)
IAMInstanzprofil unter Erweiterte Details IAMKnotenrolle unter Knotengruppenkonfiguration auf der Seite Knotengruppe konfigurieren
Verhalten beim Herunterfahren und Stop – Ruhezustand Verhalten in Erweiterte Details. Beibehalten von Standard Nicht in die Startvorlageneinstellung einschließen in der Startvorlage für beide Einstellungen. Keine Entsprechung Amazon EKS muss den Instance-Lebenszyklus kontrollieren, nicht die Auto Scaling Scaling-Gruppe.

In der folgenden Tabelle sind die unzulässigen Einstellungen in einer Konfiguration einer verwalteten Knotengruppe aufgeführt. Sie listet auch ähnliche Einstellungen auf, falls vorhanden, die in einer Startvorlage erforderlich sind. Die aufgelisteten Einstellungen sind die Einstellungen, die in der Konsole angezeigt werden. Sie könnten ähnliche Namen im AWS CLI und habenSDK.

Konfiguration Amazon EKS Amazon-Knotengruppen — Unzulässig Startvorlage

(Nur wenn Sie AMI in einer Startvorlage eine benutzerdefinierte Option angegeben haben) AMIgeben Sie unter Rechenkonfiguration für Knotengruppen auf der Seite Konfiguration für Datenverarbeitung und Skalierung festlegen ein. In der Konsole werden in der Startvorlage Spezifiziert und die angegebene AMI ID angezeigt.

Wenn Anwendungs- und Betriebssystem-Images (Amazon Machine Image) in der Startvorlage nicht angegeben wurden, können Sie AMI in der Knotengruppenkonfiguration eine auswählen.

Application and OS Images (Amazon Machine Image) (Anwendungs- und Betriebssystem-Images (Amazon Machine Image)) unter Inhalt der Startvorlage – Sie müssen eine ID angeben, wenn Sie eine der folgenden Anforderungen haben:

Datenträgergröße unter Node Group compute configuration (Computing-Konfiguration der Knotengruppe) auf der Seite Set compute and scaling configuration – Die Konsole zeigt Specified in launch template (In Startvorlage angegeben) an. Größe unter Speicher (Volumes) (Hinzufügen eines neuen Volumes) enthalten. Sie müssen dies in der Startvorlage angeben.
SSHkey pair unter Knotengruppenkonfiguration auf der Seite Netzwerk angeben — Die Konsole zeigt den Schlüssel an, der in der Startvorlage angegeben wurde, oder zeigt In der Startvorlage Nicht angegeben an. Schlüsselpaarname in Schlüsselpaar (Login).
Bei Verwendung einer Startvorlage können Sie keine Quellsicherheitsgruppen angeben, für die der Remotezugriff zulässig ist. Sicherheitsgruppen unter Netzwerkeinstellungen für die Instance oder Sicherheitsgruppen unter Netzwerkschnittstellen (Netzwerkschnittstelle hinzufügen), aber nicht beides. Weitere Informationen dazu finden Sie unter Benutzerdefinierte Sicherheitsgruppen.
Anmerkung
  • Wenn Sie eine Knotengruppe mithilfe einer Startvorlage bereitstellen, geben Sie in einer Startvorlage unter Inhalt der Startvorlage null oder einen Instance-Typ an. Alternativ können Sie 0 bis 20 Instance-Typen für Instance-Typen auf der Seite Einstellen von Compute- und Skalierungskonfiguration in der Konsole angeben. Oder Sie können dies mit anderen Tools tun, die Amazon verwenden EKSAPI. Wenn Sie in einer Startvorlage einen Instance-Typ angeben und diese Startvorlage für die Bereitstellung Ihrer Knotengruppe verwenden, können Sie in der Konsole oder mit anderen Tools, die Amazon verwenden, keine Instance-Typen angeben EKSAPI. Wenn Sie in einer Startvorlage, in der Konsole oder mit anderen Tools, die Amazon verwenden, keinen Instance-Typ angeben EKSAPI, wird der t3.medium Instance-Typ verwendet. Wenn Ihre Knotengruppe den Spot-Kapazitätstyp verwendet, empfehlen wir, mehrere Instance-Typen über die Konsole anzugeben. Weitere Informationen dazu finden Sie unter Kapazitätstypen für verwaltete Knotengruppen.

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

EC2Amazon-Instances taggen

Sie können den TagSpecification Parameter einer Startvorlage verwenden, um anzugeben, welche Tags auf EC2 Amazon-Instances in Ihrer Knotengruppe angewendet werden sollen. Die IAM Entität, die das CreateNodegroup oder aufruftec2:CreateTags, UpdateNodegroupVersion APIs muss über Berechtigungen für ec2:RunInstances und verfügen, und die Tags müssen der Startvorlage hinzugefügt werden.

Benutzerdefinierte Sicherheitsgruppen

Sie können eine Startvorlage verwenden, um benutzerdefinierte EC2 Amazon-Sicherheitsgruppen anzugeben, die auf Instances in Ihrer Knotengruppe angewendet werden sollen. Dies kann entweder im Parameter für Sicherheitsgruppen auf Instance-Ebene 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:

  • Bei Verwendung von erlaubt Amazon EKS nur Startvorlagen mit einer einzigen Netzwerkschnittstellenspezifikation. AWS Management Console

  • Standardmäßig EKS wendet Amazon die Cluster-Sicherheitsgruppe auf die Instances in Ihrer Knotengruppe an, um die Kommunikation zwischen den Knoten und der Kontrollebene zu erleichtern. Wenn Sie in der Startvorlage benutzerdefinierte Sicherheitsgruppen mit einer der oben genannten Optionen angeben, fügt Amazon die Cluster-Sicherheitsgruppe EKS nicht hinzu. Sie müssen daher sicherstellen, dass die eingehenden und ausgehenden Regeln Ihrer Sicherheitsgruppen die Kommunikation mit dem Endpunkt Ihres Clusters ermöglichen. Wenn Ihre Sicherheitsgruppenregeln falsch sind, können die Worker-Knoten dem Cluster nicht beitreten. Weitere Informationen zu Sicherheitsgruppenregeln finden Sie unter Anforderungen und Überlegungen zur Amazon-EKS-Sicherheitsgruppe.

  • Wenn Sie SSH Zugriff auf die Instances in Ihrer Knotengruppe benötigen, fügen Sie eine Sicherheitsgruppe hinzu, die diesen Zugriff ermöglicht.

EC2Amazon-Benutzerdaten

Die Einführungsvorlage enthält einen Abschnitt für benutzerdefinierte Benutzerdaten. In diesem Abschnitt können Sie die Konfigurationseinstellungen für Ihre Knotengruppe angeben, ohne manuell individuelle benutzerdefinierte Einstellungen erstellen zu müssenAMIs. Weitere Informationen zu diesen Einstellungen für Bottlerocket finden Sie unter Verwendung von Benutzerdaten auf GitHub.

Sie können EC2 Amazon-Benutzerdaten in Ihrer Startvorlage angeben, die Sie cloud-init beim Starten Ihrer Instances verwenden. Weitere Informationen dazu 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:

EC2Amazon-Benutzerdaten in Startvorlagen, die mit verwalteten Knotengruppen verwendet werden, müssen im MIMEmehrteiligen Archivformat für Amazon Linux AMIs und im TOML Format für Bottlerocket AMIs vorliegen. Dies liegt daran, dass Ihre Benutzerdaten mit EKS Amazon-Benutzerdaten zusammengeführt werden, die erforderlich sind, damit Knoten dem Cluster beitreten können. Geben Sie keine Befehle in Ihren Benutzerdaten an, die kubelet starten oder ändern. Dies erfolgt im Rahmen der von Amazon zusammengeführten BenutzerdatenEKS. Bestimmte kubelet Parameter, wie z. B. das Setzen von Labels auf Knoten, können direkt über die verwalteten Knotengruppen konfiguriert werdenAPI.

Anmerkung

Weitere Hinweise zur erweiterten kubelet-Anpassung, einschließlich des manuellen Startens oder Übergebens benutzerdefinierter Konfigurationsparameter, finden Sie unter Angabe eines AMI. Wenn in einer Startvorlage eine benutzerdefinierte AMI ID angegeben ist, führt Amazon EKS keine Benutzerdaten zusammen.

Die folgenden Details enthalten weitere Informationen zum Abschnitt Benutzerdaten.

Amazon Linux 2 user data

Sie können mehrere Benutzerdatenblöcke zu einer einzigen MIME mehrteiligen Datei zusammenfassen. 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 MIME mehrteilige Datei besteht aus den folgenden Komponenten:

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

  • Die MIME Versionserklärung — MIME-Version: 1.0

  • Ein oder mehrere Benutzerdatenblöcke mit folgenden Komponenten:

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

    • 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.

    • Der Inhalt der Benutzerdaten (z. B. eine Liste von Shell-Befehlen oder cloud-init-Direktiven).

    • Die schließende Grenze, die das Ende der MIME mehrteiligen Datei signalisiert: --==MYBOUNDARY==--

    Im Folgenden finden Sie ein Beispiel für eine MIME mehrteilige Datei, mit der Sie Ihre eigene Datei erstellen können.

    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==--
Amazon Linux 2023 user data

Amazon Linux 2023 (AL2023) führt einen neuen Knoteninitialisierungsprozess einnodeadm, der ein YAML Konfigurationsschema verwendet. Wenn Sie selbstverwaltete Knotengruppen oder eine Vorlage AMI mit Startfunktion verwenden, müssen Sie jetzt beim Erstellen einer neuen Knotengruppe explizit zusätzliche Cluster-Metadaten angeben. Ein Beispiel für die mindestens erforderlichen Parameter lautet wie folgt, wobei apiServerEndpointcertificateAuthority, und Service jetzt erforderlich cidr sind:

--- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: my-cluster apiServerEndpoint: https://example.com certificateAuthority: Y2VydGlmaWNhdGVBdXRob3JpdHk= cidr: 10.100.0.0/16

In der Regel legen Sie diese Konfiguration in Ihren Benutzerdaten fest, entweder unverändert oder eingebettet in ein MIME mehrteiliges Dokument:

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="BOUNDARY" --BOUNDARY Content-Type: application/node.eks.aws --- apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: [...] --BOUNDARY--

AL2In wurden die Metadaten dieser Parameter aus dem EKS DescribeCluster API Amazon-Aufruf ermittelt. Mit AL2 023 hat sich dieses Verhalten geändert, da durch den zusätzlichen API Anruf die Gefahr einer Drosselung bei der Skalierung großer Knoten besteht. Diese Änderung wirkt sich nicht auf Sie aus, wenn Sie verwaltete Knotengruppen ohne Startvorlage verwenden oder wenn Sie Karpenter Weitere Informationen zu certificateAuthority und Service cidr finden Sie DescribeCluster in der EKSAPIAmazon-Referenz.

Bottlerocket user data

Bottlerocketstrukturiert Benutzerdaten im TOML Format. Sie können Benutzerdaten angeben, die mit den von Amazon bereitgestellten Benutzerdaten zusammengeführt werden sollenEKS. Zum Beispiel können Sie zusätzliche kubelet-Einstellungen bereitstellen.

[settings.kubernetes.system-reserved] cpu = "10m" memory = "100Mi" ephemeral-storage= "1Gi"

Weitere Informationen zu unterstützten Einstellungen finden Sie in der Bottlerocket-Dokumentation. Sie können Knotenbezeichnungen und Taints in Ihren Benutzerdaten konfigurieren. Es wird jedoch empfohlen, diese stattdessen in Ihrer Knotengruppe zu konfigurieren. Amazon EKS wendet diese Konfigurationen an, wenn Sie dies tun.

Wenn Benutzerdaten zusammengeführt werden, wird die Formatierung nicht beibehalten, der Inhalt bleibt jedoch unverändert. Die Konfiguration, die Sie in Ihren Benutzerdaten angeben, hat Vorrang vor allen Einstellungen, die von Amazon EKS konfiguriert wurden. Wenn Sie also settings.kubernetes.max-pods oder festlegensettings.kubernetes.cluster-dns-ip, werden diese Werte in Ihren Benutzerdaten auf die Knoten angewendet.

Amazon unterstützt EKS nicht alle gültigenTOML. Im Folgenden finden Sie eine Liste bekannter nicht unterstützter Formate:

  • Zitate in Anführungszeichen: 'quoted "value"' = "value"

  • Anführungszeichen mit Escapezeichen in Werten: str = "I'm a string. \"You can quote me\""

  • Gemischte Gleitkommazahlen und ganze Zahlen: numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]

  • Gemischte Typen in Arrays: contributors = ["foo@example.com", { name = "Baz", email = "baz@example.com" }]

  • Kopfzeilen in Klammern mit Anführungszeichen: [foo."bar.baz"]

Windows user data

Windows-Benutzerdaten verwenden PowerShell-Befehle. Beim Erstellen einer verwalteten Knotengruppe werden Ihre benutzerdefinierten Benutzerdaten mit den von Amazon EKS verwalteten Benutzerdaten kombiniert. Ihre PowerShell-Befehle stehen an erster Stelle, gefolgt von den verwalteten Benutzerdatenbefehlen, alle innerhalb eines <powershell></powershell>-Tags.

Anmerkung

Wenn in der Startvorlage keine AMI ID angegeben ist, verwenden Sie nicht das Windows Amazon EKS Bootstrap-Skript in Benutzerdaten, um Amazon EKS zu konfigurieren.

Beispielbenutzerdaten lauten wie folgt.

<powershell> Write-Host "Running custom user data script" </powershell>

Angabe eines AMI

Wenn Sie eine der folgenden Anforderungen erfüllen, geben Sie eine AMI ID in das ImageId Feld Ihrer Startvorlage ein. Wählen Sie die Anforderung, die Sie für zusätzliche Informationen haben.

Bootstrapping ist ein Begriff, der verwendet wird, um das Hinzufügen von Befehlen zu beschreiben, die beim Start einer Instance ausgeführt werden können. Bootstrapping ermöglicht beispielsweise die Verwendung zusätzlicher kubelet-Argumente. Sie können Argumente mithilfe von eksctl an das bootstrap.sh-Skript übergeben, ohne eine Startvorlage anzugeben. Oder Sie können dies tun, indem Sie die Informationen im Abschnitt Benutzerdaten einer Startvorlage angeben.

eksctl without specifying a launch template

Erstellen Sie eine Datei mit dem Namen my-nodegroup.yaml und dem folgenden Inhalt. Ersetzen Sie jede example value durch Ihre eigenen Werte. Die Argumente --apiserver-endpoint, --b64-cluster-ca und --dns-cluster-ip sind optional. Wenn sie definiert werden, verhindert dies jedoch, dass das bootstrap.sh-Skript einen describeCluster-Aufruf durchführt. Dies ist nützlich in privaten Cluster-Setups oder Clustern, in denen Sie häufig Knoten ab- und ausskalieren. Weitere Informationen zum bootstrap.sh-Skript finden Sie in der Datei bootstrap.sh auf GitHub.

  • Das einzige erforderliche Argument ist der Clustername (my-cluster).

  • Um eine optimierte AMI ID für abzurufenami-1234567890abcdef0, können Sie die Tabellen in den folgenden Abschnitten verwenden:

  • Um die certificate-authority für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

    aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  • Um den api-server-endpoint für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

    aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  • Der Wert für --dns-cluster-ip ist Ihr Service CIDR mit .10 am Ende. Um das service-cidr für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus. Wenn der zurückgegebene Wert beispielsweise ipv4 10.100.0.0/16 ist, ist Ihr Wert 10.100.0.10.

    aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  • Dieses Beispiel bietet ein kubelet Argument zum Festlegen eines benutzerdefinierten max-pods Werts mithilfe des bootstrap.sh Skripts, das in Amazon EKS Optimized enthalten istAMI. Der Knotengruppenname darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Hilfe zur Auswahl von my-max-pods-value finden Sie unter Von Amazon EKS empfohlenes Maximum Pods für jeden EC2 Amazon-Instance-Typ.

--- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code managedNodeGroups: - name: my-nodegroup ami: ami-1234567890abcdef0 instanceType: m5.large privateNetworking: true disableIMDSv1: true labels: { x86-al2-specified-mng } overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh my-cluster \ --b64-cluster-ca certificate-authority \ --apiserver-endpoint api-server-endpoint \ --dns-cluster-ip service-cidr.10 \ --kubelet-extra-args '--max-pods=my-max-pods-value' \ --use-max-pods false

Informationen zu allen verfügbaren eksctl-config-Dateioptionen finden Sie im Config file schema (Config-Datei-Schema) in der eksctl-Dokumentation. Das eksctl-Dienstprogramm erstellt eine Startvorlage für Sie und füllt die Benutzerdaten mit den Daten aus, die Sie in der config-Datei angeben.

Erstellen Sie eine 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 jede example value durch Ihre eigenen Werte. Die Argumente --apiserver-endpoint, --b64-cluster-ca und --dns-cluster-ip sind optional. Wenn sie definiert werden, verhindert dies jedoch, dass das bootstrap.sh-Skript einen describeCluster-Aufruf durchführt. Dies ist nützlich in privaten Cluster-Setups oder Clustern, in denen Sie häufig Knoten ab- und ausskalieren. Weitere Informationen zum bootstrap.sh-Skript finden Sie in der Datei bootstrap.sh auf GitHub.

  • Das einzige erforderliche Argument ist der Clustername (my-cluster).

  • Um die certificate-authority für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

    aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  • Um den api-server-endpoint für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

    aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  • Der Wert für --dns-cluster-ip ist Ihr Service CIDR mit .10 am Ende. Um das service-cidr für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus. Wenn der zurückgegebene Wert beispielsweise ipv4 10.100.0.0/16 ist, ist Ihr Wert 10.100.0.10.

    aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  • Dieses Beispiel bietet ein kubelet Argument zum Festlegen eines benutzerdefinierten max-pods Werts mithilfe des bootstrap.sh Skripts, das in Amazon EKS Optimized enthalten istAMI. Hilfe zur Auswahl von my-max-pods-value finden Sie unter Von Amazon EKS empfohlenes Maximum Pods für jeden EC2 Amazon-Instance-Typ.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash set -ex /etc/eks/bootstrap.sh my-cluster \ --b64-cluster-ca certificate-authority \ --apiserver-endpoint api-server-endpoint \ --dns-cluster-ip service-cidr.10 \ --kubelet-extra-args '--max-pods=my-max-pods-value' \ --use-max-pods false --==MYBOUNDARY==--

Bootstrapping ist ein Begriff, der verwendet wird, um das Hinzufügen von Befehlen zu beschreiben, die beim Start einer Instance ausgeführt werden können. Sie können Argumente mithilfe von eksctl an das Start-EKSBootstrap.ps1-Skript übergeben, ohne eine Startvorlage anzugeben. Oder Sie können dies tun, indem Sie die Informationen im Abschnitt Benutzerdaten einer Startvorlage angeben.

Wenn Sie eine benutzerdefinierte Windows AMI ID angeben möchten, sollten Sie die folgenden Überlegungen berücksichtigen:

Geben Sie die folgenden Informationen im Abschnitt Benutzerdaten Ihrer Startvorlage an. Ersetzen Sie jede example value durch Ihre eigenen Werte. Die Argumente -APIServerEndpoint, -Base64ClusterCA und -DNSClusterIP sind optional. Wenn sie definiert werden, verhindert dies jedoch, dass das Start-EKSBootstrap.ps1-Skript einen describeCluster-Aufruf durchführt.

  • Das einzige erforderliche Argument ist der Clustername (my-cluster).

  • Um die certificate-authority für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

    aws eks describe-cluster --query "cluster.certificateAuthority.data" --output text --name my-cluster --region region-code
  • Um den api-server-endpoint für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus.

    aws eks describe-cluster --query "cluster.endpoint" --output text --name my-cluster --region region-code
  • Der Wert für --dns-cluster-ip ist Ihr Service CIDR mit .10 am Ende. Um das service-cidr für Ihren Cluster zu überprüfen, führen Sie den folgenden Befehl aus. Wenn der zurückgegebene Wert beispielsweise ipv4 10.100.0.0/16 ist, ist Ihr Wert 10.100.0.10.

    aws eks describe-cluster --query "cluster.kubernetesNetworkConfig.serviceIpv4Cidr" --output text --name my-cluster --region region-code
  • Weitere Argumente finden Sie unter Bootstrap-Skript-Konfigurationsparameter.

    Anmerkung

    Wenn Sie einen benutzerdefinierten Dienst verwendenCIDR, müssen Sie ihn mithilfe des -ServiceCIDR Parameters angeben. Andernfalls schlägt die DNS Auflösung für Pods im Cluster fehl.

<powershell> [string]$EKSBootstrapScriptFile = "$env:ProgramFiles\Amazon\EKS\Start-EKSBootstrap.ps1" & $EKSBootstrapScriptFile -EKSClusterName my-cluster ` -Base64ClusterCA certificate-authority ` -APIServerEndpoint api-server-endpoint ` -DNSClusterIP service-cidr.10 </powershell>

Weitere Informationen finden Sie unter Amazon Machine Images (AMI) im EC2Amazon-Benutzerhandbuch. Die EKS AMI Amazon-Build-Spezifikation enthält Ressourcen und Konfigurationsskripte für die Erstellung eines benutzerdefinierten Amazon auf EKS AMI Basis von Amazon Linux. Weitere Informationen finden Sie in der Amazon EKS AMI Build-Spezifikation unterGitHub. Informationen zur Erstellung benutzerdefinierter AMIs Installationen mit anderen Betriebssystemen finden Sie unter Amazon EKS Sample Custom AMIs unterGitHub.

Wichtig

Wenn Sie eine angebenAMI, EKS führt Amazon keine Benutzerdaten zusammen. Vielmehr sind Sie verantwortlich für die Bereitstellung der erforderlichen bootstrap-Befehle für Knoten, um dem Cluster beizutreten. Wenn Ihre Knoten dem Cluster nicht beitreten können, schlagen auch Amazon EKS CreateNodegroup und die UpdateNodegroupVersion Aktionen fehl.

Einschränkungen und Bedingungen bei der Angabe einer AMI ID

Im Folgenden sind die Grenzwerte und Bedingungen aufgeführt, die bei der Angabe einer AMI ID für verwaltete Knotengruppen gelten:

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

  • 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, müssen Sie eine neue Version Ihrer Startvorlage mit einer aktualisierten AMI ID erstellen. Dann müssen Sie die Knotengruppe mit der neuen Version der Startvorlage aktualisieren.

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

    • amiType

    • releaseVersion

    • version

  • Jeder taints Satz in der API wird asynchron angewendet, wenn Sie eine AMI ID angeben. Um Taints anzuwenden, bevor ein Knoten mit dem Cluster verbunden wird, müssen Sie die Taints über das Befehlszeilen-Flag --register-with-taints an kubelet in Ihren Benutzerdaten weitergeben. Weitere Informationen finden Sie unter kubelet in der Kubernetes-Dokumentation.

  • Wenn Sie eine benutzerdefinierte AMI ID für Windows verwaltete Knotengruppen angeben, fügen Sie eks:kube-proxy-windows diese Ihrer AWS IAM Authenticator-Konfigurationsübersicht hinzu. Dies ist erforderlich, damit DNS es ordnungsgemäß funktioniert.

    1. Öffnen Sie die AWS IAM Authenticator-Konfigurationsübersicht zur Bearbeitung.

      kubectl edit -n kube-system cm aws-auth
    2. Fügen Sie diesen Eintrag der groups-Liste unter jedem rolearn hinzu, das Windows-Knoten zugeordnet ist. Ihre Konfigurationszuordnung sollte ähnlich aussehen wie aws-auth-cm-windows.yaml.

      - eks:kube-proxy-windows
    3. Speichern Sie die Datei und beenden Sie den Text-Editor.