Avvio dei nodi autogestiti Bottlerocket - Amazon EKS

Avvio dei nodi autogestiti Bottlerocket

Nota

I gruppi di nodi gestiti potrebbero offrire alcuni vantaggi per il tuo caso d'uso. Per ulteriori informazioni, consulta . Gruppi di nodi gestiti.

Questo argomento fornisce le nozioni di base per avviare un gruppo Auto Scaling di nodi Bottlerocket che si registrano con il cluster Amazon EKS. Bottlerocket è un sistema operativo open source basato su Linux creato da AWS che può essere utilizzato per l'esecuzione di container su macchine virtuali o host bare metal. Dopo che i nodi vengono aggiunti al cluster, puoi implementare applicazioni Kubernetes per gli stessi. Per ulteriori informazioni su Bottlerocket, consultare Utilizzo di un'AMI Bottlerocket con Amazon EKS su GitHub e Supporto AMI personalizzata nella documentazione eksctl.

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

Importante

I nodi Amazon EKS sono istanze Amazon EC2 standard e la loro fatturazione è basata sui normali prezzi dell'istanza Amazon EC2. Per ulteriori informazioni, consulta Prezzi di Amazon EC2.

Importante
  • È possibile eseguire l'implementazione su istanze Amazon EC2 con processori x86 o Arm. Tuttavia, non è possibile eseguire l'implementazione su istanze con GPU o chip Inferentia.

  • Non è possibile implementare sulle seguenti regioni: Cina (Pechino) (cn-north-1) o China (Ningxia) (cn-northwest-1).

  • Non c'è modello AWS CloudFormation con cui implementare i nodi.

  • Le immagini Bottlerocket non vengono fornite con un server SSH o una shell. È possibile utilizzare metodi di accesso fuori banda per consentire a SSH di abilitare il container amministratore e passare alcuni passaggi di configurazione di bootstrap con i dati utente. Per ulteriori informazioni, consulta queste sezioni di bottlerocket README.md su GitHub:

Per avviare i nodi Bottlerocket utilizzando eksctl

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

eksctl version

Per ulteriori informazioni sull'installazione o l'aggiornamento di eksctl, consulta Installazione o aggiornamento di eksctl.

Nota

Questa procedura funziona solo per i cluster creati con eksctl.

  1. Creare un file denominato bottlerocket.yaml con i seguenti contenuti. Sostituisci ogni example-value con i valori in tuo possesso. Per implementare su istanze Arm, sostituire m5.large con un tipo di istanza Arm. Se si specifica un tipo di istanza Amazon EC2 Arm, esaminare le considerazioni in AMI Arm Amazon Linux ottimizzate per Amazon EKS prima dell'implementazione. Per istruzioni su come implementare utilizzando un'AMI personalizzata, consultare Creare una build Bottlerocket su GitHub e Supporto AMI personalizzata nella documentazione eksctl. Per implementare un gruppo di nodi gestito, implementare un'AMI personalizzata utilizzando un modello di avvio. Per ulteriori informazioni, consulta . Supporto modello di avvio.

    Importante

    Per implementare un gruppo di nodi a AWS Outposts, AWS Wavelength oppure sottoreti Local Zones AWS, allora AWS Outposts, AWS Wavelength oppure le sottoreti Local Zones AWS non devono essere state passate 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.

    --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code 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. Implementare i nodi mediante il comando seguente.

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

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

    [✔] created 1 nodegroup(s) in cluster "my-cluster"
  3. (Facoltativo) Creare un volume persistente Kubernetes su un nodo Bottlerocket usando il plug-in CSI di Amazon EBS. Il driver Amazon EBS di default si basa su strumenti di file system che non sono inclusi in Bottlerocket. Per ulteriori informazioni sulla creazione di una classe di archiviazione utilizzando il driver, consultare Driver CSI per 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

    Aggiungere gli argomenti --conntrack-max-per-core e --conntrack-min to the kube-proxy come mostrato 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) implementare un'applicazione di esempio per testare i nodi Bottlerocket.

  6. (Facoltativo) Se intendi assegnare ruoli IAM a tutti gli account del servizio Kubernetes in modo che i pod dispongano solo delle autorizzazioni minime necessarie e che nessun pod nel cluster richieda l'accesso ad Amazon EC2 Instance Metadata Service (IMDS) per altri motivi, ad esempio il recupero della Regione AWS corrente, ti consigliamo di bloccare l'accesso dei pod a IMDS. Per ulteriori informazioni, consulta Limita l'accesso al profilo dell'istanza assegnato al nodo (worker).