vSphere IaaS control plane offre una funzionalità di servizio della macchina virtuale che consente ai tecnici di DevOps di distribuire ed eseguire macchine virtuali, oltre ai contenitori, in un ambiente Kubernetes condiviso e comune. È possibile utilizzare il servizio della macchina virtuale per gestire il ciclo di vita delle macchine virtuali in uno spazio dei nomi. Il servizio della macchine virtuale gestisce le macchine virtuali autonome e le macchine virtuali che costituiscono i cluster Tanzu Kubernetes Grid.

Il servizio macchina virtuale risponde alle esigenze dei team DevOps che utilizzano Kubernetes ma hanno carichi di lavoro basati su macchine virtuali esistenti che non possono essere facilmente containerizzati. Consente inoltre agli utenti di ridurre il sovraccarico della gestione di una piattaforma non Kubernetes insieme a una piattaforma container. Quando si eseguono container e macchine virtuali in una piattaforma Kubernetes, i team DevOps possono consolidare il proprio footprint di carico di lavoro in un'unica piattaforma.

Nota: Oltre alle macchine virtuali autonome, il servizio macchina virtuale gestisce le macchine virtuali che costituiscono il cluster di Tanzu Kubernetes Grid. Per informazioni sui cluster, vedere la documentazione Utilizzo del servizio TKG con vSphere IaaS Control Plane.
Il servizio della macchina virtuale gestisce le macchine virtuali autonome e le macchine virtuali che costituiscono i cluster Tanzu Kubernetes Grid

Ogni macchina virtuale distribuita tramite il servizio macchina virtuale funziona come una macchina completa che esegue tutti i componenti, incluso il proprio sistema operativo, al di sopra dell'infrastruttura di vSphere IaaS control plane. La macchina virtuale può accedere alla rete e allo storage forniti da un Supervisore ed è gestita utilizzando il comando kubectl standard di Kubernetes. La macchina virtuale viene eseguita come un sistema completamente isolato che è immune alle interferenze provenienti da altre macchine virtuali o carichi di lavoro nell'ambiente Kubernetes.

Quando utilizzare macchine virtuali su una piattaforma Kubernetes?

In genere, la decisione di eseguire i carichi di lavoro in un container o in una macchina virtuale dipende dalle esigenze e dagli obiettivi dell'azienda. Di seguito sono elencate le ragioni per cui sono utilizzate le macchine virtuali:

  • Le applicazioni non possono essere containerizzate.
  • Si dispone di requisiti hardware specifici per il progetto.
  • Le applicazioni sono progettate per un kernel personalizzato o un sistema operativo personalizzato.
  • Le applicazioni sono più adatte all'esecuzione in una macchina virtuale.
  • Si desidera disporre di un'esperienza Kubernetes coerente ed evitare sovraccarico. Anziché eseguire set separati di infrastruttura per le piattaforme non Kubernetes e container, è possibile consolidare questi stack e gestirli con un comando di kubectl ben conosciuto.

Concetti del servizio macchina virtuale

Per descrivere lo stato di una macchina virtuale da distribuire in uno Spazio dei nomi vSphere, è necessario utilizzare tali parametri come una classe di macchine virtuali, un'immagine della macchina virtuale e una classe di storage. Il servizio della macchine virtuale raccoglie quindi queste specifiche per creare macchine virtuali o macchine virtuali autonome che supportano i cluster Tanzu Kubernetes Grid.

La specifica della macchina virtuale riunisce classe di macchina virtuale, immagine della macchina virtuale e classe di storage per creare una macchina virtuale
Servizio macchina virtuale
Il servizio della macchine virtuale è un componente di vSphere IaaS control plane che fornisce un'API dichiarativa di tipo Kubernetes per la gestione delle macchine virtuali e delle risorse di vSphere associate. Il servizio della macchine virtuale consente agli amministratori di vSphere di fornire risorse e modelli, ad esempio classi di macchine virtuali e immagini di macchine virtuali, a Kubernetes. I tecnici di DevOps possono utilizzare queste risorse per descrivere lo stato desiderato di una macchina virtuale. Dopo che i tecnici di DevOps hanno specificato lo stato della macchina virtuale, il servizio della macchina virtuale converte lo stato desiderato in uno stato realizzato in base alle risorse dell'infrastruttura di supporto.

