Amazon Elastic Container Service (ECS) è un servizio di orchestrazione di container basato sul cloud e completamente gestito. Consente di eseguire le applicazioni nel cloud senza dover configurare e mantenere l'infrastruttura.
Per garantire che le richieste di capacità siano soddisfatte in modo ottimale e mantenere le massime performance, puoi impostare ECS per valutare e monitorare continuamente i processi di memoria e CPU. Questi dati possono aiutarti a determinare una strategia di deployment ottimale per ogni container. Inoltre, puoi sfruttare ECS per scalare i container e rilasciare aggiornamenti secondo necessità.
ECS supporta l'integrazione con diversi utili servizi e funzionalità AWS, inclusi i ruoli Identity and Access Management (AWS IAM), i volumi Elastic Block Store (AWS EBS) e AWS Elastic Load Balancing (AWS ELB).
Questo fa parte della nostra serie di articoli su Kuberneteson AWS.
In questo articolo imparerai:
ECS consente di sfruttare facilmente i container per vari casi d'uso. Puoi sfruttare ECS per ospitare semplici siti Web e gestire un'architettura di microservizi distribuita. ECS semplifica la gestione dei container, ma non automatizza l'intero processo. Puoi comunque mettere a punto e personalizzare il processo.
Ecco alcuni vantaggi chiave di Amazon ECS:
Scopri di più nelle nostre guide: AWS ECS vsKubernetes e AWS ECS vsEKS
La figura seguente illustra Amazon ECS con container in esecuzione su AWS Fargate. Nelle sezioni seguenti discuteremo i componenti principali mostrati.
Fonte: AWS
Per distribuire la tua applicazione su Amazon ECS, devi progettare i componenti dell'applicazione per l'esecuzione in container. I container vengono creati da modelli di sola lettura chiamati immagini.
Le immagini vengono di solito create da un Dockerfile, un file di testo normale che specifica tutti i componenti che devono essere eseguiti nel container. Una volta create, queste immagini vengono archiviate in un registro container e possono essere scaricate ed eseguite nel cluster.
Per preparare la tua applicazione per l'esecuzione su Amazon ECS, è necessario creare una definizione di attività. Una definizione di attività è un file di testo (in formato JSON) che descrive uno o più container (fino a 10) che costituiscono la tua applicazione.
La definizione del processo può specificare vari parametri per la tua applicazione in container. Ad esempio, puoi utilizzare questi parametri per indicare quali container eseguire, quali porte devono essere aperte, quali volumi di dati devono essere utilizzati, quale modalità di rete Docker utilizzare e i ruoli di Identity and Access Management (IAM).
Quasi tutto ciò che puoi eseguire in un comando Docker a riga di comando può essere definito utilizzando le definizioni di attività ECS. Consulta tutti i parametri delle definizioni di attività nella documentazione ufficiale.
Un'attività è un'istanza di una definizione di attività in esecuzione in un cluster. Dopo aver creato una definizione di attività per la tua applicazione in Amazon ECS, puoi specificare il numero di attività da eseguire sul tuo cluster.
Amazon ECS Task Scheduler è responsabile del posizionamento delle attività in un cluster. Esistono due strategie principali per l'utilità di pianificazione:
Fonte: AWS
Un cluster Amazon ECS è un raggruppamento logico di servizi, ciascuno composto da uno o più task. La prima volta che utilizzi Amazon ECS, viene creato un cluster predefinito. Puoi creare cluster aggiuntivi nel tuo account per ottenere l'isolamento delle risorse per carichi di lavoro o progetti diversi.
Esistono due modi per eseguire le risorse cluster—su istanze EC2 o tramite Amazon Fargate. Per ulteriori dettagli sul funzionamento di ciascuna di queste opzioni, vedere la sezione seguente.
L'agente di container viene eseguito su ogni istanza di container in un cluster Amazon ECS. L'agente invia informazioni sulle attività attualmente in esecuzione e sull'utilizzo delle risorse ad Amazon ECS. Amazon ECS può utilizzare l'agente per avviare e arrestare attività secondo necessità.
Fonte: AWS
ECS può utilizzare le istanze Elastic Compute Cloud (EC2) per eseguire container. Le istanze EC2 sono distribuite come parte del servizio Amazon EC2 e "registrate" in un cluster ECS definito, il che significa che EC2 può utilizzare tali istanze per distribuire container. Puoi eseguire un cluster ECS all'interno di un VPC esistente, rendendolo accessibile alle risorse AWS esistenti in esecuzione in quel VPC.
Un modo alternativo per distribuire i container ECS è con Amazon Fargate. Fargate rimuove la responsabilità per il provisioning, la configurazione e la gestione delle istanze EC2, consentendo ad AWS di gestire le istanze EC2 per te.
Con Fargate non è necessario gestire i server, ma è necessario assicurarsi che le definizioni delle attività siano stateless. Attualmente, non è possibile collegare un volume di storage (come un volume Elastic Block Storage) al container definito nel job.
Ciò significa che se utilizzi Fargate con storage persistente, dovrai utilizzare servizi di storage esterni come S3 o Relational Data Service (RDS).
Utilizza ECS con EC2 quando:
Utilizza ECS Fargate quando:
EC2 ti offre funzionalità che semplificano la gestione dei container, mentre continui a mettere a punto il processo. AWS Elastic Beanstalk, invece, gestisce automaticamente l'infrastruttura per te. Puoi utilizzare Beanstalk nei casi in cui devi concentrarti solo sul codice.
AWS Elastic Beanstalk è un servizio basato sul cloud che ti aiuta a distribuire e ridimensionare facilmente applicazioni e servizi. Beanstalk gestisce automaticamente servizi come ELB, EC2, Auto Scaling, RDS e Auto Scaling, distribuisce applicazioni e monitora lo stato di salute dell'applicazione.
Quando si lavora con Beanstalk, è necessario specificare le immagini dei container che si desidera che il servizio distribuisca, nonché i requisiti di memoria e CPU, i collegamenti dei container e le mappature delle porte. Una volta definite queste informazioni, Beanstalk inizia a gestire automaticamente tutta la gestione. Esegue il provisioning del cluster ECS, gestisce il dimensionamento automatico e il monitoraggio, esegue il bilanciamento del carico e distribuisce i container nei cluster.
Amazon ECS offre funzionalità che semplificano la gestione di container e cluster ma non automatizzano completamente il processo. È necessario comprendere come funziona il processo di provisioning e configurare e scalare continuamente le proprie risorse. EC2 espone server e fornisce le informazioni necessarie per scalare e ottimizzare l'ambiente.
AWS Lambda consente di codificare attività basate su eventi che automatizzano l'infrastruttura di calcolo. Lambda consente di definire un'infrastruttura serverless che non richiede né consente il tuo intervento, a parte la scrittura del codice che attiva gli eventi. Lambda consente di configurare eventi come modifiche ai dati o clic su siti web e definire una reazione in risposta agli eventi.
NetApp Cloud Volumes ONTAP, la soluzione leader nella gestione dello storage enterprise, offre servizi di gestione dello storage sicuri e comprovati su AWS, Azure e Google Cloud. Cloud Volumes ONTAP supporta una capacità massima di 368TB e supporta vari casi d'uso come file services, database, DevOps o qualsiasi altro carico di lavoro enterprise, con un solido set di funzionalità tra cui high availability, data protection, storage efficiencies, integrazione con Kubernetes e altro ancora.
In particolare, Cloud Volumes ONTAP supporta il provisioning e la gestione dei volumi persistenti richiesti dai carichi di lavoro containerizzati.
Scopri di più su come Cloud Volumes ONTAP aiuta ad affrontare le sfide delle applicazioni containerizzate in queste KubernetesWorkloads con Cloud Volumes ONTAP Case Studies.