Usando AWS re:Post, accetti AWS re:Post Termini di utilizzo

Come posso utilizzare l'AMI Bottlerocket per creare un gruppo di nodi gestiti in Amazon EKS?

4 minuti di lettura
0

Voglio imparare come creare un gruppo di nodi gestiti da Bottlerocket in Amazon Elastic Kubernetes Service (Amazon EKS) utilizzando Bottlerocket Amazon Machine Image (AMI) ed eksctl.

Risoluzione

Prerequisito

Prima di completare i passaggi di risoluzione, conferma di avere eksctl versione 0.124.0 o successiva.

Per verificare la tua versione, esegui il seguente comando:

$ eksctl version

Crea un file bottlerocket.yaml

Apri il terminale in cui hai installato eksctl. Quindi, utilizza il seguente esempio per creare e salvare il file bottlerocket.yaml.

Nota:

  • Sostituisci mybottlerocket-cluster con il nome del tuo cluster. Il nome può contenere solo trattini e caratteri alfanumerici con distinzione tra maiuscole e minuscole. Deve iniziare con un carattere alfabetico e non può superare i 100 caratteri.
  • Sostituisci bottlerocket-nodegroup con un nome per il tuo gruppo di nodi. Il nome può contenere solo trattini e caratteri alfanumerici con distinzione tra maiuscole e minuscole. Deve iniziare con un carattere alfabetico e non può superare i 100 caratteri.
  • Specifica il tipo di istanza. Ad esempio, per eseguire la distribuzione su un'istanza Arm, sostituisci m5.xlarge con un tipo di istanza Arm.
  • Sostituisci eks_bottlerocket con il nome di una coppia di chiavi SSH Amazon Elastic Compute Cloud (Amazon EC2). Dopo aver avviato i nodi, usa SSH per connetterti ad essi.
    Nota: Se non disponi di una coppia di chiavi SSH Amazon EC2, creane una nella Console di gestione AWS. Per altre informazioni, consulta Amazon EC2 key pairs and Linux 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

Nota: È possibile creare gruppi di nodi gestiti da Bottlerocket per tipi di istanze generici, ottimizzati per il calcolo, ottimizzati per la memoria e ottimizzati per lo storage. L'AMI Bottlerocket non supporta i tipi di istanze di elaborazione accelerata.

Crea il gruppo di nodi ed elenca i suoi nodi nel cluster EKS

  1. Esegui il seguente comando eksctl per creare un gruppo di nodi:

    $ eksctl create nodegroup -f bottlerocket.yaml[✔]  created 1 nodegroup(s) in cluster "mybottlerocket-cluster"
  2. Elenca i nodi nel cluster EKS e i tuoi attributi:

    $ 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

Connessione ai nodi AMI Bottlerocket (opzionale)

Connettiti ai nuovi nodi Bottlerocket tramite una sessione di AWS Systems Manager. AWS Systems Manager Agent (SSM Agent) viene eseguito sul nodo perché hai già attivato l'autorizzazione Systems Manager per il ruolo dell'istanza del nodo.

Esegui il comando seguente per trovare gli ID delle istanze:

$ 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

Avvio di una sessione di Systems Manager

Per impostazione predefinita, Bottlerocket ha un contenitore di controllo che viene eseguito su un'istanza separata di containerd. Questo contenitore esegue SSM Agent e consente di eseguire comandi o avviare sessioni di shell interattive sui nodi Bottlerocket.

Scegli un'istanza e avvia una sessione di Systems Manager. L'esempio seguente mostra un comando di sessione di Systems Manager per l'istanza i-0cf32f13f60c2f501:

$ 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!

Informazioni correlate

Avvio di nodi Bottlerocket autogestiti

Cos'è Amazon EKS?

Tipi di istanze di Amazon EC2

AWS UFFICIALE
AWS UFFICIALEAggiornata 10 mesi fa