Wie verwende ich das Bottlerocket-AMI, um eine verwaltete Knotengruppe in Amazon EKS zu erstellen?

Lesedauer: 3 Minute
0

Ich möchte wissen, wie man mit dem Amazon Machine Image (AMI) von Bottlerocket und eksctl eine von Bottlerocket verwaltete Knotengruppe in Amazon Elastic Kubernetes Service (Amazon EKS) erstellt.

Lösung

Voraussetzung

Vergewissern Sie sich, dass Sie eksctl 0.124.0 oder eine neuere Version verwenden, bevor Sie die Lösungsschritte umsetzen.

Führen Sie den folgenden Befehl aus, um Ihre Version zu ermitteln:

$ eksctl version

Erstellen einer bottlerocket.yaml-Datei

Öffnen Sie das Terminal, in dem Sie eksctl installiert haben. Verwenden Sie dann das folgende Beispiel, um die Datei bottlerocket.yaml zu erstellen und zu speichern.

Hinweis:

  • Ersetzen Sie mybottlerocket-cluster durch den Namen Ihres Clusters. Der Name darf nur Bindestriche und alphanumerische Zeichen enthalten, wobei zwischen Groß- und Kleinschreibung unterschieden wird. Er muss mit einem alphabetischen Zeichen beginnen und darf eine Länge von 100 Zeichen nicht überschreiten.
  • Ersetzen Sie bottlerocket-nodegroup durch einen Namen für Ihre Knotengruppe. Der Name darf nur Bindestriche und alphanumerische Zeichen enthalten, wobei zwischen Groß- und Kleinschreibung unterschieden wird. Er muss mit einem alphabetischen Zeichen beginnen und darf eine Länge von 100 Zeichen nicht überschreiten.
  • Geben Sie den Instance-Typ an. Um beispielsweise auf einer Arm-Instance bereitzustellen, ersetzen Sie m5.xlarge durch einen Arm-Instance-Typ.
  • Ersetzen Sie eks_bottlerocket durch den Namen eines SSH-Schlüsselpaars von Amazon Elastic Compute Cloud (Amazon EC2). Nachdem Sie die Knoten gestartet haben, verwenden Sie SSH, um eine Verbindung zu ihnen herzustellen.
    Hinweis: Wenn Sie kein SSH-Schlüsselpaar von Amazon EC2 haben, erstellen Sie eines in der AWS-Managementkonsole. Weitere Informationen finden Sie unter Amazon EC2 key pairs and Amazon EC2 instances.
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: mybottlerocket-cluster
  region: us-west-2
  version: '1.27'

managedNodeGroups:
  - name: bottlerocket-nodegroup
    instanceType: m5.xlarge
    minSize: 2
    maxSize: 4
    desiredCapacity: 3
    amiFamily: Bottlerocket
    labels: { role: br-worker }
    tags:
       nodegroup-type: Bottlerocket
    ssh:
      allow: true
      publicKeyName: eks_bottlerocket

Hinweis: Sie können von Bottlerocket verwaltete Knotengruppen für allgemeine, rechenoptimierte, arbeitsspeicheroptimierte und speicheroptimierte Instance-Typen erstellen. Das Bottlerocket-AMI unterstützt keine beschleunigten Computing-Instances.

Erstellen der Knotengruppe und Auflisten ihrer Knoten im EKS-Cluster

  1. Führen Sie den folgenden eksctl-Befehl aus, um eine Knotengruppe zu erstellen:

    $ eksctl create nodegroup -f bottlerocket.yaml[✔]  created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
  2. Listen Sie die Knoten im EKS-Cluster und Ihre Attribute auf:

    $ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystemNODE                                          ARCH    OS-Image                                OS
    ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux
    ip-192-168-xx-xx.us-west-2.compute.internal   amd64   Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux

Herstellen einer Verbindung zu den Bottlerocket-AMI-Knoten (optional)

Stellen Sie über AWS Systems Manager eine Verbindung zu den neuen Bottlerocket-Knoten her. Der AWS Systems Manager Agent (SSM Agent) wird auf dem Knoten ausgeführt, da Sie die Systems-Manager-Berechtigung für die Knoten-Instance-Rolle bereits aktiviert haben.

Führen Sie den folgenden Befehl aus, um die Instance-IDs zu finden:

$ kubectl get nodes -o=custom-columns=NODE:.metadata.name,ARCH:.status.nodeInfo.architecture,OS-Image:.status.nodeInfo.osImage,OS:.status.nodeInfo.operatingSystem,InstanceId:.spec.providerIDNODE                                           ARCH    OS-Image                                OS      InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal    amd64    Bottlerocket OS 1.17.0 (aws-k8s-1.27)   linux   aws:///us-west-2b/i-08c218b729ecf9b5d

Starten einer Systems-Manager-Sitzung

Standardmäßig verfügt Bottlerocket über einen Kontrollcontainer, der auf einer separaten Instance von containerd ausgeführt wird. In diesem Container wird der SSM Agent ausgeführt. Sie können damit Befehle ausführen oder interaktive Shell-Sitzungen auf Bottlerocket-Knoten starten.

Wählen Sie eine Instance aus und starten Sie eine Systems-Manager-Sitzung. Das folgende Beispiel zeigt einen Systems-Manager-Sitzungsbefehl für die i-0cf32f13f60c2f501-Instance:

$ aws ssm start-session --target i-0cf32f13f60c2f501 --region us-west-2
Starting session with SessionId: EKS-Test-User-0077e4c89ad2bc888
          Welcome to Bottlerocket's control container!

Verwandte Informationen

Launching self-managed Bottlerocket nodes

What is Amazon EKS?

Instance-Typen (Amazon EC2)

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten