Starten selbstverwalteter Amazon Linux-Knoten - Amazon EKS

Starten selbstverwalteter Amazon Linux-Knoten

In diesem Thema finden Sie Hinweise zum Starten einer Auto Scaling-Gruppe von Linux-Workerknoten, 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 selbst verwaltete Amazon Linux 2-Knoten miteksctloder AWS Management Console launchen.

eksctl

Prerequisites

  • Ein vorhandener Amazon EKS-Cluster, der mit eksctl erstellt wurde.

  • eksctl-Version0.67.0 oder höher Weitere Informationen zur Installation oder zum Upgrade von eksctl finden Sie im Abschnitt Installieren oder Aktualisieren von eksctl.

So starten Sie selbstverwaltete Linux-Knoten miteksctl

  1. (Optional) Wenn dieAmazonEKS_CNI_Policyverwaltete IAM-Richtlinie ist an IhreAmazon-EKS-Knoten-IAM-Rollewird empfohlen, sie einer IAM-Rolle zuzuweisen, die Sie dem Kubernetesaws-node-Dienstkonto. Weitere Informationen finden Sie unter Konfigurieren des Amazon-VPC-CNI-Plug-Ins zur Verwendung von IAM-Rollen für Servicekonten.

  2. Der folgende Befehl erstellt eine Knotengruppe in einem vorhandenen Cluster. Ersetzen Sie die<example values>(einschließlich<>) durch eigene Werte. Die Knoten werden standardmäßig mit derselben Kubernetes-Version wie die Steuerungsebene erstellt.

    Eine vollständige Liste der unterstützten Werte für--node-typefinden Sie in der Liste unteramazon-eks-nodegroup.yamlauf GitHub: Bevor Sie einen Wert für --node-type wählen, sehen Sie sich Auswählen eines Amazon-EC2-Instance-Typs an.

    Ersetzen <my-key> durch den Namen Ihres Amazon EC2 key pair oder -öffentlichen Schlüssels. Dieser Schlüssel wird verwendet, um SSH in Ihre Knoten nach dem Start. Wenn Sie noch kein Amazon EC2-Schlüsselpaar vorliegen haben, können Sie eines in der AWS Management Console erstellen. Weitere Informationen 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 für AWS Outposts, AWS Wavelength,oder AWSLocal Zones-Subnetze bereitstellen wollen, dann dürfeen die AWS Outposts, AWS Wavelength oder AWS Local Zones-Subnetze beim Erstellen des Clusters nicht übergeben worden sein. Sie müssen die Knotengruppe mit einer Konfigurationsdatei erstellen und die AWS Outposts, AWS Wavelength oder AWS Local Zones Subnetze. Weitere Informationen 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>

    Wenn Sie eine Knotengruppe bereitstellen möchten, mit der Ihre Instance Pods eine deutlich höhere Anzahl von IP-Adressen zuweisen kann, weisen Sie Pods aus einem anderen CIDR-Block als der Instanz IP-Adressen zu, und aktivieren Sie diecontainerdRuntime müssen Sie die Knotengruppe mithilfe einer Konfigurationsdatei bereitstellen. Weitere Informationen finden Sie unter Erhöhen Sie die Anzahl der verfügbaren IP-Adressen für Ihre Amazon-EC2-Knoten, Benutzerdefinierte CNI-Netzwerke, Aktivieren der containerd-Laufzeit-Bootstrap-Flag. Weitere Informationen zum Bereitstellen einer privaten Knotengruppe ohne ausgehenden Internetzugang finden Sie unter Private Cluster. 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 Worker-Knoten können nicht mit dem Cluster verknüpft werden im Handbuch zur Fehlerbehebung.

    Ausgabe:

    Sie stellen einen oder mehrere Arbeitsknoten in einer Knotengruppe bereit. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

    [✔] created 1 nodegroup(s) in cluster "<my-cluster>"
  3. (Optional) Wenn Sie planen, IAM-Rollen allen Kubernetes-Dienstkonten zuzuweisen, sodass Pods nur über die erforderlichen Mindestberechtigungen verfügen und keine Pods im Cluster aus anderen Gründen Zugriff auf den Amazon EC2 Instance-Metadaten-Dienst (IMDS) benötigen, z. B. das Abrufen der aktuellen Region, dann müssen wir empfehlen, den Pod-Zugriff auf IMDS zu blockieren. Weitere Informationen erhalten Sie unter IAM-Rollen für Servicekonten und Einschränken des Zugriffs auf die Anmeldeinformationen des IMDS- und Amazon EC2-Instance-Profils.