Una macchina virtuale creata tramite il servizio della macchina virtuale può essere gestita solo dallo spazio dei nomi Kubernetes con i comandi kubectl. Gli amministratori di vSphere non possono gestire la macchina virtuale dal vSphere Client, ma possono visualizzarne i dettagli e monitorare le risorse che utilizza. Per informazioni, vedere Monitorare le macchine virtuali disponibili in vSphere IaaS control plane.

Classe della macchina virtuale
La classe di macchine virtuali è una specifica della macchina virtuale che può essere utilizzata per richiedere un set di risorse per una macchina virtuale. La classe di macchine virtuali è controllata e gestita da un amministratore di vSphere e definisce tali parametri come il numero di CPU virtuali, la capacità di memoria e le impostazioni di prenotazione. I parametri definiti sono supportati e garantiti dalle risorse dell'infrastruttura sottostante di un Supervisore.

Un amministratore di vSphere può creare classi di macchine virtuali personalizzate.

Inoltre, la gestione del carico di lavoro offre diverse classi di macchine virtuali predefinite. In genere, ogni tipo di classe predefinito è disponibile in due edizioni: guaranteed e best effort. Un'edizione guaranteed riserva completamente le risorse richieste da una specifica della macchina virtuale. Una classe best effort non si comporta così e consente l'overcommit delle risorse. In genere, in un ambiente di produzione si utilizza un tipo overcommitted.

Esempi di classi di macchine virtuali predefinite sono le seguenti.

Classe CPU Memoria (GB) CPU e memoria riservate
guaranteed-large 4 16
best-effort-large 4 16 No
guaranteed-small 2 4
best-effort-small 2 4 No

L'amministratore di vSphere può assegnare un numero qualsiasi di classi di macchine virtuali esistenti per renderle disponibili ai tecnici di DevOps all'interno di uno spazio dei nomi specifico.

La classe di macchine virtuali offre un'esperienza semplificata per i tecnici di DevOps. Non è necessario che DevOps comprenda la configurazione completa di ogni macchina virtuale che intende creare. Possono invece selezionare una classe di macchine virtuali dalle opzioni disponibili e il servizio della macchina virtuale gestisce la configurazione della macchina virtuale.

Sul lato Kubernetes, le classi di macchine virtuali vengono visualizzate come risorse VirtualMachineClass.

Immagine della macchina virtuale
L'immagine di una macchina virtuale è un modello contenente una configurazione software, che include un sistema operativo, applicazioni e dati.

Quando i tecnici di DevOps creano macchine virtuali, possono selezionare le immagini dalla libreria dei contenuti associata allo spazio dei nomi. In DevOps, le immagini vengono esposte come oggetti VirtualMachineImage.

Un amministratore di vSphere può creare immagini di macchine virtuali compatibili con vSphere IaaS control plane e caricarle in una libreria di contenuti.

