Starten selbstverwalteter 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.

Starten selbstverwalteter Amazon Linux-Knoten

Dieses Thema beschreibt Hinweise zum Starten von Auto-Scaling-Gruppen von Linux-Knoten, die mit Ihrem Amazon-EKS-Cluster registriert sind. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen. 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 unterStarten selbstverwalteter Amazon Linux-Knoten auf einem Outpost.

Voraussetzungen
  • Ein vorhandener Amazon-EKS-Cluster. Informationen zum Bereitstellen finden Sie unter Erstellen eines Amazon-EKS-Clusters. 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 vorhandene IAM-Rolle, die von den Knoten verwendet werden soll. Informationen zum Erstellen finden Sie unter Amazon-EKS-Knoten-IAM-Rolle. Wenn diese Rolle keine der Richtlinien für das VPC-CNI hat, ist die folgende separate Rolle für die VPC-CNI-Pods erforderlich.

  • (Optional, aber empfohlen) Das Amazon VPC CNI plugin for Kubernetes-Add-on wurde mit einer eigenen IAM-Rolle konfiguriert, an die die erforderliche IAM-Richtlinie angehängt ist. Weitere Informationen finden Sie unter Konfigurieren der Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten (IRSA).

  • Kenntnisse über die in Auswählen eines Amazon-EC2-Instance-Typs aufgelisteten Überlegungen. Je nachdem, welchen Instance-Typ Sie wählen, kann es zusätzliche Voraussetzungen für Ihren Cluster und Ihre VPC geben.

eksctl
Anmerkung

eksctlunterstützt Amazon Linux 2023 derzeit nicht.

Voraussetzung

Version 0.175.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.

So starten Sie selbstverwaltete Linux-Knoten mit eksctl
  1. (Optional) Wenn die von verwaltete AmazonEKS_CNI_Policy IAM-Richtlinie an Ihre Amazon-EKS-Knoten-IAM-Rolle angefügt ist, sollten Sie sie stattdessen einer IAM-Rolle zuzuweisen, die Sie dem aws-node-Servicekonto für Kubernetes zuordnen. Weitere Informationen finden Sie unter Konfigurieren der Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten (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. Er muss mit einem alphabetischen Zeichen beginnen und darf nicht mehr als 100 Zeichen umfassen. Ersetzen Sie den Rest der example value durch Ihre eigenen Werte. Die Knoten werden standardmäßig mit derselben Kubernetes-Version wie die Steuerebene erstellt.

    Bevor Sie einen Wert für --node-type wählen, sehen Sie sich Auswählen eines Amazon-EC2-Instance-Typs an.

    Ersetzen Sie my-key mit dem Namen Ihres Amazon-EC2-Schlüsselpaars oder öffentlichen Schlüssels. Dieser Schlüssel wird für den SSH-Zugriff zu Ihren Knoten verwendet, nachdem diese gestartet wurden. Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS Management Console erstellen. Weitere Informationen dazu finden Sie unter Amazon-EC2-Schlüsselpaare im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

    Erstellen Sie Ihre Worker-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 Arbeitsknoten dem Cluster nicht beitreten können, finden Sie weitere Informationen unter Knoten können nicht mit dem Cluster verknüpft werden im Handbuch zur 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 und Ihre Linux-Worker-Knoten zu testen.

  4. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:

    • Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.

    • Nein Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Version. 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: Um selbstverwaltete Linux-Knoten mit dem AWS Management Console zu starten
  1. Laden Sie die neueste Version der Vorlage herunter. AWS CloudFormation

    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. Er muss mit einem alphabetischen Zeichen beginnen und darf nicht mehr als 100 Zeichen umfassen.

    • ClusterName: Geben Sie den Namen ein, den Sie bei der Erstellung Ihres Amazon EKS-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 aus, die Sie bei der Erstellung Ihrer VPC generiert haben.

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

      1. Öffnen Sie die Amazon-EKS-Konsole unterhttps://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 Auswählen eines Amazon-EC2-Instance-Typs.

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

      Sie können es auch amazon-linux-2 durch einen anderen AMI-Typ ersetzen. Weitere Informationen finden Sie unter Abrufen von Amazon-EKS-optimierten Amazon-Linux-AMI-IDs.

      Anmerkung

      Das Amazon EKS Node AMI basiert auf Amazon Linux. Sie können Sicherheits- oder Datenschutzereignisse für Amazon Linux 2 im Amazon Linux-Sicherheitszentrum verfolgen oder den zugehörigen RSS-Feed 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 Ihr eigenes benutzerdefiniertes AMI (anstelle des für Amazon EKS optimierten AMI) verwenden, geben Sie eine Knoten-AMI-ID für Ihr AWS-Region. Wenn Sie hier einen Wert angeben, überschreibt dieser alle Werte im Feld NodeImageIdssmParam.

    • 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 Amazon EC2 SSH-Schlüsselpaars ein, mit dem Sie sich nach dem Start über SSH mit Ihren Knoten verbinden können. Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS Management Console erstellen. Weitere Informationen dazu finden Sie unter Amazon-EC2-Schlüsselpaare im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

      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 Bootstrap-Skript-Nutzungsinformationen auf GitHub.

      Zum Bereitstellen einer Knotengruppe, die:

    • DisableIMDSv1: Standardmäßig unterstützt jeder Knoten die Instance-Metadaten-Service-Version 1 (IMDSv1) und IMDSv2. Sie können IMDSv1 deaktivieren. Um zu verhindern, dass künftige Knoten und Pods in der Knotengruppe MDSv1 verwenden, legen Sie DisableIMDSv1 auf true fest. Weitere Informationen finden Sie unter Konfiguration des Instance-Metadatenservice. 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 die VPC ein, die Sie erstellt haben.

    • Subnetze: Wählen Sie die Subnetze aus, die Sie für Ihre VPC erstellt haben. Wenn Sie Ihre VPC anhand der unter Erstellen einer VPC für Ihren Amazon-EKS-Cluster beschriebenen Schritte erstellt haben, geben Sie nur die privaten Subnetze innerhalb der 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 Amazon AWS CloudFormation EKS-VPC-Vorlagen oder mithilfe eksctl von bereitgestellt wurde, 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 NAT-Gateway mit dem Cluster und anderen AWS Diensten kommunizieren.

      • Wenn die Subnetze keinen Internetzugang haben, stellen Sie sicher, dass Sie die Überlegungen und zusätzlichen Schritte in Anforderungen an private Cluster 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 I acknowledge that AWS CloudFormation might create IAM resources with custom names („Mir ist bewusst, dass IAM-Ressourcen mit eigenen Namen erstellen kann“) und wählen Sie dann Create Stack (Stack erstellen) aus.

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

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

Schritt 2: So aktivieren Sie die Knoten, die Ihrem Cluster beitreten sollen
Anmerkung

Wenn Sie Knoten innerhalb einer privaten VPC ohne ausgehenden Internetzugang gestartet haben, müssen Sie ihnen ermöglichen, Ihrem Cluster innerhalb der VPC beizutreten.

  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 unter Knoten können nicht mit dem Cluster verknüpft werden im Handbuch zur Fehlerbehebung.

  5. (Nur GPU-Knoten) Wenn Sie einen GPU-Instance-Typ und das mit Amazon EKS optimierte beschleunigte AMI gewählt haben, müssen Sie das NVIDIA-Geräte-Plugin für Kubernetes mit dem folgenden Befehl als DaemonSet auf Ihren Cluster anwenden. vX.X.XErsetzen Sie es durch die gewünschte s-device-pluginNVIDIA/k8-Version, bevor Sie den folgenden Befehl ausführen.

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

  2. (Optional) Wenn die von AmazonEKS_CNI_Policy verwaltete IAM-Richtlinie (bei einem IPv4-Cluster) oder die AmazonEKS_CNI_IPv6_Policy (die Sie bei einem IPv6-Cluster selbst erstellt haben) an Ihre Amazon-EKS-Knoten-IAM-Rolle angefügt ist, sollten Sie sie stattdessen einer IAM-Rolle zuweisen, die Sie dem Kubernetes-Servicekonto für aws-node zuordnen. Weitere Informationen finden Sie unter Konfigurieren der Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten (IRSA).

  3. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:

    • Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.

    • Nein Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 EC2-Instance-Metadaten-Service (IMDS), z. B. zum Abrufen der aktuellen Version. AWS-Region

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