Questa pagina descrive come eseguire il provisioning delle VM su nodi single-tenant, ovvero server fisici che eseguono VM solo da un singolo progetto. Prima di eseguire il provisioning delle VM su nodi single-tenant, leggi la relativa panoramica.
Prima di iniziare
- Prima di eseguire il provisioning delle VM su nodi single-tenant, controlla la tua quota. A seconda del numero e delle dimensioni dei nodi prenotati, potresti dover richiedere una quota aggiuntiva.
- Crea un template di nodo single-tenant.
- Crea un gruppo di nodi single-tenant.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda in base a come prevedi di utilizzare gli esempi in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi e alle API Google Cloud , non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud init
-
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella documentazione sull'autenticazione di Google Cloud .
Crea un template di nodo single-tenant
Prima di creare un gruppo di nodi ed eseguire il provisioning di VM single-tenant, devi creare un template di nodo single-tenant. Un template di nodo è una risorsa di regione che definisce le proprietà (come tipo di nodo, etichette di affinità, SSD locali, acceleratori e overcommit della CPU) per ciascun nodo in un gruppo di nodi.
Per configurare e creare un template di nodo utilizzando la console Google Cloud , Google Cloud CLI o l'API REST di Compute Engine, consulta Crea un template di nodo single-tenant.
Crea un gruppo di nodi single-tenant
Dopo aver creato un template di nodo, devi creare un gruppo di nodi single-tenant. Un gruppo di nodi è un cluster omogeneo di nodi single-tenant in una zona specifica che eredita le proprietà dal relativo template. Puoi configurare le policy di manutenzione dell'host, la scalabilità automatica e le impostazioni di condivisione tra progetti nel gruppo di nodi.
Per configurare e creare un gruppo di nodi utilizzando la console Google Cloud , Google Cloud CLI o l'API REST di Compute Engine, consulta Crea un gruppo di nodi single-tenant.
Esegui il provisioning di una VM single-tenant
Dopo aver ottenuto un gruppo di nodi in base a un template di nodo creato in precedenza, puoi eseguire il provisioning di singole VM in un gruppo di nodi single-tenant.
Per eseguire il provisioning di una VM in un nodo o un gruppo di nodi specifico con etichette di affinità corrispondenti a quelle assegnate in precedenza al template di nodo, segui la procedura standard per la creazione di un'istanza VM e assegna le etichette di affinità alla VM.
In alternativa, per eseguire il provisioning di una VM in un nodo single-tenant, puoi utilizzare la procedura riportata di seguito descritta nella pagina dei dettagli del gruppo di nodi. In base al gruppo di nodi in cui esegui il provisioning delle VM, Compute Engine assegna etichette di affinità.
Console
Nella console Google Cloud , vai alla pagina Nodi single-tenant.
Fai clic su Gruppi di nodi.
Fai clic sul nome del gruppo di nodi in cui eseguire il provisioning di un'istanza VM; facoltativamente, per eseguire il provisioning di una VM in un nodo single-tenant specifico, puoi fare clic direttamente sul nome del nodo.
Fai clic su Crea istanza per eseguire il provisioning di un'istanza VM in questo gruppo di nodi, appuntati i valori applicati automaticamente per nome, regione e zona e modificali in base alle necessità.
Seleziona una configurazione macchina specificando la famiglia di macchine, la serie e il tipo di macchina. Scegli la serie corrispondente al tipo di nodo single-tenant.
Modifica il disco di avvio, il firewall e altre impostazioni, se necessario.
Fai clic su Sole Tenancy, prendi nota delle etichette di affinità dei nodi assegnate automaticamente e utilizza Sfoglia per apportare le modifiche necessarie.
Fai clic su Gestione e per eseguire la manutenzione sull'host, scegli una delle seguenti opzioni:
Esegui la migrazione di un'istanza VM (consigliato): durante gli eventi di manutenzione la VM è stata migrata a un altro nodo nel gruppo di nodi.
Termina: la VM è stata interrotta durante gli eventi di manutenzione.
Per eseguire il riavvio automatico, scegli una delle seguenti azioni:
On (consigliato): riavvia automaticamente le VM se queste vengono messe in pausa per eventi di manutenzione.
Off: le VM non vengono riavviate automaticamente dopo un evento di manutenzione.
Fai clic su Crea per completare la creazione di una VM single-tenant.
gcloud
Utilizza il comando gcloud compute instances
create per
eseguire il provisioning di una VM in un gruppo di nodi single-tenant:
gcloud compute instances create VM_NAME \ [--zone=ZONE \] --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --node-group=GROUP_NAME \ --machine-type=MACHINE_TYPE \ [--maintenance-policy=MAINTENANCE_POLICY \] [--accelerator type=GPU_TYPE,count=GPU_COUNT \] [--local-ssd interface=SSD_INTERFACE \] [--restart-on-failure]
Il flag --restart-on-failure indica se le VM single-tenant
sono in grado di riavviarsi dopo l'arresto. Questo flag è attivo per impostazione predefinita. Usa --no-restart-on-failure per disattivarlo.
Sostituisci quanto segue:
VM_NAME: il nome della nuova VM single-tenantZONE: la zona in cui eseguire il provisioning della VM single-tenantIMAGE_FAMILY: la famiglia di immagini da utilizzare per creare la VMIMAGE_PROJECT: il progetto della famiglia di immaginiGROUP_NAME: il nome del gruppo di nodi in cui eseguire il provisioning della VM.MACHINE_TYPE: il tipo di macchina della VM single-tenant. Utilizza il comandogcloud compute machine-types listper ottenere un elenco dei tipi di macchine disponibili per il progetto.MAINTENANCE_POLICY: specifica il comportamento di riavvio delle VM single-tenant durante gli eventi di manutenzione. Imposta uno dei seguenti valori:MIGRATE: VM Migration a un altro nodo nel gruppo di nodi durante gli eventi di manutenzione.TERMINATE: la VM è stata arrestata durante gli eventi di manutenzione.
GPU_TYPE: tipo di GPU. Eseguine l'impostazione su uno dei tipi di acceleratore specificati al momento della creazione del template di nodo.GPU_COUNT: numero di GPU del totale specificato dal template di nodo da collegare a questa VM. Il valore predefinito è1.SSD_INTERFACE: tipo di interfaccia SSD locale. Puoi impostarlo solo per le istanze create da un template di nodo con supporto SSD locale. Se lo imposti durante la creazione dell'istanza e il template di nodo non supporta l'SSD locale, l'operazione non va a buon fine. Esegui l'impostazione sunvmese i driver dell'immagine disco di avvio sono ottimizzati per NVMe, altrimenti suscsi. Specifica questo flag e un valore corrispondente una volta per ogni partizione dell'SSD locale.
REST
Utilizza il
metodo instances.insert
per eseguire il provisioning di una VM in un gruppo di nodi single-tenant:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/VM_ZONE/instances
{ "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "name": "VM_NAME", "scheduling": { "onHostMaintenance": MAINTENANCE_POLICY, "automaticRestart": RESTART_ON_FAILURE, "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] }
Sostituisci quanto segue:
PROJECT_ID: l'ID progettoVM_ZONE: la zona in cui eseguire il provisioning della VM single-tenantMACHINE_TYPE_ZONE: la zona del tipo di macchinaMACHINE_TYPE: il tipo di macchina della VM single-tenant. Utilizza il metodomachineTypes.listper ottenere un elenco dei tipi di macchine disponibili per il progetto.VM_NAME: il nome della nuova VM single-tenantMAINTENANCE_POLICY: specifica il comportamento di riavvio delle VM single-tenant durante gli eventi di manutenzione. Imposta uno dei seguenti valori:MIGRATE: VM Migration a un altro nodo nel gruppo di nodi durante gli eventi di manutenzione.TERMINATE: la VM è stata arrestata durante gli eventi di manutenzione.
RESTART_ON_FAILURE: indica se le VM single-tenant sono in grado di riavviarsi dopo l'arresto. Il valore predefinito ètrue.GROUP_NAME: il nome del gruppo di nodi in cui eseguire il provisioning della VM.NETWORK: l'URL della risorsa di rete per questa VMREGION: la regione contenente la subnet per questa VMSUBNETWORK: l'URL della risorsa della subnet per questa VMGPU_TYPE: il tipo di GPU. Eseguine l'impostazione su uno dei tipi di acceleratore specificati al momento della creazione del template di nodo.GPU_COUNT: il numero di GPU del totale specificato dal template di nodo da collegare a questa VM. Il valore predefinito è1.IMAGE_PROJECT: il progetto della famiglia di immaginiIMAGE_FAMILY: la famiglia di immagini da utilizzare per creare la VMLOCAL_SSD_ZONE: la zona dell'SSD localeSSD_INTERFACE: il tipo di interfaccia SSD locale. Esegui l'impostazione suNVMEse i driver dell'immagine del disco di avvio sono ottimizzati per NVMe, altrimenti suSCSI.
Esegui il provisioning di un gruppo di VM single-tenant
I gruppi di istanze gestite (MIG) ti consentono di eseguire il provisioning di un gruppo di VM single-tenant identiche. Le etichette di affinità ti consentono di specificare il nodo o il gruppo di nodi single-tenant in cui eseguire il provisioning del gruppo di VM single-tenant.
Per i MIG a livello di regione, devi creare gruppi di nodi in ciascuna delle zone in cui si trovano queste istanze e specificare le affinità dei nodi per questi gruppi nel template di istanza di questi MIG.
gcloud
Utilizza il comando
gcloud compute instance-templates createper generare un template di gruppo di istanze gestite per un gruppo di VM da creare in un gruppo di nodi single-tenant:gcloud compute instance-templates create INSTANCE_TEMPLATE \ --machine-type=MACHINE_TYPE \ --image-project=IMAGE_PROJECT \ --image-family=IMAGE_FAMILY \ --node-group=GROUP_NAME \ [--accelerator type=GPU_TYPE,count=GPU_COUNT \] [--local-ssd interface=SSD_INTERFACE]
Sostituisci quanto segue:
INSTANCE_TEMPLATE: il nome del nuovo template di istanzaMACHINE_TYPE: il tipo di macchina della VM single-tenant. Utilizza ilgcloud compute machine-types listcomando per ottenere un elenco di tipi di macchine disponibili per il progetto.IMAGE_PROJECT: il progetto della famiglia di immaginiIMAGE_FAMILY: la famiglia di immagini da utilizzare per creare la VMGROUP_NAME: il nome del gruppo di nodi in cui eseguire il provisioning della VM. In alternativa, se vuoi utilizzare questo template di istanza per creare un gruppo di istanze gestite a livello di regione esistente in più di una zona, utilizza il flag--node-affinity-fileper specificare un elenco di valori per i gruppi di nodi per quel gruppo di istanze gestite.GPU_TYPE: tipo di GPU. Eseguine l'impostazione su uno dei tipi di acceleratore specificati al momento della creazione del template di nodo.GPU_COUNT: numero di GPU del totale specificato dal template di nodo da collegare a questa VM. Il valore predefinito è1.SSD_INTERFACE: tipo di interfaccia SSD locale. Esegui l'impostazione sunvmese i driver dell'immagine disco di avvio sono ottimizzati per NVMe, altrimenti suscsi. Specifica questo flag e un valore corrispondente una volta per ogni partizione SSD locale.
Utilizza il comando
gcloud compute instance-groups managed createper creare un gruppo di istanze gestite all'interno del gruppo di nodi single-tenant:gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE \ --zone=ZONE
Sostituisci quanto segue:
INSTANCE_GROUP_NAME: il nome di questo gruppo di istanzeSIZE: il numero di VM da includere in questo gruppo di istanze. Il gruppo di nodi deve disporre di risorse sufficienti per ospitare le istanze in questo gruppo di istanze gestite. Utilizza il gestore della scalabilità automatica dei gruppi di istanze gestite per gestire automaticamente le dimensioni di questi gruppi.INSTANCE_TEMPLATE: il nome del template di istanza da utilizzare per creare questo gruppo di istanze gestite. Il template deve avere una o più etichette di affinità dei nodi che rimandano ai gruppi di nodi appropriati.ZONE: la zona in cui creare il gruppo di istanze gestite Per un gruppo di istanze gestite a livello di regione, sostituisci il flag--zonecon--regione specifica una regione. Aggiungi inoltre il flag--zonesper determinare tutte le zone in cui esistono gruppi di nodi.
REST
Utilizza il metodo
instanceTemplates.insertper creare un template di gruppo di istanze gestite all'interno del gruppo di nodi single-tenant:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/TEMPLATE_ZONE/instance-templates { "name": "INSTANCE_TEMPLATE", "properties": { "machineType": "zones/MACHINE_TYPE_ZONE/machineTypes/MACHINE_TYPE", "scheduling": { "nodeAffinities": [ { "key": "compute.googleapis.com/node-group-name", "operator": "IN", "values": [ "GROUP_NAME" ] } ] }, "networkInterfaces": [ { "network": "global/networks/NETWORK", "subnetwork": "regions/REGION/subnetworks/SUBNETWORK" } ], "guestAccelerators": [ { "acceleratorType": GPU_TYPE, "acceleratorCount": GPU_COUNT } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" } }, { "type":"SCRATCH", "initializeParams":{ "diskType":"zones/LOCAL_SSD_ZONE/diskTypes/local-ssd" }, "autoDelete":true, "interface":"SSD_INTERFACE" } ] } }Sostituisci quanto segue:
PROJECT_ID: l'ID progettoTEMPLATE_ZONE: la zona in cui creare il template di istanzaINSTANCE_TEMPLATE: il nome del nuovo template di istanzaMACHINE_TYPE_ZONE: la zona del tipo di macchinaMACHINE_TYPE: il tipo di macchina della VM single-tenant. Utilizza il metodomachineTypes.listper ottenere un elenco dei tipi di macchine disponibili per il progetto.GROUP_NAME: il nome del gruppo di nodi in cui eseguire il provisioning della VM. Se vuoi utilizzare questo template di istanza per creare un MIG a livello di regione esistente in più di una zona, specifica un elenco di gruppi di nodi presenti nelle stesse zone del MIG a livello di regione.NETWORK: l'URL della risorsa di rete per questo template di istanzaREGION: la regione contenente la subnet per questo template di istanzaSUBNETWORK: l'URL della risorsa della subnet per questo template di istanzaGPU_TYPE: il tipo di GPU. Eseguine l'impostazione su uno dei tipi di acceleratore specificati al momento della creazione del template di nodo.GPU_COUNT: il numero di GPU del totale specificato dal template di nodo da collegare a questa VM. Il valore predefinito è1.IMAGE_PROJECT: il progetto della famiglia di immaginiIMAGE_FAMILY: la famiglia di immagini da utilizzare per creare la VMLOCAL_SSD_ZONE: la zona dell'SSD localeSSD_INTERFACE: il tipo di interfaccia SSD locale. Esegui l'impostazione suNVMEse i driver dell'immagine disco di avvio sono ottimizzati per NVMe, altrimenti suSCSI.
Utilizza il metodo
instanceGroupManagers.insertper creare un gruppo di istanze gestite all'interno del gruppo di nodi single-tenant in base al template di istanza creato in precedenza. In alternativa, se vuoi creare un gruppo di istanze gestite a livello di regione, utilizza il metodoregionInstanceGroupManagers.inserte determina la regione e le zone di tutti i gruppi di nodi come specificato nel template di istanza.Ad esempio, per creare un gruppo di istanze gestite a livello di zona, utilizza la seguente richiesta:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "baseInstanceName": "NAME_PREFIX", "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE" }Sostituisci quanto segue:
PROJECT_ID: l'ID progettoZONE: la zona in cui creare il gruppo di istanze gestiteNAME_PREFIX: il nome del prefisso per ciascuna delle istanze nel gruppo di istanze gestiteINSTANCE_GROUP_NAME: il nome del gruppo di istanzeSIZE: il numero di VM da includere in questo gruppo di istanze. Il gruppo di nodi deve disporre di risorse sufficienti per ospitare le istanze in questo gruppo di istanze gestite. Utilizza il gestore della scalabilità automatica dei gruppi di istanze gestite per gestire automaticamente le dimensioni di questi gruppi.INSTANCE_TEMPLATE: l'URL del template di istanza da utilizzare per creare questo gruppo. Il template deve avere un'etichetta di affinità dei nodi che rimandi al gruppo di nodi appropriato.
Configura le etichette di affinità dei nodi
Le etichette di affinità dei nodi ti consentono di raggruppare logicamente i gruppi di nodi e pianificare le VM su un insieme specifico di gruppi di nodi. Puoi anche utilizzare le etichette di affinità dei nodi per pianificare le VM su gruppi di nodi situati in zone diverse e mantenere comunque questi gruppi all'interno di un raggruppamento logico. La procedura riportata di seguito è un esempio di utilizzo delle etichette di affinità per associare le VM a un gruppo di nodi specifico utilizzato per i workload di produzione. Questo esempio mostra come pianificare una singola VM, ma puoi anche utilizzare i gruppi di istanze gestite per pianificare un gruppo di VM.
gcloud
Utilizza il comando
gcloud compute sole-tenancy node-templates createper creare un template di nodo con un insieme di etichette di affinità per un workload di produzione:gcloud compute sole-tenancy node-templates create prod-template \ --node-type=n1-node-96-624 \ --node-affinity-labels workload=frontend,environment=prod
Utilizza il comando
gcloud compute sole-tenancy node-templates describeper visualizzare le etichette di affinità dei nodi assegnate al template di nodo.Utilizza il comando
gcloud compute sole-tenancy node-groups createper creare un gruppo di nodi che utilizza il template di produzione:gcloud compute sole-tenancy node-groups create prod-group \ --node-template=prod-template \ --target-size=1
Per le VM di produzione, crea un file
node-affinity-prod.jsonper specificare l'affinità delle VM di produzione. Ad esempio, potresti creare un file che specifica che le VM vengono eseguite solo sui nodi con affinitàworkload=frontendeenvironment=prod. Crea il file di affinità dei nodi in una posizione a tua scelta o utilizza Cloud Shell.[ { "key" : "workload", "operator" : "IN", "values" : ["frontend"] }, { "key" : "environment", "operator" : "IN", "values" : ["prod"] } ]Utilizza il file
node-affinity-prod.jsoncon il comandogcloud compute instances createper pianificare una VM sul gruppo di nodi con etichette di affinità corrispondenti.gcloud compute instances create prod-vm \ --node-affinity-file node-affinity-prod.json \ --machine-type=n1-standard-2
Utilizza il comando
gcloud compute instances describee controlla il camposchedulingper visualizzare le affinità dei nodi assegnate alla VM.
Configura le etichette di anti-affinità dei nodi
Le etichette di affinità dei nodi possono essere configurate come etichette di anti-affinità per impedire l'esecuzione delle VM su nodi specifici. Ad esempio, puoi utilizzare le etichette di anti-affinità per impedire che le VM che utilizzi per scopi di sviluppo vengano pianificate sugli stessi nodi della VM di produzione. L'esempio seguente mostra come utilizzare le etichette di affinità per impedire l'esecuzione delle VM su gruppi di nodi specifici. Questo esempio mostra come pianificare una singola VM, ma puoi anche utilizzare i gruppi di istanze gestite per pianificare un gruppo di VM.
gcloud
Per le VM di sviluppo, specifica la loro affinità creando un
node-affinity-dev.jsonin una posizione a tua scelta o utilizzando Cloud Shell. Ad esempio, crea un file che configuri le VM per l'esecuzione su qualsiasi gruppo di nodi con affinitàworkload=frontende nonenvironment=prod:[ { "key" : "workload", "operator" : "IN", "values" : ["frontend"] }, { "key" : "environment", "operator" : "NOT_IN", "values" : ["prod"] } ]Utilizza il file
node-affinity-dev.jsoncon il comandogcloud compute instances createper creare la VM di sviluppo:gcloud compute instances create dev-vm \ --node-affinity-file=node-affinity-dev.json \ --machine-type=n1-standard-2
Utilizza il comando
gcloud compute instances describee controlla il camposchedulingper visualizzare le anti-affinità dei nodi assegnate alla VM.
Passaggi successivi
Per informazioni su come attivare la scalabilità automatica su gruppi di nodi single-tenant, consulta Gestore della scalabilità automatica sul gruppo di nodi.
Per saperne di più su come portare le licenze esistenti in Google Cloud, consulta la relativa pagina.
Per saperne di più sui nodi single-tenant, consulta Nodi single-tenant.