Erstellen Sie selbstverwaltete Amazon Linux-Knoten - 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.

Erstellen Sie selbstverwaltete Amazon Linux-Knoten

In diesem Thema wird beschrieben, wie Sie Auto Scaling Scaling-Gruppen von starten können Linux Knoten, die sich bei Ihrem EKS Amazon-Cluster registrieren. Nachdem die Knoten dem Cluster beigetreten sind, können Sie sie bereitstellen Kubernetes Anwendungen für sie. Sie können auch selbstverwaltete Amazon Linux-Knoten mit eksctl oder dem AWS Management Console starten. Wenn Sie Knoten auf starten müssen, finden Sie weitere Informationen AWS Outposts unterAmazon Linux-Knoten auf AWS Outposts erstellen.

Voraussetzungen
  • Ein vorhandener EKS Amazon-Cluster. Informationen zum Bereitstellen finden Sie unter Erstellen Sie einen EKS Amazon-Cluster. Wenn Sie Subnetze in dem Bereich haben AWS Outposts AWS Wavelength, in AWS-Region dem Sie AWS Local Zones aktiviert haben, dürfen diese Subnetze bei der Erstellung Ihres Clusters nicht übergeben worden sein.

  • Eine bestehende IAM Rolle, die die Knoten verwenden sollen. Informationen zum Erstellen finden Sie unter Amazon-EKS-Knoten-IAM-Rolle. Wenn diese Rolle über keine der Richtlinien für verfügt VPCCNI, ist die folgende separate Rolle für die VPC CNI Pods erforderlich.

  • (Optional, aber empfohlen) Die Amazon VPC CNI plugin for Kubernetes Add-on, das mit einer eigenen IAM Rolle konfiguriert ist und der die erforderlichen IAM Richtlinien zugeordnet sind. Weitere Informationen finden Sie unter Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA.

  • Kenntnisse über die in Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ aufgelisteten Überlegungen. Je nachdem, welchen Instanztyp Sie wählen, gelten möglicherweise zusätzliche Voraussetzungen für Ihren Cluster undVPC.

eksctl
Anmerkung

eksctlunterstützt Amazon Linux 2023 derzeit nicht.

Voraussetzung

Version 0.191.0 oder höher des eksctl-Befehlszeilen-Tools, das auf Ihrem Computer oder in der AWS CloudShell installiert ist. Informationen zum Installieren und Aktualisieren von eksctl finden Sie in der Dokumentation zu eksctl unter Installation.

