Condividi tramite


Ottimizzazione delle prestazioni dei contenitori di Windows Server

Introduzione

A partire da Windows Server 2022, sono disponibili due tipi di contenitori: contenitori di Windows Server e contenitori Hyper-V. Ogni tipo di contenitore supporta lo SKU Server Core o Nano Server di Windows Server 2022.

Queste configurazioni hanno implicazioni diverse in termini di prestazioni, che vengono illustrate più avanti per comprendere quali sono le impostazioni appropriate per gli scenari. Vengono inoltre descritti in dettaglio le configurazioni che influiscono sulle prestazioni e vengono descritti i compromessi con ognuna di queste opzioni.

Contenitore di Windows Server e contenitori di Hyper-V

I contenitori windows Server Container e Hyper-V offrono molti degli stessi vantaggi di portabilità e coerenza, ma differiscono in termini di garanzie di isolamento e caratteristiche delle prestazioni.

I contenitori di Windows Server forniscono l'isolamento delle applicazioni tramite la tecnologia di isolamento dei processi e dello spazio dei nomi. Un contenitore di Windows Server condivide un kernel con l'host contenitore e tutti i contenitori in esecuzione nell'host.

Hyper-V Contenitori si espandono sull'isolamento fornito dai contenitori di Windows Server eseguendo ogni contenitore in una macchina virtuale altamente ottimizzata. In questa configurazione il kernel dell'host contenitore non viene condiviso con i contenitori Hyper-V.

L'isolamento aggiuntivo fornito dai contenitori Hyper-V viene ottenuto in gran parte da un livello di isolamento dell'hypervisor tra il contenitore e l'host contenitore. Ciò influisce sulla densità dei contenitori perché, a differenza dei contenitori di Windows Server, può verificarsi una minore condivisione dei file di sistema e dei file binari, causando un footprint complessivo di archiviazione e memoria più ampio. Inoltre, è previsto un ulteriore sovraccarico in percorsi di rete, CPU e I/O di archiviazione.

Nano Server e Server Core

I contenitori di Windows Server e i contenitori Hyper-V offrono supporto per Server Core. Altre informazioni sulle opzioni dell'immagine di base del contenitore.

Nano Server è un sistema operativo server amministrato in remoto ottimizzato per cloud privati e data center. È simile a Windows Server in modalità Server Core, ma significativamente più piccolo, non ha funzionalità di accesso locale e supporta solo applicazioni, strumenti e agenti a 64 bit. Richiede molto meno spazio su disco, configura notevolmente più velocemente e richiede molto meno aggiornamenti e riavvii rispetto a Windows Server. Una volta che si riavvia, lo fa molto più velocemente.

Start-Up Contenitore Ora

Il tempo di avvio del contenitore è una metrica chiave in molti degli scenari che i contenitori offrono il massimo vantaggio. Di conseguenza, comprendere come ottimizzare al meglio il tempo di avvio dei contenitori è fondamentale. Di seguito sono riportati alcuni compromessi di ottimizzazione per comprendere il miglioramento del tempo di avvio.

Primo accesso

Microsoft fornisce un'immagine di base per Nano Server e Server Core. L'immagine di base distribuita per Server Core è stata ottimizzata rimuovendo il sovraccarico di tempo di avvio associato al primo accesso (Esperienza di configurazione iniziale). Questo non è il caso dell'immagine di base di Nano Server. Tuttavia, questo costo può essere eliminato dalle immagini basate su Nano Server impegnando almeno un layer nell'immagine container. I contenitori successivi avviati dall'immagine non comporteranno il costo del primo accesso.

Posizione dello spazio di scratch

Per impostazione predefinita, i contenitori utilizzano uno spazio di archiviazione temporaneo sul disco di sistema dell'host del contenitore durante la durata del contenitore in esecuzione. Questo funge da unità di sistema del contenitore e, di conseguenza, molte delle operazioni di scrittura e lettura eseguite nel contenitore seguono questo percorso. Per i sistemi host in cui l'unità di sistema è su supporti magnetici a disco rotante (HDD), ma è disponibile un supporto di archiviazione più veloce (HDD o SSD più veloci), è possibile spostare lo spazio temporaneo del contenitore in un'unità diversa. A questo scopo, usare il comando dockerd –g. Questo comando è globale e influirà su tutti i contenitori in esecuzione nel sistema.

Contenitori di Hyper-V annidati

Hyper-V per Windows Server 2022 offre il supporto dell'hypervisor annidato. Ovvero, la possibilità di eseguire una macchina virtuale dall'interno di una macchina virtuale. Questo apre molti scenari utili, ma esagera anche un impatto sulle prestazioni che l'hypervisor comporta, poiché esistono due livelli di hypervisor in esecuzione sopra l'host fisico.

