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
eksctl
unterstützt Amazon Linux 2023 derzeit nicht.
-
Installieren Sie Version
0.194.0
oder höher des auf Ihrem Gerät installierteneksctl
Befehlszeilentools oder AWS CloudShell. Informationen zum Installieren und Aktualisieren voneksctl
finden Sie in der Dokumentation zueksctl
unter Installation. -
(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-node
Stattdessen ein Servicekonto. Weitere Informationen finden Sie unter Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA. -
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. Ersetzenmy-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 verbleibendenexample 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
angibt. Weitere Informationen dazu finden Sie unter Verwenden von Config-Dateien: gp2 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:
-
kann eine deutlich höhere Anzahl von IP-Adressen zuweisen Pods als die Standardkonfiguration, sieheWeisen Sie EKS Amazon-Knoten mehr IP-Adressen mit Präfixen zu.
-
kann
IPv4
Adressen zuweisen Pods von einem anderen CIDR Block als der der Instanz, sieheBereitstellen pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk. -
kann
IPv6
Adressen zuweisen Pods und Dienste, sieheErfahren Sie mehr über IPv6 Adressen für Cluster, pods, und Dienste. -
die die
containerd
-Laufzeit verwendet, müssen Sie die Knotengruppe mithilfe einerconfig
-Datei bereitstellen; Weitere Informationen finden Sie unter Testen Sie die Amazon Linux 2-Migration von Docker zu containerd. -
Sie haben keinen ausgehenden Internetzugang, sieheStellen Sie private Cluster mit eingeschränktem Internetzugang bereit.
Geben Sie den folgenden Befehl ein, um eine vollständige Liste aller verfügbaren Optionen und Standardwerte anzuzeigen.
eksctl create nodegroup --help
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.
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"
-
-
(Optional) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster zu testen und Linux Knoten.
-
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
-
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
-
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. -
Öffnen Sie die AWS CloudFormation Konsole
. -
Wählen Sie Create stack (Stack erstellen) und dann With new resources (standard) (Mit neuen Ressourcen [Standard]) aus.
-
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 heruntergeladene
amazon-eks-nodegroup.yaml
-Datei aus. -
Klicken Sie auf Weiter.
-
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.
-
Öffnen Sie die EKSAmazon-Konsole
. -
Wählen Sie den Namen des Clusters.
-
Wählen Sie die Registerkarte Network (Network) aus.
-
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-Skriptsunter GitHub. Zum Bereitstellen einer Knotengruppe, die:
-
kann eine deutlich höhere Anzahl von IP-Adressen zuweisen Pods als die Standardkonfiguration, sieheWeisen Sie EKS Amazon-Knoten mehr IP-Adressen mit Präfixen zu.
-
kann
IPv4
Adressen zuweisen Pods von einem anderen CIDR Block als der der Instanz, sieheBereitstellen pods in alternativen Subnetzen mit benutzerdefiniertem Netzwerk. -
kann
IPv6
Adressen zuweisen Pods und Dienste, sieheErfahren Sie mehr über IPv6 Adressen für Cluster, pods, und Dienste. -
die die
containerd
-Laufzeit verwendet, müssen Sie die Knotengruppe mithilfe einerconfig
-Datei bereitstellen; Weitere Informationen finden Sie unter Testen Sie die Amazon Linux 2-Migration von Docker zu containerd. -
Sie haben keinen ausgehenden Internetzugang, sieheStellen Sie private Cluster mit eingeschränktem Internetzugang bereit.
-
-
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 wurde
eksctl
, 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.
-
-
-
Treffen Sie die gewünschte Auswahl auf der Seite Configure stack options (Stackoptionen konfigurieren) und wählen Sie dann Next (Weiter) aus.
-
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.
-
Wenn Ihr Stack fertig erstellt wurde, wählen Sie ihn in der Konsole aus und klicken Sie auf Outputs (Ausgaben).
-
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.
-
Überprüfen Sie, ob Sie bereits über eine
aws-auth
ConfigMap
verfügen.kubectl describe configmap -n kube-system aws-auth
-
Wenn eine
aws-auth
ConfigMap
angezeigt wird, aktualisieren Sie sie nach Bedarf.-
Öffnen Sie
ConfigMap
zum Bearbeiten.kubectl edit -n kube-system configmap/aws-auth
-
Fügen Sie nach Bedarf einen neuen
mapRoles
-Eintrag hinzu. Setzen Sie denrolearn
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 [...]
-
Speichern Sie die Datei und beenden Sie den Text-Editor.
-
-
Wenn die Fehlermeldung
Error from server (NotFound): configmaps "aws-auth" not found
angezeigt wird, wenden Sie die standardmäßigeConfigMap
an.-
Laden Sie die Konfigurationszuordnung herunter.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml
-
Stellen Sie in der
aws-auth-cm.yaml
Datei denrolearn
Wert auf den NodeInstanceRoleWert ein, den Sie im vorherigen Verfahren aufgezeichnet haben. Sie können dies mit einem Texteditor oder durch Ersetzen tunmy-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
-
Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.
kubectl apply -f aws-auth-cm.yaml
-
-
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.
-
(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
-
(Optional) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster zu testen und Linux Knoten.
-
(Optional) Wenn die von Amazon EKS _ CNI IAM _Policy verwaltete Richtlinie (wenn Sie einen
IPv4
Cluster haben) oderAmazonEKS_CNI_IPv6_Policy
(die Sie selbst erstellt haben, wenn Sie einenIPv6
Cluster haben) an Ihre EKSIAMAmazon-Knotenrolle angehängt ist. Wir empfehlen, sie einer IAM Rolle zuzuweisen, die Sie der Kubernetesaws-node
Stattdessen ein Servicekonto. Weitere Informationen finden Sie unter Konfigurieren Sie VPC CNI das zu verwendende Amazon-Plugin IRSA. -
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
. -