Um Self-managed zu starten Linux Knoten, die eksctl
  1. (Optional) Wenn die von Amazon EKS _ CNI IAM _Policy verwaltete Richtlinie an Ihre angehängt istAmazon-EKS-Knoten-IAM-Rolle, empfehlen wir, sie einer IAM Rolle zuzuweisen, die Sie der Kubernetes aws-nodeStattdessen ein Servicekonto. Weitere Informationen finden Sie unter Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA.

  2. Der folgende Befehl erstellt eine Knotengruppe in einem bestehenden Cluster. Ersetzen Sie al-nodes durch einen Namen für Ihre Knotengruppe. 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. Ersetzen Sie my-cluster mit dem Namen Ihres Clusters. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb des AWS-Region und AWS-Konto , in dem Sie den Cluster erstellen, eindeutig sein. Ersetzen Sie den Rest der example value durch Ihre eigenen Werte. Die Knoten werden mit demselben erstellt Kubernetes Version wie die Steuerungsebene, standardmäßig.

    Bevor Sie einen Wert für --node-type wählen, sehen Sie sich Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ an.

    my-keyErsetzen Sie es durch den Namen Ihres EC2 Amazon-Schlüsselpaars oder öffentlichen Schlüssels. Dieser Schlüssel wird verwendet, um SSH nach dem Start auf Ihre Knoten zuzugreifen. Wenn Sie noch kein EC2 Amazon-Schlüsselpaar haben, können Sie eines in der erstellen AWS Management Console. Weitere Informationen finden Sie unter EC2Amazon-Schlüsselpaare im EC2Amazon-Benutzerhandbuch.

    Erstellen Sie Ihre Knoten-Gruppe mit dem folgenden Befehl.

    Wichtig

    Wenn Sie eine Knotengruppe in Subnetzen AWS Outposts, Wellenlängensubnetzen oder lokalen Zonensubnetzen bereitstellen möchten, müssen Sie zusätzliche Überlegungen berücksichtigen:

    • Die Subnetze dürfen beim Erstellen des Clusters nicht übergeben worden sein.

    • Sie müssen die Knotengruppe mit einer Konfigurationsdatei erstellen, die die Subnetze und volumeType: gp2 angibt. Weitere Informationen dazu finden Sie unter Verwenden von Config-Dateien und im Config-Datei-Schema in der eksctl-Dokumentation.

    eksctl create nodegroup \ --cluster my-cluster \ --name al-nodes \ --node-type t3.medium \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --ssh-access \ --managed=false \ --ssh-public-key my-key

    Zum Bereitstellen einer Knotengruppe, die:

    Geben Sie den folgenden Befehl ein, um eine vollständige Liste aller verfügbaren Optionen und Standardwerte anzuzeigen.

    eksctl create nodegroup --help

    Wenn Knoten dem Cluster nicht beitreten können, finden Sie weitere Informationen Knoten können nicht mit dem Cluster verknüpft werden im Kapitel Fehlerbehebung.

    Eine Beispielausgabe sieht wie folgt aus. Mehrere Zeilen werden ausgegeben, während die Knoten erstellt werden. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

    [✔] created 1 nodegroup(s) in cluster "my-cluster"
  3. (Optional) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster zu testen Linux Knoten.

  4. Wir empfehlen das Blockieren Pod Zugriff auf, IMDS wenn die folgenden Bedingungen zutreffen:

    • Sie planen, all Ihren IAM Rollen zuzuweisen Kubernetes Dienstkonten, sodass Pods verfügen nur über die Mindestberechtigungen, die sie benötigen.

    • Nein Pods im Cluster benötigen aus anderen Gründen Zugriff auf den EC2 Amazon-Instance-Metadatenservice (IMDS), z. B. um die aktuelle AWS-Region Version abzurufen.

    Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