Libreria di contenuti
Un tecnico di DevOps utilizza una libreria di contenuti come origine delle immagini per creare una macchina virtuale. Analogamente alle classi di macchine virtuali, un amministratore di vSphere assegna librerie di contenuti esistenti a uno spazio dei nomi o a un cluster per renderle disponibili per i tecnici di DevOps. L'amministratore vSphere può inoltre rendere scrivibile la libreria dei contenuti dello spazio dei nomi. Questa autorizzazione aggiuntiva consente agli utenti DevOps di pubblicare le immagini nella libreria.
Classe di storage
Il servizio della macchine virtuale utilizza classi di storage per posizionare i dischi virtuali e collegare dinamicamente volumi persistenti. Per ulteriori informazioni sulle classe di storage, vedere Utilizzo dello storage persistente con i carichi di lavoro Supervisore in vSphere IaaS control plane.
Specifica della macchina virtuale
I tecnici di DevOps descrivono lo stato desiderato di una macchina virtuale in un file YAML che unisce l'immagine della macchina virtuale, la classe di macchine virtuali e la classe di storage.
Operatore macchina virtuale per Kubernetes
L'operatore della macchina virtuale consente la gestione delle macchine virtuali con un'API dichiarativa di tipo Kubernetes.
A partire dalla versione vSphere 8.0 Update 3, vSphere IaaS control plane supporta l'operatore della macchina virtuale v1alpha2. Tra gli altri vantaggi, questa versione offre le seguenti funzionalità:
  • Supporto del provider di bootstrap avanzato, incluso il supporto di Cloud-Init inline e Windows.
  • Configurazione avanzata della rete guest.
  • Funzionalità di stato aumentate.
  • Supporto dei gate di preparazione definiti dall'utente.
  • Nuova API VirtualMachineWebConsoleRequest.

Oltre alle nuove modifiche dell'API specifiche per v1alpha2, la maggior parte delle altre API in v1alpha2 possono funzionare allo stesso modo con v1alpha1. La maggior parte dei campi nelle specifiche della macchina virtuale è compatibile con v1alpha1.

Dopo il rilascio di v1alpha2, è possibile continuare a utilizzare gli oggetti v1alpha1. Tutti gli oggetti v1alpha1 verranno convertiti automaticamente in v1alpha2 utilizzando i webhook di conversione integrati nell'operatore della macchina virtuale.

Per informazioni sull'operatore macchina virtuale v1alpha2 e sui campi supportati, vedere https://vm-operator.readthedocs.io/en/stable/ref/api/v1alpha2/.

Rete
Il servizio della macchine virtuale non presenta requisiti specifici e si basa sulla configurazione di rete disponibile in vSphere IaaS control plane. Il servizio della macchina virtuale supporta entrambi i tipi di rete, ovvero la rete di vSphere o NSX. Quando vengono distribuite macchine virtuali, un provider di rete disponibile alloca indirizzi IP statici alle macchine virtuali. Per informazioni, vedere Rete del supervisore nella documentazione Concetti e pianificazione di vSphere IaaS Control Plane.

Servizio della macchina virtuale e Supervisore con zone vSphere

Quando si creano macchine virtuali in un Supervisore a tre zone, l'istanza della macchina virtuale viene replicata in tutte le zone disponibili. Per controllare il posizionamento delle macchine virtuali tramite il file YAML, il team di DevOps può utilizzare l'etichetta Kubernetes topology.kubernetes.io/zone. Ad esempio topology.kubernetes.io/zone: zone-a02.

Workflow per il provisioning e il monitoraggio di una macchina virtuale

L'amministratore di vSphere può impostare le guide per i criteri e la governance delle macchine virtuali e fornire risorse delle macchine virtuali, come le classi di macchine virtuali e i modelli di macchine virtuali ai tecnici di DevOps. Dopo aver distribuito una macchina virtuale, è possibile monitorarla mediante vSphere Client.

Passaggio Eseguito da Descrizione
1 Amministratore di vSphere Creare librerie di contenuti e assegnarle a uno spazio dei nomi o Supervisore
2 Amministratore di vSphere Creare una classe di macchine virtuali e assegnarla a uno spazio dei nomi

Per utilizzare NVIDIA vGPU, configurare un dispositivo PCI nella classe di macchine virtuali. Vedere Distribuzione di una macchina virtuale con vGPU e altri dispositivi PCI in vSphere IaaS control plane.

3 Ingegnere DevOp Eseguire il provisioning di una macchina virtuale in uno spazio dei nomi Kubernetes

Per le macchine virtuali del cluster Tanzu Kubernetes Grid, vedereUtilizzo del servizio TKG con vSphere IaaS Control Plane.

4 Amministratore di vSphere Monitorare le macchine virtuali distribuite
5 Tecnico DevOps Pubblicare un'immagine di macchina virtuale in una libreria di contenuti