Specifica di immagine preparata (PIS) in Servizio Azure Kubernetes (AKS) (anteprima)

Quando si eseguono carichi di lavoro su larga scala, intelligenza artificiale, GPU, Windows o altri carichi di lavoro sensibili alle prestazioni in Servizio Azure Kubernetes (AKS), i nuovi nodi di cui è stato effettuato il provisioning devono scaricare le immagini del contenitore, installare le dipendenze e completare le attività di inizializzazione prima che i carichi di lavoro possano essere eseguiti. Questo lavoro di installazione per nodo si ripete in ogni evento di scalabilità, contribuendo a tempi di avvio più lunghi del nodo.

Prepared Image Specification (PIS) è una funzionalità del servizio Azure Kubernetes che consente di creare immagini del nodo preconfigurate con le immagini del contenitore necessarie e le personalizzazioni del nodo già applicate. AKS crea o ricrea l'immagine preparata quando necessario, ad esempio quando viene creato o aggiornato un pool di nodi per usare una versione di PIS. Le modifiche alla versione di Kubernetes possono anche attivare una ricompilazione.

Questo articolo illustra il funzionamento di PiS, descrive i casi d'uso comuni e lo confronta con le funzionalità del servizio Azure Kubernetes correlate. Per creare e usare un PIS, consulta Usare Prepared Image Specification (PIS) in AKS.

Importante

Le funzionalità in anteprima di AKS sono disponibili in modalità self-service, su base volontaria. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono coperte solo parzialmente dall'assistenza clienti nei limiti del possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:

Che cos'è una specifica di immagine preconfigurata (PIS)?

Un PIS è una risorsa di Azure che definisce il contenuto e la configurazione che AKS deve integrare in un'immagine del nodo preparata. È possibile includere qualsiasi combinazione di:

  • Immagini del contenitore da pre-memorizzare nella cache
  • Script di inizializzazione personalizzati
  • Personalizzazioni del sistema operativo
  • Dipendenze di runtime e criteri di sicurezza

Quando AKS esegue il provisioning di un pool di nodi che fa riferimento a un PIS, crea e gestisce l'immagine preparata per conto dell'utente, preservando la normale esperienza gestita di AKS. A differenza degli approcci BYOI (Bring Your Own Image) non supportati, si definisce lo stato desiderato e AKS si occupa di creare e gestire l'immagine sottostante.

Come funziona PIS

PiS sposta il lavoro di preparazione delle immagini in precedenza nel flusso di creazione/aggiornamento del pool di nodi in modo che le future operazioni di scalabilità orizzontale possano usare l'immagine preparata.

  1. Creare una risorsa PIS.
  2. Definire immagini del contenitore e script di personalizzazione.
  3. AKS crea un nodo di build temporaneo.
  4. AKS applica tutte le personalizzazioni specificate e memorizza nella cache le immagini.
  5. AKS crea uno snapshot del nodo configurato e crea un'immagine preparata.
  6. Il provisioning dei nodi futuri e le operazioni di scalabilità orizzontale si avviano a partire dall'immagine preparata.

Schermata di un diagramma che mostra il flusso di lavoro della specifica dell'immagine preparata.

Poiché le immagini del container e le personalizzazioni esistono già nell'immagine preparata, la successiva creazione dei nodi salta completamente questa fase.

Quando un PIS comprende sia script personalizzati sia immagini del contenitore memorizzate nella cache, AKS esegue prima gli script personalizzati. Una volta completata correttamente l'esecuzione degli script, AKS memorizza nella cache le immagini dei container specificate nell'immagine del nodo preparata.

Questo ordinamento significa che le modifiche dello script possono influire sull'ambiente usato per la memorizzazione nella cache delle immagini, inclusa la configurazione del runtime del contenitore. Progettate e testate gli script tenendo presente questa sequenza, soprattutto se lo script modifica containerd, la configurazione del registry, le credenziali, i certificati, la rete o altre impostazioni che potrebbero influire sul prelievo delle immagini o sul comportamento della cache.

Confronto tra modelli di provisioning

