Istanze di contenitore di Azure e agenti di orchestrazione dei contenitoriAzure Container Instances and container orchestrators

Grazie alle dimensioni ridotte e all'orientamento alle applicazioni, i contenitori sono particolarmente adatti per ambienti di recapito flessibili e architetture basate su microservizi.Because of their small size and application orientation, containers are well suited for agile delivery environments and microservice-based architectures. L'attività di automazione e gestione di un numero elevato di contenitori e della loro interazione è nota come orchestrazione.The task of automating and managing a large number of containers and how they interact is known as orchestration. Gli agenti di orchestrazione più diffusi includono Kubernetes, DC/OS e Docker Swarm, tutti disponibili nel servizio contenitore di Azure.Popular container orchestrators include Kubernetes, DC/OS, and Docker Swarm, all of which are available in the Azure Container Service.

Istanze di contenitore di Azure offre alcune delle funzionalità di pianificazione di base delle piattaforme di orchestrazione, ma non copre i servizi di valore più elevato che tali piattaforme forniscono a complemento.Azure Container Instances provides some of the basic scheduling capabilities of orchestration platforms, but it does not cover the higher-value services that those platforms provide and can in fact be complementary with them. Questo articolo descrive l'ambito di gestione di Istanze di contenitore di Azure e l'interazione con gli agenti di orchestrazione completi dei contenitori.This article describes the scope of what Azure Container Instances handles and how full container orchestrators might interact with it.

Orchestrazione tradizionaleTraditional orchestration

La definizione standard dell'orchestrazione include le attività seguenti:The standard definition of orchestration includes the following tasks:

  • Pianificazione: data un'immagine del contenitore e una richiesta di risorse, trovare una macchina adatta in cui eseguire il contenitore.Scheduling: Given a container image and a resource request, find a suitable machine on which to run the container.
  • Affinità/Antiaffinità: specificare che i contenitori di un set devono essere eseguiti vicini tra loro (per le prestazioni) o sufficientemente distanti tra loro (disponibilità).Affinity/Anti-affinity: Specify that a set of containers should run nearby each other (for performance) or sufficiently far apart (for availability).
  • Monitoraggio dell'integrità: monitorare gli errori dei contenitori e modificare automaticamente la pianificazione.Health monitoring: Watch for container failures and automatically reschedule them.
  • Failover: tenere traccia degli elementi in esecuzione in ogni macchina e ripianificare i contenitori dalle macchine con errori ai nodi integri.Failover: Keep track of what is running on each machine and reschedule containers from failed machines to healthy nodes.
  • Scalabilità: aggiungere o rimuovere istanze di contenitori per soddisfare la domanda, in modo automatico o manuale.Scaling: Add or remove container instances to match demand, either manually or automatically.
  • Rete: fornire una rete di overlay per coordinare i contenitori nella comunicazione tra più computer host.Networking: Provide an overlay network for coordinating containers to communicate across multiple host machines.
  • Individuazione del servizio: consentire l'individuazione reciproca dei contenitori anche quando si spostano tra computer host e cambiano indirizzo IP.Service discovery: Enable containers to locate each other automatically even as they move between host machines and change IP addresses.
  • Aggiornamenti coordinati delle applicazioni: gestire gli aggiornamenti dei contenitori per evitare tempi di inattività delle applicazioni e consentire il rollback in caso di errore.Coordinated application upgrades: Manage container upgrades to avoid application down time and enable rollback if something goes wrong.

Orchestrazione con Istanze di contenitore di Azure: un approccio a più livelliOrchestration with Azure Container Instances: A layered approach

Istanze di contenitore di Azure consente un approccio a più livelli all'orchestrazione, fornendo tutte le funzionalità di pianificazione e gestione necessarie per eseguire un singolo contenitore, consentendo alle piattaforme degli agenti di orchestrazione di gestire attività di multi-contenitore sul contenitore stesso.Azure Container Instances enables a layered approach to orchestration, providing all of the scheduling and management capabilities required to run a single container, while allowing orchestrator platforms to manage multi-container tasks on top of it.

