Come posso creare un gruppo di nodi gestito utilizzando l'AMI Bottlerocket in Amazon EKS?

4 minuti di lettura
0

Voglio usare eksctl per avviare Bottlerocket Amazon Machine Image (Bottlerocket AMI) per creare un gruppo di nodi gestito in Amazon Elastic Kubernetes Service (Amazon EKS).

Risoluzione

Prerequisito

1.    Assicurati di avere eksctl versione 0.124.0 o successiva.

2.    Esegui il seguente comando per verificare la versione:

$ eksctl version

Crea un file bottlerocket.yaml

1.    Apri il terminale in cui hai installato eksctl. Quindi, completa i seguenti passaggi per creare un nuovo file.

2.    Sostituisci mybottlerocket-cluster con il nome del tuo cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può essere più lungo di 100 caratteri.

3.    Sostituisci bottlerocket-nodegroup con un nome per il tuo gruppo di nodi. Il nome può contenere solo caratteri alfanumerici (con distinzione tra maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfabetico e non può essere più lungo di 100 caratteri.

4.    Specifica il tipo di istanza. Ad esempio, per eseguire l'implementazione su un'istanza ARM, sostituisci m5.xlarge con un tipo di istanza ARM.

5.    Sostituisci eks_bottlerocket con il nome di una coppia di chiavi SSH Amazon Elastic Compute Cloud (Amazon EC2). Dopo il loro avvio, usa SSH per connetterti ai nodi.

Nota: se non disponi di una coppia di chiavi SSH Amazon EC2, creane una nella Console di gestione AWS. Per ulteriori informazioni, consulta le coppie di chiavi Amazon EC2 e le istanze Linux.

6.    Sostituisci tutti i valori rimanenti nell'esempio con i tuoi valori. Dopo aver effettuato le sostituzioni, salva il file bottlerocket.yaml.

---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
 
metadata:
  name: mybottlerocket-cluster
  region: us-west-2
  version: '1.23'
 
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: puoi creare gruppi di nodi gestiti da BottleRocket per tutti i tipi di istanze predefiniti. Si tratta di tipi di istanze con scalabilità statica (serie T), generica (serie M), ottimizzata per il calcolo (serie C), ottimizzata per la memoria (serie R) e basata su ARM Graviton2. L'AMI Bottlerocket non supporta i tipi di istanze a calcolo accelerato (P, G, Inf1).

Per ulteriori informazioni sulle AMI Bottlerocket, consulta AMI Bottlerocket ottimizzate per Amazon EKS.

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 insieme ai tuoi attributi:

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

Connettiti ai nodi AMI Bottlerocket (opzionale)

Connettiti ai nuovi nodi Bottlerocket tramite una sessione AWS Systems Manager (AWS SSM). L'agente AWS SSM è in esecuzione sul nodo perché hai già attivato l'autorizzazione AWS SSM per il ruolo di istanza del nodo. Per ulteriori informazioni su AWS SSM, consulta Cos'è AWS Systems Manager?

1.    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.providerID
NODE                                           ARCH    OS-Image                                OS      InstanceId
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0cf32f13f60c2f501
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-0f31328a5d21cb092
ip-192-168-xx-xx.us-west-2.compute.internal    amd64   Bottlerocket OS 1.11.1 (aws-k8s-1.23)   linux   aws:///us-west-2b/i-08c218b729ecf9b5d

Avvia una sessione SSM

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

1.    Scegli una delle istanze che hai identificato in precedenza e avvia una sessione SSM. L'esempio seguente mostra un comando di sessione SSM 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

Che cos'è Amazon EKS?

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa