Amazon Linux-Knoten auf AWS Outposts erstellen - Amazon EKS

Helfen Sie 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.

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.

Amazon Linux-Knoten auf AWS Outposts erstellen

In diesem Thema wird beschrieben, wie Sie Auto Scaling Scaling-Gruppen von Amazon Linux-Knoten auf einem Outpost starten können, die sich bei Ihrem EKS Amazon-Cluster registrieren. 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 EKS Amazon-Cluster. Informationen zur Bereitstellung eines Clusters in der AWS Cloud finden Sie unterErstellen Sie einen EKS Amazon-Cluster. Informationen zum Bereitstellen eines Clusters in einem Outpost finden Sie unter Erstellen Sie lokale EKS Amazon-Cluster auf AWS Outposts für hohe Verfügbarkeit.

  • Angenommen, Sie erstellen Ihre Knoten in einem Cluster in der AWS Cloud und 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 Cloud) Das AWS 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. Lokale Cluster unterstützen keine IAM Rollen für Dienstkonten.

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 einen lokalen Cluster mit den folgenden auf dieser Seite beschriebenen Tools erstellen:

eksctl

Um selbstverwaltete Linux-Knoten mit eksctl `zu starten

  1. Installieren Sie die Version 0.199.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 Amazon EKS _ CNI IAM _Policy verwaltete Richtlinie mit Ihrer EKSIAMAmazon-Knotenrolle verknüpft ist, empfehlen wir, sie einer IAM Rolle zuzuweisen, die Sie der Kubernetes aws-nodeStattdessen ein Dienstkonto. Weitere Informationen finden Sie unter Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA. 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 mit demselben erstellt Kubernetes Version wie die Steuerungsebene, standardmäßig.

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

    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 bereit, um Ihren Cluster zu testen und Linux Knoten.

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

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

      Um einen für Amazon EKS optimierten Accelerated zu verwendenAMI, amazon-linux-2 ersetzen Sie ihn durchamazon-linux-2-gpu. Um einen für Amazon EKS optimierten Arm zu verwendenAMI, amazon-linux-2 ersetzen Sie ihn durchamazon-linux-2-arm64.

      Anmerkung

      Die EKS Amazon-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 Ihre eigene benutzerdefinierte AMI (anstelle einer für 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: Es gibt mehrere optionale Argumente, die Sie an Ihre Knoten übergeben können. Weitere Informationen finden Sie in den Informationen zur Verwendung von Bootstrap-Skripten unter GitHub. Wenn Sie Knoten zu einem EKS lokalen Amazon-Cluster auf AWS Outposts hinzufügen (wo Kubernetes Kontrollebeneninstanzen, die auf AWS Outposts ausgeführt werden) und der Cluster hat keine Eingangs- und Ausgangsinternetverbindung (auch bekannt als private Cluster), dann 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}
    • D isableIMDSv 1: Standardmäßig unterstützt jeder Knoten den Instanz-Metadatendienst Version 1 () und. IMDSv1 IMDSv2 Sie können deaktivierenIMDSv1. Um future Knoten zu verhindern und Pods Setzen Sie D isableIMDSv 1 in der IMDSv1 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. Bevor Sie sich für eine entscheidenVPC, sollten Sie sich mit VPCden Anforderungen und Überlegungen vertraut machen.

    • Subnetze: Wenn sich Ihr Cluster in einem Outpost befindet, wählen Sie mindestens ein privates Subnetz in Ihrem. 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 dadurch AWS CloudFormation möglicherweise Ressourcen erstellt werden. IAM , 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 dies, wenn Sie Ihre EKS Amazon-Knoten konfigurieren.

Schritt 2: Aktivieren Sie die Knoten, um 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 EKS Amazon-Clustern und -Knoten und unter Fehlerbehebung Knoten können nicht zu einem Cluster hinzugefügt werden bei lokalen EKS Amazon-Clustern auf AWS Outposts.

  5. Installieren Sie den EBS CSI Amazon-Treiber. Weitere Informationen finden Sie unter Installation am GitHub. Folgen Sie im Abschnitt Treiberberechtigungen einrichten unbedingt den Anweisungen für die Option IAMInstanzprofil verwenden. 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 einen für Amazon EKS optimierten Accelerated ausgewählt habenAMI, müssen Sie das NVIDIAGeräte-Plugin für Kubernetes als DaemonSet auf Ihrem 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. 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 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.

📝 Bearbeiten Sie diese Seite auf GitHub