Per i contenitori, questo ha un impatto sull'esecuzione di un contenitore Hyper-V all'interno di una macchina virtuale. Poiché un contenitore Hyper-V offre isolamento tramite un livello hypervisor tra se stesso e l'host contenitore, quando l'host contenitore è una macchina virtuale basata su Hyper-V, si verifica un sovraccarico delle prestazioni in termini di tempo di avvio del contenitore, io di archiviazione, io di rete e velocità effettiva e CPU.

Immagazzinamento

Volumi di dati montati

I contenitori offrono la possibilità di usare l'unità di sistema host del contenitore per lo spazio scratch del contenitore. Tuttavia, lo spazio scratch del contenitore ha una durata uguale a quella del contenitore. Ovvero, quando il contenitore viene arrestato, lo spazio scratch e tutti i dati associati vengono disattivati.

Esistono tuttavia molti scenari in cui si desidera rendere persistenti i dati indipendentemente dalla durata del contenitore. In questi casi, supportiamo il montaggio di volumi di dati dall'host contenitore nel contenitore. Per i contenitori di Windows Server, il sovraccarico del percorso di I/O è trascurabile associato ai volumi di dati montati (prestazioni quasi native). Tuttavia, quando si montano volumi di dati in contenitori Hyper-V, si verifica una riduzione delle prestazioni di I/O in tale percorso. Inoltre, questo impatto è esagerato quando i contenitori Hyper-V vengono eseguiti all'interno di macchine virtuali.

Spazio di lavoro temporaneo

Sia i contenitori di Windows Server che i contenitori Hyper-V forniscono un disco rigido virtuale dinamico da 20 GB per lo spazio scratch del contenitore per impostazione predefinita. Per entrambi i tipi di contenitore, il sistema operativo del contenitore occupa una parte di tale spazio e questo vale per ogni contenitore avviato. È quindi importante ricordare che ogni contenitore avviato ha un impatto sull'archiviazione e, a seconda del carico di lavoro, può scrivere fino a 20 GB di supporti di archiviazione di backup. Le configurazioni di archiviazione del server devono essere progettate tenendo presente questo aspetto.

Rete

I contenitori di Windows Server e i contenitori di Hyper-V offrono diverse modalità di rete per soddisfare al meglio le esigenze di configurazioni di rete diverse. Ognuna di queste opzioni presenta le proprie caratteristiche di prestazioni.

Traduzione indirizzi di rete di Windows (WinNAT)

Ogni contenitore riceverà un indirizzo IP da un prefisso IP interno e privato ,ad esempio 172.16.0.0/12. È supportato il port forwarding/mapping dall'host del contenitore agli endpoint del contenitore. Docker crea una rete NAT per impostazione predefinita quando il dockerd viene eseguito per la prima volta.

Di queste tre modalità, la configurazione NAT è il percorso di I/O di rete più costoso, ma ha la minima quantità di configurazione necessaria.

I contenitori di Windows Server usano una scheda di interfaccia di rete virtuale host per collegarsi al commutatore virtuale. Hyper-V I contenitori utilizzano una NIC sintetica di macchina virtuale (non esposta alla macchina virtuale di utilità) per collegarsi al commutatore virtuale. Quando i contenitori comunicano con la rete esterna, i pacchetti vengono instradati tramite WinNAT con le traduzioni degli indirizzi applicate, che comportano un sovraccarico.

Trasparente

Ogni endpoint del contenitore è connesso direttamente alla rete fisica. Gli indirizzi IP della rete fisica possono essere assegnati in modo statico o dinamico usando un server DHCP esterno.

La modalità trasparente è il meno costoso in termini di percorso di I/O di rete e i pacchetti esterni vengono passati direttamente alla scheda di interfaccia di rete virtuale del contenitore che consente l'accesso diretto alla rete esterna.

Ponte L2

Ogni endpoint del contenitore si troverà nella stessa subnet IP dell'host del contenitore. Gli indirizzi IP devono essere assegnati in modo statico dallo stesso prefisso dell'host contenitore. Tutti gli endpoint del contenitore nell'host avranno lo stesso indirizzo MAC a causa della conversione degli indirizzi di livello 2.

La modalità Bridge L2 è più efficiente rispetto alla modalità WinNAT perché fornisce l'accesso diretto alla rete esterna, ma meno efficiente rispetto alla modalità Transparent, poiché introduce anche la conversione degli indirizzi MAC.