AWS Management Console
Schritt 1: So starten Sie Self-managed Linux Knoten, die das verwenden AWS Management Console
  1. Laden Sie die neueste Version der AWS CloudFormation Vorlage herunter.

    curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2022-12-23/amazon-eks-nodegroup.yaml
  2. Warten Sie, bis der Status des Clusters als ACTIVE angezeigt wird. Wenn Sie Ihre Knoten starten, bevor der Cluster aktiv ist, werden die Knoten nicht mit dem Cluster registriert und Sie müssen sie neu starten.

  3. Öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  4. Wählen Sie Create stack (Stack erstellen) und dann With new resources (standard) (Mit neuen Ressourcen [Standard]) aus.

  5. Wählen Sie für Specify template (Vorlage festlegen) Upload a template file (Vorlagendatei hochladen) aus und wählen Sie dann Choose file (Datei wählen).

  6. Wählen Sie die heruntergeladene amazon-eks-nodegroup.yaml-Datei aus.

  7. Klicken Sie auf Weiter.

  8. Geben Sie auf der Seite Specify stack details (Stack-Details angeben) die folgenden Parameter ein und klicken Sie dann auf Next (Weiter):

    • Stack name (Stack-Name): Wählen Sie einen Stack-Namen für Ihren AWS CloudFormation -Stack aus. Sie können ihn beispielsweise my-cluster-nodes nennen. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb des AWS-Region und AWS-Konto , in dem Sie den Cluster erstellen, eindeutig sein.

    • ClusterName: Geben Sie den Namen ein, den Sie bei der Erstellung Ihres EKS Amazon-Clusters verwendet haben. Dieser Name muss exakt mit dem Clusternamen übereinstimmen, andernfalls werden Ihre Knoten dem Cluster nicht beitreten.

    • ClusterControlPlaneSecurityGroup: Wählen Sie den SecurityGroupsWert aus der AWS CloudFormation Ausgabe, die Sie bei der Erstellung Ihres generiert haben VPC.

      Die folgenden Schritte zeigen einen Vorgang zum Abrufen der entsprechenden Gruppe.

      1. Öffnen Sie die EKS Amazon-Konsole unter https://console.aws.amazon.com/eks/home#/clusters.

      2. Wählen Sie den Namen des Clusters.

      3. Wählen Sie die Registerkarte Network (Network) aus.

      4. Verwenden Sie den Wert Zusätzliche Sicherheitsgruppen als Referenz, wenn Sie aus der ClusterControlPlaneSecurityGroupDropdownliste auswählen.

    • NodeGroupName: Geben Sie einen Namen für Ihre Knotengruppe ein. Dieser Name kann zu einem späteren Zeitpunkt zum Identifizieren der Auto-Scaling-Knotengruppe verwendet werden, die für Ihre Knoten erstellt wurde. 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.

    • NodeAutoScalingGroupMinSize: Geben Sie die Mindestanzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.

    • NodeAutoScalingGroupDesiredCapacity: Geben Sie die gewünschte Anzahl von Knoten ein, auf die bei der Erstellung Ihres Stacks skaliert werden soll.

    • NodeAutoScalingGroupMaxSize: Geben Sie die maximale Anzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.

    • NodeInstanceType: Wählen Sie einen Instance-Typ für Ihre Knoten. Weitere Informationen finden Sie unter Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ.

    • NodeImageIdSSMParam: Vorab mit dem Amazon EC2 Systems Manager Manager-Parameter eines kürzlich AMI für eine EKS Variable optimierten Amazon Kubernetes Version. Um eine andere zu verwenden Kubernetes Nebenversion, die von Amazon unterstützt wirdEKS, 1.XX durch eine andere unterstützte Version ersetzen. Wir empfehlen, dasselbe anzugeben Kubernetes Version wie Ihr Cluster.

      Sie können es auch amazon-linux-2 durch einen anderen AMI Typ ersetzen. Weitere Informationen finden Sie unter Rufen Sie das empfohlene Amazon Linux ab AMI IDs.

      Anmerkung

      Der EKS Amazon-Knoten AMI basiert auf Amazon Linux. Sie können Sicherheits- oder Datenschutzereignisse für Amazon Linux 2 im Amazon Linux Security Center verfolgen oder den zugehörigen RSSFeed abonnieren. Sicherheits- oder Datenschutzereignisse enthalten eine Übersicht über das Problem, welche Pakete betroffen sind und wie Sie Ihre Instances aktualisieren, um das Problem zu beheben.

    • NodeImageId: (Optional) Wenn Sie Ihre eigene benutzerdefinierte AMI (anstelle der von Amazon EKS optimiertenAMI) verwenden, geben Sie eine AMI Knoten-ID für Ihre ein AWS-Region. Wenn Sie hier einen Wert angeben, überschreibt dieser alle Werte im NodeImageIdSSMParamFeld.

    • NodeVolumeSize: Geben Sie eine Root-Volume-Größe für Ihre Knoten in GiB an.

    • NodeVolumeType: Geben Sie einen Root-Volume-Typ für Ihre Knoten an.

    • KeyName: Geben Sie den Namen eines EC2 SSH Amazon-Schlüsselpaars ein, mit dem Sie nach dem Start eine Verbindung SSH zu Ihren Knoten herstellen können. Wenn Sie noch kein EC2 Amazon-Schlüsselpaar haben, können Sie eines in der erstellen AWS Management Console. Weitere Informationen finden Sie unter EC2Amazon-Schlüsselpaare im EC2Amazon-Benutzerhandbuch.

      Anmerkung

      Wenn Sie hier kein key pair angeben, schlägt die AWS CloudFormation Stack-Erstellung fehl.

    • BootstrapArguments: Geben Sie alle optionalen Argumente an, die an das Node-Bootstrap-Skript übergeben werden sollen, z. B. zusätzliche kubelet Argumente. Weitere Informationen finden Sie in den Informationen zur Verwendung des Bootstrap-Skripts unter GitHub.

      Zum Bereitstellen einer Knotengruppe, die:

    • D isableIMDSv 1: Standardmäßig unterstützt jeder Knoten den Instanz-Metadatendienst Version 1 (IMDSv1) undIMDSv2. Sie können deaktivierenIMDSv1. Um future Knoten zu verhindern und Pods Setzen Sie D isableIMDSv 1 in der MDSv1 Knotengruppe nicht auf true. Weitere Informationen dazu finden Sie IMDS unter Konfiguration des Instanz-Metadatendienstes. Weitere Informationen zum Einschränken des Zugriffs darauf auf Ihre Knoten finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

    • VpcId: Geben Sie die ID für den ein VPC, den Sie erstellt haben.

    • Subnetze: Wählen Sie die Subnetze aus, die Sie für Ihre erstellt haben. VPC Wenn Sie Ihre VPC mit den unter beschriebenen Schritten erstellt habenErstellen Sie ein Amazon VPC für Ihren EKS Amazon-Cluster, geben Sie nur die privaten Subnetze innerhalb von an, in denen Ihre Knoten gestartet werden sollen. VPC Sie können sehen, welche Subnetze privat sind, indem Sie den jeweiligen Subnetzlink in der Registerkarte Networking (Netzwerk) Ihres Clusters öffnen.

      Wichtig
      • Wenn es sich bei einem oder einigen der Subnetze um öffentliche Subnetze handelt, muss die Einstellung für die automatische Zuweisung öffentlicher IP-Adressen aktiviert sein. Wenn die Einstellung für das öffentliche Subnetz nicht aktiviert ist, wird allen Knoten, die Sie in diesem öffentlichen Subnetz bereitstellen, keine öffentliche IP-Adresse zugewiesen und sie können nicht mit dem Cluster oder anderen Diensten kommunizieren. AWS Wenn das Subnetz vor dem 26. März 2020 mithilfe einer der EKS AWS CloudFormation VPCAmazon-Vorlagen oder mithilfe von bereitgestellt wurdeeksctl, ist die automatische Zuweisung öffentlicher IP-Adressen für öffentliche Subnetze deaktiviert. Informationen zum Aktivieren der öffentlichen IP-Adresszuweisung für ein Subnetz finden Sie unter Ändern des öffentlichen IPv4-Adressattributs für Ihr Subnetz. Wenn der Knoten in einem privaten Subnetz bereitgestellt wird, kann er über ein Gateway mit dem Cluster und anderen AWS Diensten kommunizieren. NAT

      • Wenn die Subnetze keinen Internetzugang haben, stellen Sie sicher, dass Sie die Überlegungen und zusätzlichen Schritte in Stellen Sie private Cluster mit eingeschränktem Internetzugang bereit kennen.

      • Wenn Sie Wellenlängen-Subnetze oder Local Zone-Subnetze auswählen AWS Outposts, dürfen die Subnetze bei der Erstellung des Clusters nicht übergeben worden sein.

  9. Treffen Sie die gewünschte Auswahl auf der Seite Configure stack options (Stackoptionen konfigurieren) und wählen Sie dann Next (Weiter) aus.

  10. Aktivieren Sie das Kontrollkästchen links neben Ich bestätige, dass dadurch AWS CloudFormation möglicherweise Ressourcen erstellt IAM werden. , und wählen Sie dann Stapel erstellen aus.

  11. Wenn Ihr Stack fertig erstellt wurde, wählen Sie ihn in der Konsole aus und klicken Sie auf Outputs (Ausgaben).

  12. Notieren Sie das NodeInstanceRolefür die Knotengruppe, die erstellt wurde. Sie benötigen dies, wenn Sie Ihre EKS Amazon-Knoten konfigurieren.