AWS Management Console

Prerequisites

Um selbst verwaltete Linux-Knoten mit demAWS Management Console

  1. Warten Sie, bis der Status des Clusters als angezeigt wird ACTIVE. Wenn Sie Ihre Worker-Knoten starten, bevor der Cluster aktiv ist, werden die Worker-Knoten nicht mit dem Cluster registriert und Sie müssen sie neu starten.

  2. Laden Sie die neueste Version des AWS CloudFormation-Quellcodes herunter.

    curl -o amazon-eks-nodegroup.yaml https://raw.githubusercontent.com/awslabs/amazon-eks-ami/master/amazon-eks-nodegroup.yaml
  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). Wählen Sie das ausamazon-eks-nodegroup.yaml-Datei, die Sie in Schritt 2 heruntergeladen haben, und wählen Sie dann Weiter aus.

  6. Geben Sie auf der Seite Specify stack details (Stack-Details angeben) die folgenden Parameter ein:

    • Stack name (Stack-Name): Wählen Sie einen Stack-Namen für Ihren AWS CloudFormation-Stack aus. Sie können ihn beispielsweise cluster-name-nodes (cluster-name-Knoten) nennen.

    • ClusterName: Geben Sie den Namen ein, den Sie beim Erstellen 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 SecurityGroups-Wert aus der AWS CloudFormation-Ausgabe, die Sie mit VPC erstellt haben.

    • NodeGroupName: Geben Sie einen Namen für Ihren Knotengruppe ein. Dieser Name kann zu einem späteren Zeitpunkt zum Identifizieren der Auto Scaling-Knotengruppe verwendet werden, die für Ihre Worker-Knoten verwendet wird.

    • NodeAutoScalingGroupMinSize: Geben Sie die Mindestanzahl an Knoten an, in die Ihre Auto Scaling-Gruppe des Worker-Knotens skaliert werden kann.

    • NodeAutoScalingGroupDesiredCapacity: Geben Sie die gewünschte Anzahl von Knoten ein, auf die beim Erstellen des Stacks skaliert werden soll.

    • NodeAutoScalingGroupMaxSize: Geben Sie die Höchstanzahl an Knoten an, aus der Ihre Auto Scaling-Gruppe des Worker-Knotens skaliert werden kann.

    • NodeInstanceType: Wählen Sie einen Instance-Typ für Ihre Worker-Knoten aus. Sie könnenSehen Sie sich die Liste animamazon-eks-nodegroup.yaml-Datei auf GitHub. Bevor Sie einen Instanztyp auswählen, lesen Sie Auswählen eines Amazon-EC2-Instance-Typs.

    • NodeImageIdSSMParam: Vorab mit dem Amazon EC2 Systems Manager Parameter einer kürzlich von Amazon EKS optimierten Amazon Linux AMI -ID für eine Kubernetes-Version aufgefüllt. Wenn Sie eine andere Kubernetes-Nebenversion verwenden möchten, die mit Amazon EKS unterstützt wird, können Sie 1.x durch eine andereunterstützte Version ersetzen. Wir empfehlen, dieselbe Kubernetes-Version wie Ihr Cluster anzugeben.

      Wenn Sie das Amazon EKS-optimierte beschleunigte AMI verwenden möchten, ersetzen Sie amazon-linux-2 durch amazon-linux-2-gpu. Wenn Sie das Amazon EKS-optimierte Arm AMI verwenden möchten, ersetzen Sie amazon-linux-2 durch amazon-linux-2-arm64.

      Anmerkung

      Das Amazon EKS-Knoten-AAMI basiert auf Amazon Linux 2. 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 Amazon EKS-optimierten AMI) verwenden, geben Sie eine Workerknoten-AMI-ID für Ihre Region ein. Wenn Sie hier einen Wert angeben, werden alle Werte im Feld NodeImageIdSSMParam außer Kraft gesetzt.

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

    • KeyName: Geben Sie den Namen eines Amazon EC2 SSH-Schlüsselpaars ein, das Sie für die Verbindung über SSH in Ihre Arbeitsknoten verwenden können, nachdem sie gestartet wurden. Wenn Sie noch kein Amazon EC2-Schlüsselpaar vorliegen haben, können Sie eines in der AWS Management Console erstellen. Weitere Informationen finden Sie unter Amazon EC2-Schlüsselpaare im Amazon EC2-Benutzerhandbuch für Linux-Instances.

      Anmerkung

      Wenn Sie hier kein Schlüsselpaar angeben, schlägt die Erstellung des AWS CloudFormation-Stacks fehl.

    • BootstrapArguments: Geben Sie alle optionalen Argumente an, die an das Worker-Knoten-Bootstrap-Skript übergeben werden sollen, wie z. B. zusätzliche kubelet-Argumente. Weitere Informationen finden Sie in den Bootstrap-Skript-Nutzungsinformationen auf GitHub. Wenn Sie eine Knotengruppe bereitstellen möchten, mit der Ihre Instance Pods eine deutlich höhere Anzahl von IP-Adressen zuweisen kann, weisen Sie Pods aus einem anderen CIDR-Block als der Instanz IP-Adressen zu, aktivieren Sie die Optioncontainerdoder einen privaten -Cluster ohne ausgehenden Internetzugang bereitstellen, finden Sie unter. Weitere Informationen finden Sie unter.Erhöhen Sie die Anzahl der verfügbaren IP-Adressen für Ihre Amazon-EC2-Knoten,Benutzerdefinierte CNI-Netzwerke,Aktivieren der containerd-Laufzeit-Bootstrap-Flag, undPrivate Clusterfür Argumente, die hier hinzugefügt werden sollen.

    • DisableImdsv1: Jeder Knoten unterstützt standardmäßig den Instanz-Metadatendienst Version 1 (IMDSv1) und IMDSv2, Sie können jedoch IMDSv1 deaktivieren. Selecttrue, wenn keine Knoten in der Knotengruppe oder Pods, die auf den Knoten in der Knotengruppe geplant sind, IMDSv1 verwenden sollen. Weitere Informationen finden Sie unter Konfiguration des Instance-Metadatenservice. Weitere Informationen zum Einschränken des Zugriffs auf API-Operationen finden Sie unter Einschränken des Zugriffs auf die Anmeldeinformationen des IMDS- und Amazon EC2-Instance-Profils.

    • VpcId Geben Sie die ID für die VPC ein, die Sie in 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 Worker-Knoten gestartet werden sollen.

      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 Worker-Knoten, die Sie in diesem öffentlichen Subnetz bereitstellen, keine öffentliche IP-Adresse zugewiesen, und diese können nicht mit dem Cluster oder anderen AWS-Services kommunizieren. Wenn das Subnetz vor dem 26. März 2020 unter Verwendung einer der Amazon EKS–AWS CloudFormationVPC-Vorlagen- oder von eksctl 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 Worker-Knoten in einem privaten Subnetz bereitgestellt wird, kann er über ein NAT-Gateway mit dem Cluster und anderen AWS-Services kommunizieren.

      • Wenn die Subnetze keinen Internetzugang haben, stellen Sie sicher, dass Sie die Überlegungen und zusätzlichen Schritte in kennen Private Cluster.

      • Wenn Sie die Knoten in einem Cluster von 1.18 oder früher bereitstellen, stellen Sie sicher, dass die ausgewählten Subnetze mit dem Clusternamen gekennzeichnet sind. Ersetzenmy-cluster(einschließlich<>) mit dem Namen Ihres Clusters und führen Sie dann den folgenden Befehl aus, um eine Liste der Subnetze anzuzeigen, die derzeit mit Ihrem Clusternamen gekennzeichnet sind.

        aws ec2 describe-subnets --filters Name=tag:kubernetes.io/cluster/<my-cluster>,Values=shared | grep SubnetId

        Wenn das Subnetz, das Sie auswählen möchten, nicht in der Ausgabe des vorherigen Befehls zurückgegeben wird, müssen Sie das Tag manuell dem Subnetz hinzufügen. Weitere Informationen finden Sie unter Subnetz-Markierung.

      • Wenn Sie die OptionAWS Outposts,AWS Wavelength, oderAWSSubnetze für Local Zones verwenden, dürfen die Subnetze beim Erstellen des Clusters nicht übergeben worden sein.

  7. Bestätigen Sie, dass der Stack IAM-Ressourcen erstellen kann, und wählen Sie dann Create stack (Stack erstellen) aus.

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

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

