Crea nodi Bottlerocket autogestiti - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Crea nodi Bottlerocket autogestiti

Nota

I gruppi di nodi gestiti potrebbero offrire alcuni vantaggi per il tuo caso d'uso. Per ulteriori informazioni, consulta Semplifica il ciclo di vita dei nodi con gruppi di nodi gestiti.

Questo argomento descrive come avviare gruppi Auto Scaling di nodi Bottlerocket registrati nel tuo cluster Amazon. EKS Bottlerocketè un sistema operativo open source Linux basato su AWS cui è possibile eseguire container su macchine virtuali o host bare metal. Dopo che i nodi vengono aggiunti al cluster, puoi implementare le applicazioni Kubernetes per gli stessi. Per ulteriori informazioniBottlerocket, consulta Using a Bottlerocket AMI with Amazon EKS on GitHub e Custom AMI support nella eksctl documentazione.

Per informazioni sugli aggiornamenti sul posto, consulta Operatore aggiornamenti di Bottlerocket su GitHub.

Importante
  • EKSI nodi Amazon sono EC2 istanze Amazon standard e vengono fatturati in base ai normali prezzi delle EC2 istanze Amazon. Per ulteriori informazioni, consulta i EC2prezzi di Amazon.

  • Puoi avviare nodi Bottlerocket in cluster EKS estesi Amazon su AWS Outposts, ma non puoi avviarli in cluster locali su Outposts. AWS Per ulteriori informazioni, consulta Implementa Amazon in EKS locale con AWS Outposts.

  • Puoi eseguire la distribuzione su EC2 istanze Amazon con i nostri x86 processoriArm. Tuttavia, non è possibile eseguire l'implementazione su istanze con chip Inferentia.

  • Bottlerocketè compatibile con. AWS CloudFormation Tuttavia, non esiste un CloudFormation modello ufficiale che possa essere copiato per distribuire Bottlerocket nodi per Amazon. EKS

  • Le immagini Bottlerocket non vengono fornite con una shell o un server SSH. Puoi utilizzare metodi di out-of-band accesso per consentire l'SSHabilitazione del contenitore di amministrazione e per eseguire alcuni passaggi di configurazione di bootstrap con i dati utente. Per ulteriori informazioni, consulta queste sezioni nel READMEbottlerocket .md su: GitHub

Per avviare i nodi Bottlerocket utilizzando eksctl

Questa procedura richiede eksctl versione 0.189.0 o successiva. Puoi verificare la versione con il comando seguente:

eksctl version

Per istruzioni sull'installazione o sull'aggiornamento di eksctl, consulta la sezione Installation nella documentazione di eksctl.

Nota

Questa procedura funziona solo per i cluster creati con eksctl.

  1. Copia i seguenti contenuti sul dispositivo. Sostituisci my-cluster con il nome del cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può essere più lungo di 100 caratteri. Il nome deve essere univoco all'interno del Regione AWS e in Account AWS cui si sta creando il cluster. Sostituisci ng-bottlerocket con un nome per il gruppo di nodi. Il nome del gruppo di nodi non può contenere più di 63 caratteri. Deve iniziare con una lettera o un numero, ma può anche includere trattini e caratteri di sottolineatura. Per implementare su istanze Arm, sostituire m5.large con un tipo di istanza Arm. Sostituisci my-ec2-keypair-name con il nome di una coppia di EC2 SSH chiavi Amazon che puoi usare per connetterti ai tuoi nodi dopo il loro avvio. SSH Se non disponi già di una coppia di EC2 chiavi Amazon, puoi crearne una in AWS Management Console. Per ulteriori informazioni, consulta le coppie di EC2 chiavi Amazon nella Amazon EC2 User Guide. Sostituisci tutto il resto valori di esempio con i tuoi valori. Dopo aver effettuato le sostituzioni, eseguire il comando modificato per creare bottlerocket.yaml.

    Se specifichi un tipo di EC2 istanza Arm Amazon, esamina le considerazioni riportate Amazon Linux EKS ottimizzato per Arm Amazon AMIs prima della distribuzione. Per istruzioni su come implementare utilizzando un supporto personalizzatoAMI, consulta Building Bottlerocket on GitHub and Custom AMI Support nella documentazione. eksctl Per distribuire un gruppo di nodi gestito, implementane uno personalizzato AMI utilizzando un modello di avvio. Per ulteriori informazioni, consulta Personalizza i nodi gestiti con modelli di lancio.

    Importante

    Per distribuire un gruppo di nodi nelle sottoreti della zona AWS locale AWS Outposts AWS Wavelength, don't pass AWS Outposts AWS Wavelength, o nelle sottoreti della zona AWS locale al momento della creazione del cluster. È necessario specificare le sottoreti nell'esempio seguente. Per ulteriori informazioni, vedere Creare un gruppo di nodi da un file di configurazione e lo Schema del file config nella documentazione su eksctl. Sostituiscilo region-code con quello in cui si trova il Regione AWS cluster.

    cat >bottlerocket.yaml <<EOF --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: '1.30' 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
  2. Implementare i nodi mediante il comando seguente.

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

    Di seguito viene riportato un output di esempio:

    Durante la creazione dei nodi vengono generate diverse righe. Una delle ultime righe di output è simile alla seguente riga di esempio.

    [✔]  created 1 nodegroup(s) in cluster "my-cluster"
  3. (Facoltativo) Crea un volume Kubernetes persistente su un Bottlerocket nodo utilizzando Amazon EBS CSI Plugin. Il EBS driver Amazon predefinito si basa su strumenti di file system non inclusi. Bottlerocket Per ulteriori informazioni sulla creazione di una classe di archiviazione utilizzando il driver, consultare Archivia Kubernetes volumi con Amazon EBS.

  4. (Facoltativo) Per impostazione predefinita, kube-proxy imposta il parametro kernel nf_conntrack_max su un valore predefinito che può differire da quello che Bottlerocket imposta originariamente all'avvio. Per mantenere l'impostazione di default di Bottlerocket, modificare la configurazione kube-proxy con il comando seguente.

    kubectl edit -n kube-system daemonset kube-proxy

    Aggiungi --conntrack-max-per-core e --conntrack-min agli argomenti kube-proxy nell'esempio seguente. Un'impostazione di 0 non implica alcun cambiamento.

    containers: - command: - kube-proxy - --v=2 - --config=/var/lib/kube-proxy-config/config - --conntrack-max-per-core=0 - --conntrack-min=0
  5. (Facoltativo) implementa un'applicazione di esempio per testare i nodi Bottlerocket.

  6. Ti consigliamo di bloccare Pod l'accesso IMDS se sono soddisfatte le seguenti condizioni:

    • Hai intenzione di assegnare IAM ruoli a tutti i tuoi account di Kubernetes servizio in modo che dispongano Pods solo delle autorizzazioni minime di cui hanno bisogno.

    • Nessuno Pods nel cluster richiede l'accesso al servizio di metadati dell'EC2istanza Amazon (IMDS) per altri motivi, come il recupero della corrente. Regione AWS

    Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).