Amazon Linux-Knoten auf AWS Outposts erstellen - Amazon EKS

Hilf mit, diese Seite 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.

Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

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.

Amazon Linux-Knoten auf AWS Outposts erstellen

Dieses Thema beschreibt Hinweise zum Starten von Auto-Scaling-Gruppen von Amazon-Linux-Knoten auf einem Outpost, die mit Ihrem Amazon-EKS-Cluster registriert sind. Der Cluster kann sich in der AWS Cloud oder in einem Outpost befinden.

  • Ein vorhandener Outpost. Weitere Informationen finden Sie unter Was sind AWS Outposts.

  • Ein vorhandener Amazon-EKS-Cluster. Informationen zur Bereitstellung eines Clusters in der AWS Cloud finden Sie unterErstellen Sie einen Amazon EKS-Cluster. Informationen zum Bereitstellen eines Clusters in einem Outpost finden Sie unter Erstellen Sie lokale Amazon EKS-Cluster auf AWS Outposts für hohe Verfügbarkeit.

  • Angenommen, Sie erstellen Ihre Knoten in einem Cluster in der AWS Cloud und Sie haben Subnetze in der AWS Region, in der Sie AWS Outposts, AWS Wavelength oder AWS Local Zones aktiviert haben. Diese Subnetze dürfen dann bei der Erstellung Ihres Clusters nicht angegeben worden sein. Wenn Sie Ihre Knoten in einem Cluster auf einem Outpost erstellen, müssen Sie bei der Erstellung Ihres Clusters ein Outpost-Subnetz eingegeben haben.

  • (Empfohlen für Cluster in der AWS Cloud) Das Amazon VPC CNI-Plug-In für Kubernetes ist mit einer eigenen IAM-Rolle konfiguriert, der die erforderliche IAM-Richtlinie zugeordnet ist. Weitere Informationen finden Sie unter Amazon VPC CNI-Plugin für die Verwendung von IRSA konfigurieren. Lokale Cluster unterstützen keine IAM-Rollen für Service-Konten.

Sie können eine selbstverwaltete Amazon Linux-Knotengruppe mit eksctl oder AWS Management Console (mit einer AWS CloudFormation Vorlage) erstellen. Sie können auch Terraform verwenden.

Sie können eine selbstverwaltete Knotengruppe für einen lokalen Cluster mit den folgenden auf dieser Seite beschriebenen Tools erstellen:

Wichtig

eksctl

Um selbstverwaltete Linux-Knoten zu starten mit eksctl

  1. Installieren Sie die Version 0.204.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. Wenn sich Ihr Cluster in der AWS Cloud befindet und die von AmazonEKS_CNI_Policy verwaltete IAM-Richtlinie mit Ihrer Amazon EKS-Knoten-IAM-Rolle verknüpft ist, empfehlen wir, sie stattdessen einer IAM-Rolle zuzuweisen, die Sie dem Kubernetes-Dienstkonto zuordnen. aws-node Weitere Informationen finden Sie unter Amazon VPC CNI-Plugin für die Verwendung von IRSA konfigurieren. Wenn sich Ihr Cluster in Ihrem Outpost befindet, muss die Richtlinie an Ihre Knotenrolle angehängt sein.

  3. Der folgende Befehl erstellt eine Knotengruppe in einem bestehenden Cluster. Der Cluster muss mit eksctl erstellt worden sein. Ersetzen Sie al-nodes durch einen 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 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 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. Wenn Ihr Cluster auf einem Outpost existiert, ersetzen Sie id mit der ID eines Outpost-Subnetzes. Wenn Ihr Cluster in der AWS Cloud existiert, id ersetzen Sie ihn durch die ID eines Subnetzes, das Sie bei der Erstellung Ihres Clusters nicht angegeben haben. Ersetzen Sie instance-type durch einen Instance-Typ, der von Ihrem Outpost unterstützt wird. Ersetzen Sie den Rest der example values durch Ihre eigenen Werte. Die Knoten werden standardmäßig mit derselben Kubernetes-Version wie die Steuerungsebene erstellt.

    Ersetzen Sie instance-type durch einen Instance-Typ, der auf Ihrem Outpost verfügbar ist.

    my-keyErsetzen Sie es durch den Namen Ihres EC2 Amazon-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 EC2 Amazon-Schlüsselpaar haben, können Sie eines in der erstellen AWS Management Console. Weitere Informationen finden Sie unter EC2 Amazon-Schlüsselpaare im EC2 Amazon-Benutzerhandbuch.

    Erstellen Sie Ihre Knoten-Gruppe mit dem folgenden Befehl.

    eksctl create nodegroup --cluster my-cluster --name al-nodes --node-type instance-type \ --nodes 3 --nodes-min 1 --nodes-max 4 --managed=false --node-volume-type gp2 --subnet-ids subnet-id

    Wenn Ihr Cluster in der AWS Cloud bereitgestellt ist:

    Eine vollständige Liste aller verfügbaren Optionen und Standardeinstellungen finden Sie in der Dokumentation unter AWS Outposts Support. eksctl

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

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. Öffnen Sie die AWS CloudFormation -Konsole.

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

  4. 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). Wählen Sie die amazon-eks-nodegroup.yaml-Datei aus, die Sie in einem vorherigen Schritt heruntergeladen haben, und wählen Sie dann Next (Weiter) aus.

  5. 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. Sie können ihn beispielsweise al-nodes nennen. 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.

    • ClusterName: Geben Sie den Namen Ihres Clusters ein. Wenn dieser Name nicht mit Ihrem Clusternamen übereinstimmt, 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 Ihrer VPC generiert haben.

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

      1. Öffnen Sie die Amazon-EKS-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.

    • 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. Wenn Ihr Cluster in der AWS Cloud läuft, finden Sie weitere Informationen unterWählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ. Wenn Ihr Cluster auf einem Outpost ausgeführt wird, können Sie nur einen Instance-Typ auswählen, der auf Ihrem Outpost verfügbar ist.

    • NodeImageIdSSMParam: Vorab mit dem Amazon EC2 Systems Manager Manager-Parameter eines kürzlich für Amazon EKS optimierten AMI für eine variable Kubernetes-Version gefüllt. 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.

      Um ein für Amazon EKS optimiertes beschleunigtes AMI zu verwenden, amazon-linux-2 ersetzen Sie es durchamazon-linux-2-gpu. Um ein für Amazon EKS optimiertes Arm-AMI zu verwenden, amazon-linux-2 ersetzen Sie es durchamazon-linux-2-arm64.

      Anmerkung

      Die Amazon EKS-Knoten AMIs basieren auf Amazon Linux. Sie können Sicherheits- oder Datenschutzereignisse für Amazon Linux im Amazon Linux-Sicherheitszentrum verfolgen, indem Sie den Tab für Ihre gewünschte Version auswählen. Sie können auch den entsprechenden 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 eines für Amazon EKS optimierten AMI) verwenden, geben Sie eine Knoten-AMI-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 Amazon EC2 SSH-Schlüsselpaars ein, mit dem Sie nach dem Start über SSH eine Verbindung 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 EC2 Amazon-Schlüsselpaare im EC2 Amazon-Benutzerhandbuch.

      Anmerkung

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

    • BootstrapArguments: Es gibt mehrere optionale Argumente, die Sie an Ihre Knoten übergeben können. Weitere Informationen finden Sie in den Bootstrap-Skript-Nutzungsinformationen auf GitHub. Wenn Sie Knoten zu einem lokalen Amazon EKS-Cluster auf AWS Outposts hinzufügen (wo die Kubernetes-Steuerplane-Instances auf AWS Outposts ausgeführt werden) und der Cluster keine Eingangs- und Ausgangsinternetverbindung hat (auch als private Cluster bezeichnet), müssen Sie die folgenden Bootstrap-Argumente (als einzelne Zeile) angeben.

      --b64-cluster-ca ${CLUSTER_CA} --apiserver-endpoint https://${APISERVER_ENDPOINT} --enable-local-outpost true --cluster-id ${CLUSTER_ID}

      Führen Sie die folgenden AWS CLI-Befehle CLUSTER_ID aus CLUSTER_CAAPISERVER_ENDPOINT, um die Werte für, und Ihres lokalen Amazon EKS-Clusters abzurufen. Ersetzen Sie cluster-name durch den Namen Ihres Clusters und die Region (z. B. us-east-1) durch die Region Ihres Clusters. AWS

      echo "CLUSTER_CA=$(aws eks describe-cluster --name cluster-name --region region --query cluster.certificateAuthority.data --output text)" echo "APISERVER_ENDPOINT=$(aws eks describe-cluster --name cluster-name --region region --query cluster.endpoint --output text)" echo "CLUSTER_ID=$(aws eks describe-cluster --name cluster-name --region region --query cluster.id --output text)"
    • Deaktivieren IMDSv1: Standardmäßig unterstützt jeder Knoten den Instanz-Metadatendienst Version 1 () und. IMDSv1 IMDSv2 Sie können deaktivieren IMDSv1. Um zu verhindern, dass future Knoten und Pods in der Knotengruppe verwendet werden IMDSv1, setzen Sie Disable IMDSv1 auf true. 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. Bevor Sie sich für eine VPC entscheiden, sollten Sie sich die VPC-Anforderungen und Überlegungen ansehen.

    • Subnets (Subnetze): Wenn sich Ihr Cluster auf einem Outpost befindet, wählen Sie mindestens ein privates Subnetz in Ihrer VPC. Bevor Sie Subnetze auswählen, überprüfen Sie die Anforderungen und Überlegungen zu Subnetzen. Sie können sehen, welche Subnetze privat sind, indem Sie den jeweiligen Subnetzlink in der Registerkarte Networking (Netzwerk) Ihres Clusters öffnen.

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

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

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

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

Schritt 2: Ermöglichen Sie den Knoten, Ihrem Cluster 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 rolearn 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 Beheben von Problemen mit Amazon EKS-Clustern und -Knoten und unter Problembehandlung Knoten können nicht zu einem Cluster hinzugefügt werden bei lokalen Amazon EKS-Clustern auf AWS Outposts.

  5. Installieren Sie den Amazon-EBS-CSI-Treiber. Weitere Informationen finden Sie unter Installation am GitHub. Stellen Sie im Abschnitt Einrichten der Treiberberechtigung sicher, dass Sie die Anweisungen für die Option Verwenden des IAM-Instance-Profils befolgen. Sie müssen die gp2-Speicherklasse verwenden. Die gp3 Speicherklasse wird nicht unterstützt.

    Führen Sie die folgenden Schritte aus, um eine gp2-Speicherklasse auf Ihrem Cluster zu erstellen.

    1. Führen Sie den folgenden Befehl aus, um die Datei gp2-storage-class.yaml zu erstellen.

      cat >gp2-storage-class.yaml <<EOF apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: ebs-sc provisioner: ebs.csi.aws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp2 encrypted: "true" allowVolumeExpansion: true EOF
    2. Wenden Sie das Manifest auf Ihren Cluster an.

      kubectl apply -f gp2-storage-class.yaml
  6. (Nur GPU-Knoten) Wenn Sie einen GPU-Instance-Typ und ein für Amazon EKS optimiertes beschleunigtes AMI ausgewählt haben, müssen Sie das NVIDIA-Geräte-Plug-In für Kubernetes als DaemonSet auf Ihrem Cluster anwenden. Ersetzen Sie es vX.X.X 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/deployments/static/nvidia-device-plugin.yml

Schritt 3: Zusätzliche Aktionen

  1. (Optional) Stellen Sie eine Beispielanwendung unter Linux bereit Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Linux-Worker-Knoten zu testen.

  2. Wenn Ihr Cluster auf einem Outpost bereitgestellt wird, überspringen Sie diesen Schritt. Wenn Ihr Cluster in der AWS Cloud bereitgestellt wird, sind die folgenden Informationen optional. Wenn die von AmazonEKS_CNI_Policy verwaltete IAM-Richtlinie mit Ihrer Amazon EKS-Knoten-IAM-Rolle verknüpft ist, empfehlen wir, sie stattdessen einer IAM-Rolle zuzuweisen, die Sie dem Kubernetes-Servicekonto zuordnen. aws-node Weitere Informationen finden Sie unter Amazon VPC CNI-Plugin für die Verwendung von IRSA konfigurieren.