Erstellen Sie selbstverwaltete Amazon Linux-Knoten - Amazon EKS

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. Informationen dazu, wie Sie Knoten auf AWS Outposts starten müssen, finden Sie unterAmazon Linux-Knoten auf AWS Outposts erstellen.

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

  • Eine bestehende IAM Rolle, die die Knoten verwenden sollen. Informationen zum Erstellen finden Sie unter IAMRolle des EKS Amazon-Knotens. 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.

  • Vertrautheit mit den unter Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ aufgeführten Überlegungen. Je nachdem, welchen Instance-Typ Sie wählen, gelten möglicherweise zusätzliche Voraussetzungen für Ihren Cluster undVPC.

Sie können selbstverwaltete Linux-Knoten mit einer der folgenden Methoden starten:

eksctl

Starten Sie selbstverwaltete Linux-Knoten mit `eksctl

Anmerkung

eksctlunterstützt Amazon Linux 2023 derzeit nicht.

  1. Installieren Sie Version 0.194.0 oder höher des auf Ihrem Gerät installierten eksctl Befehlszeilentools oder AWS CloudShell. Informationen zum Installieren und Aktualisieren von eksctl finden Sie in der Dokumentation zu eksctl unter Installation.

  2. (Optional) Wenn die von Amazon EKS _ CNI IAM _Policy verwaltete Richtlinie an Ihre EKSIAMAmazon-Node-Rolle angehängt ist, 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.

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

    Bevor Sie einen Wert für auswählen--node-type, lesen Sie den Artikel Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ.

    Ersetzen my-key mit dem 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 AWS Outposts-, Wavelength- oder Local Zone-Subnetzen bereitstellen möchten, gibt es zusätzliche Überlegungen:

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

  4. (Optional) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster zu testen und Linux Knoten.

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

    • Sie planen, all Ihren IAM Rollen zuzuweisen Kubernetes Dienstkonten, sodass Pods haben nur 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. zum Abrufen der aktuellen AWS Region.

    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: Starten Sie selbstverwaltete Linux-Knoten mit ` 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.

  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: Wählen Sie einen Stack-Namen für Ihren AWS CloudFormation Stack. Du kannst ihn zum Beispiel nennen my-cluster-nodes. Der Name darf nur alphanumerische Zeichen (Groß- und Kleinschreibung beachten) und Bindestriche enthalten. Er muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb der AWS Region und des AWS Kontos, 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 dem Clusternamen entsprechen, sonst können Ihre Knoten dem Cluster nicht beitreten.

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

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

      1. Öffnen Sie die EKSAmazon-Konsole.

      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 später verwendet werden, um die Auto Scaling-Knotengruppe zu identifizieren, die für Ihre Knoten erstellt wurde. Der Name der Knotengruppe 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, ersetzen 1.XX durch eine andere unterstützte Version. Wir empfehlen, dasselbe anzugeben Kubernetes Version wie Ihr Cluster.

      Sie können auch ersetzen amazon-linux-2 mit einem anderen AMI Typ. 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 AWS Region ein. 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 Ihren VPC mithilfe der unter Erstellen eines Amazon VPC für Ihren EKS Amazon-Cluster beschriebenen Schritte erstellt haben, geben Sie nur die privaten Subnetze innerhalb des VPC an, in denen Ihre Knoten gestartet werden sollen. 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 darüber, wie Sie die Zuweisung öffentlicher IP-Adressen für ein Subnetz aktivieren, finden Sie unter Ändern des Attributs für die öffentliche IPv4 Adressierung 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 unter Bereitstellen von privaten Clustern mit eingeschränktem Internetzugang kennen.

      • Wenn Sie AWS Outposts-, Wavelength- oder Local Zone-Subnetze auswählen, 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 werden. IAM , 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 Sie die Knoten, um Ihrem Cluster beizutreten

Anmerkung

Wenn Sie Knoten in einem privaten Raum 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. Sie können dies mit einem Texteditor oder durch Ersetzen tun my-node-instance-role und führe den folgenden Befehl aus:

      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 die EKS Amazon-Optimierung beschleunigt habenAMI, müssen Sie das NVIDIAGeräte-Plugin für Kubernetes als DaemonSet auf Ihrem Cluster. Ersetzen vX.X.X mit Ihrer gewünschten 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 AmazonEKS_CNI_IPv6_Policy (die Sie selbst erstellt haben, wenn Sie einen IPv6 Cluster haben) an Ihre EKSIAMAmazon-Knotenrolle angehängt ist. Wir empfehlen, 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.

  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 haben nur 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. zum Abrufen der aktuellen AWS Region.

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