Schritt 2: Aktivieren der Knoten, die Ihrem Cluster beitreten sollen
Anmerkung

Wenn Sie Knoten in einem privaten Bereich VPC ohne ausgehenden Internetzugang gestartet haben, stellen Sie sicher, dass Knoten Ihrem Cluster von innerhalb des VPC beitreten können.

  1. Überprüfen Sie, ob Sie bereits über eine aws-auth ConfigMap verfügen.

    kubectl describe configmap -n kube-system aws-auth
  2. Wenn eine aws-auth ConfigMap angezeigt wird, aktualisieren Sie sie nach Bedarf.

    1. Öffnen Sie ConfigMap zum Bearbeiten.

      kubectl edit -n kube-system configmap/aws-auth
    2. Fügen Sie nach Bedarf einen neuen mapRoles-Eintrag hinzu. Setzen Sie den rolearn Wert auf den NodeInstanceRoleWert, den Sie im vorherigen Verfahren aufgezeichnet haben.

      [...] data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes [...]
    3. Speichern Sie die Datei und beenden Sie den Text-Editor.

  3. Wenn die Fehlermeldung Error from server (NotFound): configmaps "aws-auth" not found angezeigt wird, wenden Sie die standardmäßige ConfigMap an.

    1. Laden Sie die Konfigurationszuordnung herunter.

      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
    2. Stellen Sie in der aws-auth-cm.yaml Datei den rolearn Wert auf den NodeInstanceRoleWert ein, den Sie im vorherigen Verfahren aufgezeichnet haben. Hierzu können Sie einen Texteditor verwenden oder my-node-instance-role ersetzen und den folgenden Befehl ausführen:

      sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
    3. Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.

      kubectl apply -f aws-auth-cm.yaml
  4. Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den Ready-Status eintreten.

    kubectl get nodes --watch

    Geben Sie Ctrl+C ein, um zu einer Shell-Eingabeaufforderung zurückzukehren.

    Anmerkung

    Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Thema zur Fehlerbehebung.

    Wenn Knoten dem Cluster nicht beitreten können, finden Sie weitere Informationen Knoten können nicht mit dem Cluster verknüpft werden im Kapitel Fehlerbehebung.

  5. (nur GPU Knoten) Wenn Sie einen GPU Instance-Typ ausgewählt und Amazon EKS Optimized Accelerated ausgewählt habenAMI, müssen Sie das NVIDIA Geräte-Plug-In für Kubernetesals DaemonSet auf deinem Cluster. vX.X.XErsetzen Sie es durch die gewünschte NVIDIAs-device-plugin/k8-Version, bevor Sie den folgenden Befehl ausführen.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/vX.X.X/deployments/static/nvidia-device-plugin.yml
Schritt 3: Zusätzliche Aktionen
  1. (Optional) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster zu testen und Linux Knoten.

  2. (Optional) Wenn die von Amazon EKS _ CNI IAM _Policy verwaltete Richtlinie (wenn Sie einen IPv4 Cluster haben) oder die AmazonEKS_CNI_IPv6_Policy (die Sie selbst erstellt haben, wenn Sie einen IPv6 Cluster haben) an Ihre angehängt istAmazon-EKS-Knoten-IAM-Rolle, empfehlen wir, sie einer IAM Rolle zuzuweisen, die Sie dem Kubernetes aws-nodeStattdessen ein Servicekonto. Weitere Informationen finden Sie unter Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA.

  3. Wir empfehlen das Blockieren Pod Zugriff auf, IMDS wenn die folgenden Bedingungen zutreffen:

    • Sie planen, all Ihren IAM Rollen zuzuweisen Kubernetes Dienstkonten, sodass Pods verfügen nur über die Mindestberechtigungen, die sie benötigen.

    • Nein Pods im Cluster benötigen aus anderen Gründen Zugriff auf den EC2 Amazon-Instance-Metadatenservice (IMDS), z. B. um die aktuelle AWS-Region Version abzurufen.

    Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.