Selbstverwaltete Bottlerocket-Knoten starten - Amazon EKS

Selbstverwaltete Bottlerocket-Knoten starten

In diesem Thema finden Sie Hinweise zum Starten einer Auto Scaling-Gruppe von Bottlerocket-Knoten, die mit Ihrem Amazon EKS-Cluster registriert sind. Bottlerocket ist ein Linux-basiertes Open-Source-Betriebssystem, das vonAWSzum Ausführen von Containern auf virtuellen Maschinen oder Bare-Metal-Hosts. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen. Weitere Informationen zu SSH-Agenten finden Sie in der GitHub-Dokumentation.

Wichtig

Amazon EKS-Worker-Knoten sind Standard-Amazon EC2-Instances und werden Ihnen basierend auf normalen Amazon EC2-Instance-Preisen berechnet. Weitere Informationen finden Sie unter Amazon EC2 – Preise.

Wichtig
  • Sie können auf Amazon EC2 Instances mit x86- oder Arm-Prozessoren bereitstellen, jedoch nicht auf Instances mit GPUs oder Inferentia-Chips.

  • Sie können die folgenden Regionen nicht bereitstellen: China (Beijing) (cn-north-1China (Ningxia) (cn-northwest-1),AWSGovCloud (USA-Ost) (us-gov-east-1), oderAWSGovCloud (USA-West) (us-gov-west-1) enthalten.

  • Es gibt keineAWS CloudFormation-Vorlage zum Bereitstellen von Knoten mit.

So starten Sie Bottlerocket-Knoten miteksctl

Für diesen Vorgang ist eksctl Version 0.67.0 oder höher erforderlich. Sie können Ihre Version mit dem folgenden Befehl überprüfen:

eksctl version

Weitere Informationen zur Installation oder zum Upgrade von eksctl finden Sie im Abschnitt Installieren oder Aktualisieren von eksctl.

Anmerkung

Dieses Verfahren funktioniert nur für Cluster, die mit erstellt wurden eksctl.

  1. Erstellen Sie eine Datei mit dem Namen bottlerocket.yaml und dem folgenden Inhalt. Ersetzen Sie example values durch Ihre eigenen Werte: Wenn Sie die Bereitstellung auf -Arm-Instances durchführen möchten, ersetzen Siem5.largemit einem Arm-Exemplartyp. Wenn Sie einen Arm Amazon EC2 Instance-Typ angeben, überprüfen Sie die Überlegungen inAmazon EKS-optimierte Arm Amazon Linux-AMIsbevor Sie eine Bereitstellung durchführen. Wenn Sie eine Bereitstellung mit einem benutzerdefinierten AMI durchführen möchten, finden Sie unterBuilding Botlerocketauf GitHub undBenutzerdefinierte AMI Unterstützungimeksctl-Dokumentation. Wenn Sie eine verwaltete Knotengruppe bereitstellen möchten, müssen Sie ein benutzerdefiniertes AMI mithilfe einer Startvorlage bereitstellen. Weitere Informationen finden Sie unter Support für Startvorlagen.

    Wichtig

    Wenn Sie eine Knotengruppe fürAWS Outposts,AWS Wavelength, oderAWSSubnetze für Local Zones, dann dieAWS Outposts,AWS Wavelength, oderAWSLocal Zones -Subnetze dürfen beim Erstellen des Clusters nicht übergeben worden sein, und 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.

    --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: us-west-2 version: '1.21' 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 ssh: allow: true publicKeyName: YOUR_EC2_KEYPAIR_NAME
  2. Stellen Sie den Treiber mit dem folgenden Befehl bereit.

    eksctl create cluster --config-file=bottlerocket.yaml

    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) Erstellen eines KubernetesPersistenterauf 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 Amazon-EBS-CSI-Treiber.

  4. (Optional) Standardmäßigkube-proxysetzt das einnf_conntrack_max-Kernel-Parameter auf einen Standardwert, der sich von dem unterscheiden kann, was Bottlerocket ursprünglich beim Booten festgelegt hat. Wenn Sie es vorziehen, Bottlerocket's-StandardeinstellungBearbeiten Sie die Kube-Proxy-Konfiguration mit dem folgenden Befehl.

    kubectl edit -n kube-system daemonset kube-proxy

    Löschen Sie --conntrack-max-per-core und fügen Sie --conntrack-min to the kube-proxy hinzu, wie im folgenden Beispiel gezeigt. 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
  5. (Optional) Bereitstellen einer-Beispielanwendung, um Ihre Bottlerocket-Knoten zu testen.

  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.