Operation AKS Standard Specifiche dell'immagine preconfigurata
Creazione/aggiornamento del pool di nodi Veloce Più lento (preparazione dell'immagine necessaria)
Scalabilità orizzontale successiva Provisioning standardizzato Provisioning più rapido
Download di immagini del contenitore In fase di esecuzione Pre-memorizzato nella cache
Script personalizzati Esecuzione del runtime Integrato nell'immagine
Coerenza di avvio Variabile Prevedibile
Carichi di lavoro di immagini di grandi dimensioni Avvio più lento Avvio più rapido

Importante

La specifica dell'immagine preparata (PIS) offre il massimo valore quando un pool di nodi viene ridimensionato più volte dopo la preparazione dell'immagine. Se i nodi vengono ridimensionati raramente, il costo di preparazione di un'immagine monouso potrebbe superare il vantaggio.

Casi d'uso comuni

PIS è particolarmente utile per scenari ripetuti di scalabilità orizzontale, per container images di grandi dimensioni o dipendenze stabili, per carichi di lavoro GPU/AI/Windows e per carichi di lavoro in cui il tempo necessario affinché i nodi siano pronti è importante. Alcuni casi d'uso comuni includono:

  • Intelligenza artificiale e Machine Learning: le immagini di modelli di intelligenza artificiale/Machine Learning di grandi dimensioni richiedono spesso molto tempo per eseguire il pull. La specifica dell’immagine preparata memorizza preventivamente nella cache queste immagini, in modo che i nodi GPU raggiungano più rapidamente lo stato di pronto, riducendo il tempo di avvio del carico di lavoro e migliorando la reattività della scalabilità.
  • Carichi di lavoro GPU: l'installazione preliminare dei driver GPU, le librerie CUDA e altre dipendenze nell'immagine preparata riduce il sovraccarico del provisioning e accelera l'idoneità dei nodi durante gli eventi di scalabilità.
  • carico di lavoro Windows: le immagini dei contenitori Windows tendono a essere grandi. La specifica dell'immagine preparata riduce i tempi di download delle immagini e migliora la coerenza della distribuzione per i pool di nodi Windows.
  • Scalabilità rapida: quando Cluster Autoscaler attiva eventi di scale-out, i nodi avviati da un'immagine preparata in anticipo raggiungono più rapidamente lo stato Ready, riducendo i tempi di attesa in coda dei carichi di lavoro e rendendo il comportamento della scalabilità più prevedibile.
  • Semplificare la standardizzazione degli ambienti: la creazione di una configurazione coerente nell'immagine preparata riduce la deviazione della configurazione tra pool di nodi e semplifica le operazioni.
  • Caching di dati/artefatti di grandi dimensioni: comprende i pesi dei LLM, i file di modello, i set di dati di addestramento e i blob di inizializzazione del database che possono essere scaricati dagli script di personalizzazione durante la preparazione delle immagini. Gli artefatti di grandi dimensioni aumentano la dimensione dell'immagine preparata e il tempo di ricompilazione, quindi assicurati di gestire correttamente il versioning e di testare attentamente l'immagine preparata.

Annotazioni

La creazione/aggiornamento del pool di nodi iniziale può richiedere più tempo perché l'immagine viene compilata per prima.

Come PIS si relaziona alle altre funzionalità di AKS

È possibile usare PIS insieme ad altre funzionalità di AKS per ottimizzare il provisioning e il ridimensionamento dei nodi.

Specifica dell'immagine predisposta e streaming di artefatti

Usare insieme PIS e Artifact Streaming per ridurre la latenza di avvio dei nodi. PiS pre-memorizza nella cache le immagini e le dipendenze del contenitore, mentre Artifact Streaming trasmette artefatti di grandi dimensioni ai nodi durante il provisioning. Questa combinazione è particolarmente utile per i carichi di lavoro che richiedono set di dati di grandi dimensioni o file di modello.

Feature Specifica dell'immagine preparata Streaming degli artefatti
Avvio più rapido del contenitore Sì Sì
Esecuzione degli script Sì No
Scaricamento dell'immagine del contenitore Durante la compilazione dell'immagine del nodo o dell'aggiornamento di AgentPool Durante il provisioning delle macchine virtuali

Per altre informazioni su Artifact Streaming, vedere Ridurre il tempo di pull delle immagini con Artifact Streaming in Servizio Azure Kubernetes (AKS).

Specifica dell'immagine preparata e configurazione personalizzata del nodo

Usare PIS e la configurazione personalizzata del nodo insieme per affrontare scenari di configurazione di runtime e nodo. PiS pre-memorizza nella cache le immagini del contenitore e applica le personalizzazioni del sistema operativo, mentre la configurazione del nodo personalizzata consente di applicare le configurazioni di runtime ai nodi dopo il provisioning.

Feature Specifiche dell'immagine predisposta Configurazione del nodo personalizzata
Personalizzazione dell'immagine del nodo Sì No
Memorizzazione nella cache delle immagini del contenitore Sì No
Configurazione del runtime Limited Sì
Stato preparato permanente Sì No

Per altre informazioni sulla configurazione del nodo personalizzata, vedere Personalizzare la configurazione del nodo per i pool di nodi Servizio Azure Kubernetes (AKS).

Specifica dell'immagine preparata e snapshot del pool di nodi

Usa insieme PIS e Snapshot del pool di nodi per preservare la configurazione e lo stato del pool di nodi. PiS pre-memorizza nella cache le immagini del contenitore e applica le personalizzazioni del sistema operativo, mentre snapshot del pool di nodi acquisisce lo stato corrente di un pool di nodi a scopo di backup o replica.

Feature Specifica dell'immagine preparata Istantanea del pool di nodi
Preparazione delle immagini Sì No
Memorizzazione nella cache delle immagini del contenitore Sì No
Ripristinare la configurazione del pool di nodi No Sì
Ottimizzazione delle prestazioni Sì No

Per altre informazioni sullo snapshot del pool di nodi, vedere snapshot del pool di nodi in Servizio Azure Kubernetes (AKS).

Personalizzazioni supportate

Immagini dei contenitori

La specifica Prepared Image precarica nella cache le immagini dei contenitori nell'immagine del nodo, in modo che i nodi non debbano scaricare le immagini durante il provisioning.

Script personalizzati

È possibile includere script di inizializzazione da eseguire durante la preparazione dell'immagine. Tipi di script supportati:

  • Bash
  • PowerShell

Gli usi comuni includono l'installazione di pacchetti software, la configurazione delle impostazioni del sistema operativo, l'applicazione di criteri di sicurezza e il download delle dipendenze di runtime.

Usare con attenzione gli script personalizzati perché diventano parte del processo di compilazione dell'immagine del nodo preparato. Considerare ogni script come una configurazione soggetta a controllo di versione: archiviare il codice sorgente dello script nel sistema di controllo del codice sorgente, fissare il contenuto dello script o l'URI utilizzato da ogni versione PIS ed evitare di modificare direttamente uno script dopo che è stata creata una versione PIS. Se il comportamento dello script cambia, crea una nuova versione PIS in modo che i contenuti dell'immagine del nodo rimangano tracciabili e riproducibili.

Gli script devono essere stabili e sicuri per essere eseguiti più volte. Evitare comandi che dipendono dallo stato esterno temporaneo, a meno che la dipendenza non venga aggiunta a una versione specifica. Testare gli script in un ambiente non di produzione prima di usarli per i pool di nodi di produzione e convalidare sia il comportamento di creazione dell'immagine che il comportamento di implementazione del pool di nodi.

Quando si convalida il comportamento rispetto a una versione specifica dell'immagine del nodo del servizio Azure Kubernetes, usare gli snapshot del pool di nodi del servizio Azure Kubernetes in modo che il test sia associato a una versione nota dell'immagine del nodo. Ciò consente di garantire che i risultati dello script siano coerenti quando cambia l'immagine del servizio Azure Kubernetes sottostante.

Le organizzazioni che vogliono limitare o impedire gli script personalizzati dovrebbero valutare l'uso di Criteri di Azure per imporre le configurazioni PIS consentite, ad esempio bloccando l'uso degli script o limitando le origini degli script ai percorsi approvati.

Configurazione del sistema operativo

Esempi di personalizzazioni del sistema operativo che possono essere inserite nell'immagine preparata includono:

  • Impostazioni sysctl
  • Installazione del pacchetto
  • Configurazione del runtime
  • Protezione avanzata

Sistemi operativi supportati

PIS supporta Ubuntu, Azure Linux e pool di nodi Windows.

Per valutare l'effetto di PIS nel tuo ambiente, monitora queste aree:

Area Metriche
Provisioning Durata del provisioning dei nodi, tempo per essere pronto, latenza di pianificazione del carico di lavoro
Scaling Tempo di completamento del ridimensionamento orizzontale, eventi del ridimensionamento automatico, durata di avvio del nodo
Carico di lavoro Tempo di avvio del pod, durata del download dell'immagine del container, tempo di avvio del carico di lavoro della GPU

È anche consigliabile gestire le immagini del pool di nodi dal punto di vista dei costi/controllo delle versioni. Tieni traccia del numero di versioni PIS, delle dimensioni delle immagini e della frequenza di ricompilazione per garantire che le immagini preparate rimangano efficienti ed efficaci.

Procedure consigliate

  • Memorizza nella cache immagini grandi e stabili: usa PIS per immagini di grandi dimensioni che cambiano raramente e sono condivise da molti carichi di lavoro. Le immagini aggiornate di frequente riducono il valore di un'immagine preparata perché è necessario ricompilarla spesso.
  • Gestione coerente delle versioni: creare una nuova versione PIS per i rilasci dell'applicazione, le patch di sicurezza e le modifiche all'immagine dei nodi AKS, in modo da mantenere aggiornata l'immagine preparata.
  • Verifica prima della produzione: prima di promuovere un'immagine preparata nell'ambiente di produzione, testa l'avvio del nodo, la distribuzione dei carichi di lavoro, l'accesso al registro e la funzionalità dell'applicazione in un ambiente di non produzione. È consigliabile utilizzare Node Pool Snapshot per eseguire test prima di promuovere un'immagine preparata in produzione.
  • Automatizzare l'aggiornamento delle immagini: rigenerare le immagini preparate a intervalli regolari per incorporare dipendenze aggiornate, patch di sicurezza e l'immagine del nodo di AKS più recente.

Limitations

Durante l'anteprima vengono applicate le limitazioni seguenti:

  • Disponibile nelle regioni pubbliche di Azure, esclusi i cloud sovrani e gli ambienti isolati dalla rete.
  • I sistemi operativi supportati includono Ubuntu, Azure Linux e Windows.
  • Gli script personalizzati possono causare errori durante la creazione dell'immagine o lo scale-up.
  • Potrebbe essere necessario ricreare le specifiche esistenti durante la modifica.
  • Si fa riferimento alle immagini preparate, che non sono gestite dal cliente. I clienti configurano un pool di nodi per utilizzare un ID della versione PIS supportata. L'artefatto dell'immagine preparata di base rimane gestito dal servizio AKS e non viene esposto come BYOI di proprietà del cliente, immagine gestita o immagine della raccolta.
  • Non è possibile condividere o riutilizzare direttamente gli artefatti di immagine preparati tra pool di nodi. Per usare lo stesso contenuto di immagine preparato per un altro pool di nodi, è necessario configurare il pool di nodi con l'ID versione pis appropriato. Non è possibile copiare, esportare, alterare, concedere l'accesso all'artefatto di immagine preparato o allegarlo come immagine gestita dal cliente.

Domande frequenti

PIS sostituisce le immagini dei nodi di AKS?

No. AKS continua a usare immagini dei nodi di AKS supportate. PiS si basa su tali immagini.

Pis supporta la scalabilità automatica del cluster?

Yes. I pool di nodi configurati con pis possono essere usati con Cluster Autoscaler.

È possibile creare più versioni?

Yes. PiS supporta il controllo delle versioni.

Pis riduce la latenza di avvio della GPU?

PIS può ridurre il sovraccarico di inizializzazione precaricando nella cache le dipendenze e le immagini dei container.

Più pool di nodi possono usare lo stesso PIS?

Più pool di nodi possono fare riferimento allo stesso ID risorsa della versione di PIS, ma AKS non consente né supporta la condivisione di un singolo artefatto immagine preparato tra i pool di nodi come immagine gestita dal cliente. Ogni pool di nodi usa la versione piS di riferimento nel proprio contesto AgentPool.

C'è un costo aggiuntivo?

Si applicano i costi standard di calcolo e archiviazione di AKS.

Per creare un PIS, vedi Creare e gestire una specifica di immagine preparata (PIS) in AKS.