Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
Selbstverwaltete Bottlerocket-Knoten erstellen
Anmerkung
Verwaltete Knotengruppen bieten möglicherweise einige Vorteile für Ihren Anwendungsfall. Weitere Informationen finden Sie unter Vereinfachung des Knotenlebenszyklus mit verwalteten Knotengruppen.
In diesem Thema wird beschrieben, wie Sie Auto-Scaling-Gruppen von Bottlerocketeksctl-Dokumentation.
Weitere Informationen zu direkten Upgrades finden Sie unter Update-Operator für Bottlerocket
Wichtig
-
Amazon-EKS-Worker-Knoten sind Standard-Amazon-EC2-Instances und werden Ihnen basierend auf normalen Amazon-EC2-Instance-Preisen berechnet. Weitere Informationen dazu finden Sie unter Amazon EC2 – Preise
. -
Sie können Bottlerocket-Knoten in erweiterten Amazon-EKS-Clustern in AWS-Outposts starten, aber Sie können sie nicht in lokalen Clustern in AWS-Outposts starten. Weitere Informationen finden Sie unter Bereitstellung von Amazon EKS On-Premises mit AWS Outposts.
-
Sie können auf Amazon-EC2-Instances mit
x86- oder Arm -Prozessoren bereitstellen. Sie können jedoch nicht auf Instances bereitstellen, die über Inferentia-Chips verfügen. -
Bottlerocket ist mit AWS CloudFormation kompatibel. Es gibt jedoch keine offizielle CloudFormation-Vorlage, die kopiert werden kann, um Bottlerocket-Knoten für Amazon EKS bereitzustellen.
-
Bottlerocket-Images werden nicht mit einem SSH-Server oder einer Shell geliefert. Sie können Out-of-Band-Zugriffsmethoden verwenden, um SSH die Aktivierung des Administrator-Containers zu ermöglichen und einige Bootstrapping-Konfigurationsschritte mit Benutzerdaten zu übergeben. Weitere Informationen dazu finden Sie in diesen Abschnitten im bottlerocket README.md
auf GitHub:
Für diesen Vorgang ist eksctl Version 0.214.0 oder höher erforderlich. Sie können Ihre -Version mit dem folgenden Befehl überprüfen:
eksctl version
Anweisungen zum Installieren oder Aktualisieren von eksctl finden Sie unter Installationeksctl-Dokumentation. HINWEIS: Dieses Verfahren funktioniert nur für Cluster, die mit eksctl erstellt wurden.
-
Kopieren Sie den folgenden Inhalt auf Ihr Gerät. Ersetzen Sie
my-clusterdurch den Namen Ihres Clusters. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es 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 eindeutig sein, in der/dem Sie den Cluster erstellen. Ersetzen Sieng-bottlerocketdurch 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. Um die Bereitstellung auf Arm-Instances durchzuführen, ersetzen Siem5.largedurch einen Arm-Instance-Typ. Ersetzen Siemy-ec2-keypair-namemit dem Namen eines Amazon-EC2-SSH-Schlüsselpaars ein, das Sie für die Verbindung über SSH in Ihre Knoten verwenden können, nachdem sie gestartet wurden. Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS-Managementkonsole erstellen. Weitere Informationen finden Sie unter Amazon-EC2-Schlüsselpaare im Amazon-EC2-Benutzerhandbuch. Ersetzen Sie alle verbleibendenBeispielwerte durch Ihre eigenen Werte.Nachdem Sie das Ersetzen vorgenommen haben, führen Sie den geänderten Befehl aus, um diebottlerocket.yaml-Datei zu erstellen.Wenn Sie einen Instance-Typ für Arm Amazon EC2 angeben, überprüfen Sie vor der Bereitstellung die Hinweise in Amazon-EKS-optimierte Arm-Amazon-Linux-AMIs. Anweisungen zum Bereitstellen mit einem benutzerdefinierten AMI finden Sie unter Erstellen von Bottlerocket
auf GitHub und Support für benutzerdefinierte AMI in der eksctl-Dokumentation. Um eine verwaltete Knotengruppe bereitzustellen, stellen Sie ein benutzerdefiniertes AMI mithilfe einer Startvorlage bereit. Weitere Informationen finden Sie unter Verwaltete Knoten mit Startvorlagen anpassen.Wichtig
Um einen Knotengruppe in den Subnetzen AWS Outposts, AWS Wavelength oder AWS Local Zone bereitzustellen, übergeben Sie beim Erstellen des Clusters keine Subnetze von AWS Outposts, AWS Wavelength oder AWS Local Zone. Sie müssen die Subnetze im folgenden Beispiel angeben. Weitere Informationen finden Sie unter Verwenden von Config-Dateien
und im Config-Datei-Schema in der eksctl-Dokumentation. Ersetzen Sie denregion-codedurch die AWS-Region, in der sich Ihr Cluster befindet.cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.33' iam: withOIDC: true nodeGroups: - name: ng-bottlerocket instanceType: m5.large desiredCapacity: 3 amiFamily: Bottlerocket ami: auto-ssm iam: attachPolicyARNs: - arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore - arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy ssh: allow: true publicKeyName: my-ec2-keypair-name EOF -
Stellen Sie den Treiber mit dem folgenden Befehl bereit.
eksctl create nodegroup --config-file=bottlerocket.yamlEine 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) Erstellen eines KubernetesPersistenter
auf einem Bottlerocket-Knoten mit demAmazon-EBS-CSI-Plugin . Der standardmäßige Amazon-EBS-Treiber basiert auf Dateisystem-Tools, die nicht in Bottlerocket enthalten sind. Weitere Informationen zur Erstellung einer Speicherklasse mit dem Treiber finden Sie unter Kubernetes-Volume-Speicher mit Amazon EBS verwenden. -
(Optional) Standardmäßig setzt
kube-proxyden Kernelparameternf_conntrack_maxauf einen Standardwert, der sich von dem unterscheiden kann, was Bottlerocket ursprünglich beim Booten festgelegt hat. Um die Standardeinstellungvon Bottlerocket beizubehalten, bearbeiten Sie die kube-proxy-Konfiguration im folgenden Befehl.kubectl edit -n kube-system daemonset kube-proxyFügen Sie
--conntrack-max-per-coreund--conntrack-minzu denkube-proxy-Argumenten im folgenden Beispiel hinzu. Eine Einstellung von0impliziert keine Änderung.containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --conntrack-max-per-core=0 - --conntrack-min=0 -
(Optional) Bereitstellen einer-Beispielanwendung, um Ihre Bottlerocket-Knoten zu testen.
-
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.
-
Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS), beispielsweise 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
. -