Poiché l'intera infrastruttura sottostante per Istanze di contenitore è gestita da Azure, una piattaforma dell'agente di orchestrazione non ha bisogno di cercare un computer host appropriato in cui eseguire un singolo contenitore.Because all of the underlying infrastructure for Container Instances is managed by Azure, an orchestrator platform does not need to concern itself with finding an appropriate host machine on which to run a single container. L'elasticità del cloud garantisce che ci sia sempre un computer host a disposizione.The elasticity of the cloud ensures that one is always available. L'agente di orchestrazione può invece concentrarsi sulle attività che semplificano lo sviluppo di architetture multi-contenitore, tra cui il ridimensionamento e gli aggiornamenti coordinati.Instead, the orchestrator can focus on the tasks that simplify the development of multi-container architectures, including scaling and coordinated upgrades.

Potenziali scenariPotential scenarios

Anche se l'integrazione degli agenti di orchestrazione con Istanze di contenitore di Azure è ancora agli inizi, si prevede che possano emergere alcuni ambienti diversi:While orchestrator integration with Azure Container Instances is still nascent, we anticipate that a few different environments may emerge:

Orchestrazione di Istanze di contenitore in modo esclusivoOrchestration of Container Instances exclusively

Dato l'avvio rapido e la fatturazione al secondo, un ambiente basato esclusivamente su Istanze di contenitore di Azure rappresenta il modo più veloce per iniziare e gestire carichi di lavoro estremamente variabili.Because they start quickly and bill by the second, an environment based exclusively on Azure Container Instances offers the fastest way to get started and to deal with highly variable workloads.

Combinazione di Istanze di contenitore e contenitori in macchine virtualiCombination of Container Instances and Containers in Virtual Machines

Per i carichi di lavoro stabili e a esecuzione prolungata, l'orchestrazione di contenitori in un cluster di macchine virtuali dedicate è in genere più economica rispetto all'esecuzione degli stessi contenitori con Istanze di contenitore.For long-running, stable workloads, orchestrating containers in a cluster of dedicated virtual machines will typically be cheaper than running the same containers with Container Instances. Istanze di contenitore offre tuttavia un'ottima soluzione per la rapida espansione e contrazione della capacità complessiva, per gestire i picchi di utilizzo di breve durata o imprevisti.However, Container Instances offer a great solution for quickly expanding and contracting your overall capacity to deal with unexpected or short-lived spikes in usage. Invece di aumentare il numero di macchine virtuali nel cluster e quindi distribuire altri contenitori in tali macchine, l'agente di orchestrazione può semplicemente pianificare i contenitori aggiuntivi usando Istanze di contenitore ed eliminarli quando non sono più necessari.Rather than scaling out the number of virtual machines in your cluster, then deploying additional containers onto those machines, the orchestrator can simply schedule the additional containers using Container Instances and delete them when they're no longer needed.

Implementazione di esempio: connettore di Istanze di contenitore di Azure per KubernetesSample implementation: Azure Container Instances Connector for Kubernetes

Per dimostrare come si possano integrare piattaforme di orchestrazione dei contenitori con Istanze di contenitore di Azure, è stato creato un connettore di esempio per Kubernetes.To demonstrate how container orchestration platforms can integrate with Azure Container Instances, we have started building a sample connector for Kubernetes.

Il connettore per Kubernetes simula il kubelet registrandosi come nodo con capacità illimitata e approntando la creazione di POD come gruppi di contenitori in Istanze di contenitore di Azure.The connector for Kubernetes mimics the kubelet by registering as a node with unlimited capacity and dispatching the creation of pods as container groups in Azure Container Instances.

È possibile creare connettori per altri agenti di orchestrazione che si integrano in modo simile con le primitive di piattaforma per combinare le funzionalità avanzate dell'API dell'agente di orchestrazione con la velocità e la semplicità di gestione dei contenitori in Istanze di contenitore di Azure.Connectors for other orchestrators could be built that similarly integrated with platform primitives to combine the power of the orchestrator API with the speed and simplicity of managing containers in Azure Container Instances.

Avviso

Il connettore ACI per Kubernetes è sperimentale e non deve essere usato nell'ambiente di produzione.The ACI connector for Kubernetes is experimental and should not be used in production.

Passaggi successiviNext steps

Creare il primo contenitore usando la guida introduttiva di Istanze di contenitore di Azure.Create your first container with Azure Container Instances using the quickstart guide.