So aktivieren Sie die Worker-Knoten, die Ihrem Cluster beitreten sollen

Anmerkung

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

  1. Laden Sie die AWS IAM Authenticator-Konfigurationszuordnung herunter, bearbeiten Sie sie und wenden Sie sie an.

    1. Laden Sie die Konfigurationszuordnung herunter:

      curl -o aws-auth-cm.yaml https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm.yaml
    2. Öffnen Sie die Datei mit einem Text-Editor. Ersetzen Sie das <ARN of instance role (not instance profile)> Snippet durch den NodeInstanceRole-Wert, den Sie im vorherigen Verfahren notiert haben, und speichern Sie die Datei.

      Wichtig

      Ändern Sie keine weiteren Zeilen in dieser Datei.

      apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: <ARN of instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes
    3. Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.

      kubectl apply -f aws-auth-cm.yaml
      Anmerkung

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

      Wenn Arbeitsknoten dem Cluster nicht beitreten können, finden Sie weitere Informationen unter Worker-Knoten können nicht mit dem Cluster verknüpft werden im Handbuch zur Fehlerbehebung.

  2. Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den Ready-Status eintreten.

    kubectl get nodes --watch
  3. (Nur GPU-Knoten) Wenn Sie einen GPU-Instance-Typ und das Amazon EKS-optimierte beschleunigte AMI ausgewählt haben, müssen Sie das NVIDIA-Geräte-Plugin für Kubernetes mit dem folgenden Befehl als DaemonSet auf den Cluster anwenden.

    kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.9.0/nvidia-device-plugin.yml
  4. (Optional) Stellen Sie eine Linux-Beispielarbeitslast bereit Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Linux-Workerknoten zu testen.

  5. (Optional) Wenn dieAmazonEKS_CNI_Policyverwaltete IAM-Richtlinie ist an IhreAmazon-EKS-Knoten-IAM-Rollewird empfohlen, sie einer IAM-Rolle zuzuweisen, die Sie dem Kubernetesaws-node-Dienstkonto. Weitere Informationen finden Sie unter Konfigurieren des Amazon-VPC-CNI-Plug-Ins zur Verwendung von IAM-Rollen für Servicekonten.

  6. (Optional) Wenn Sie planen, IAM-Rollen allen Kubernetes-Dienstkonten zuzuweisen, sodass Pods nur über die erforderlichen Mindestberechtigungen verfügen und keine Pods im Cluster aus anderen Gründen Zugriff auf den Amazon EC2 Instance-Metadaten-Dienst (IMDS) benötigen, z. B. das Abrufen der aktuellen Region, dann müssen wir empfehlen, den Pod-Zugriff auf IMDS zu blockieren. Weitere Informationen erhalten Sie unter IAM-Rollen für Servicekonten und Einschränken des Zugriffs auf die Anmeldeinformationen des IMDS- und Amazon EC2-Instance-Profils.