Puoi creare immagini personalizzate da dischi di origine esistenti e utilizzarle per creare e avviare macchine virtuali (VM). Le immagini personalizzate sono ideali per l'utilizzo quando hai creato e modificato un disco di avvio permanente in un determinato stato e devi salvare questo stato per creare VM. La creazione e il salvataggio di un'immagine personalizzata da utilizzare come nuova immagine VM nella creazione di VM future impedisce la duplicazione dei passaggi di configurazione in un secondo momento.
Prima di iniziare
Per utilizzare i comandi dell'interfaccia a riga di comando (CLI)gdcloud, assicurati di aver scaricato, installato
e configurato la CLI gdcloud.
Tutti i comandi per l'appliance GDC air-gapped utilizzano la CLI gdcloud o
kubectl e richiedono un ambiente Linux.
Recupera il percorso del file kubeconfig
Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:
Individua il nome del server dell'API Management o chiedi all'amministratore della piattaforma (PA) qual è il nome del server.
Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.
Utilizza il percorso per sostituire
MANAGEMENT_API_SERVER{"</var>"}}in queste istruzioni.
Richiedere autorizzazioni e accesso
Per creare un'immagine personalizzata, devi disporre dell'accesso alle immagini VM a livello di progetto. Segui
i passaggi indicati per
l'amministratore IAM del progetto
per assegnarti il ruolo Amministratore immagini di macchine virtuali del progetto (project-vm-image-admin)
nel namespace del progetto in cui si trova la VM. Se utilizzi la
console GDC o gcloud CLI per creare un'immagine, devi
disporre anche del ruolo Amministratore macchina virtuale progetto (project-vm-admin) e del ruolo
Visualizzatore progetto (project-viewer).
Creare un'immagine personalizzata
Questa sezione descrive come creare un'immagine personalizzata su una VM Linux.
Preparare la VM per un'immagine
Puoi creare un'immagine da un disco mentre è collegato a una VM in esecuzione. Tuttavia, l'immagine è più affidabile se metti la VM in uno stato in cui l'immagine deve essere acquisita.
Ridurre al minimo la scrittura di dati sul disco permanente
Utilizza uno dei seguenti processi per ridurre le scritture su disco. Arresta la VM oppure riduci al minimo le scritture sul disco:
- Arresta la VM in modo che possa essere arrestata e smettere di scrivere dati sul disco permanente.
Se non puoi arrestare la VM prima di creare l'immagine, riduci al minimo le scritture sul disco e sincronizza il file system. Per ridurre al minimo le scritture sul disco permanente, segui questi passaggi:
- Metti in pausa le app o i processi del sistema operativo che scrivono dati sul disco permanente. Se necessario, esegui lo svuotamento dell'app sul disco. Altre app potrebbero avere procedure simili.
- Impedisci alle tue app di scrivere sul disco permanente.
- Esegui
sudo sync.
Crea l'immagine
Segui questi passaggi per creare immagini disco da un disco permanente, anche mentre il disco è collegato a una VM:
Console
Seleziona un progetto.
Nel menu di navigazione, fai clic su Macchine virtuali > Immagini.
Fai clic su Crea immagine.
Inserisci un nome univoco per l'immagine. Il nome non deve contenere più di 35 caratteri.
Inserisci una versione da aggiungere al nome dell'immagine.
Nel campo Disco di origine, seleziona un disco.
Nel campo Dimensione minima disco, inserisci una dimensione del disco.
Inserisci una descrizione dell'immagine.
Fai clic su Crea.
L'immagine viene visualizzata nell'elenco delle immagini.
API
Elenca tutti gli oggetti
VirtualMachineDisk:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECTSeleziona un oggetto
VirtualMachineDiskda utilizzare come disco di origine per la nuova immagine.Verifica se il disco della VM è collegato a una VM:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \ DISK_NAME -o jsonpath='{.status.virtualMachineAttachments}'Output di esempio che mostra un disco collegato a una VM:
[{"autoDelete":true,"nameRef":{"name":"vm1"},"uid":"...."}]- Se l'output restituisce un valore per
"name", il disco è collegato a una VM indicata dal camponame. In questo output di esempio èvm1. Procedi per controllare lo stato di esecuzione della VM. - Se l'output è vuoto, vai a recuperare l'
sizediVirtualMachineDisk.
- Controlla
lo stato di esecuzione della VM. Se lo stato non è
Stopped, arresta la VM e procedi con la creazione diVirtualMachineImage.
- Se l'output restituisce un valore per
Ottieni il
sizediVirtualMachineDiskper creare l'immagine:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \ DISK_NAME -o jsonpath='{.spec.size}'Crea un oggetto
VirtualMachineImageImportnel server dell'API Management:kubectl --kubeconfig MANAGEMENT_API_SERVER \ apply -n PROJECT -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineImageImport metadata: name: VM_IMAGE_IMPORT_NAME spec: source: diskRef: name: DISK_NAME imageMetadata: name: IMAGE_NAME operatingSystem: OS_NAME minimumDiskSize: MINIMUM_DISK_SIZE EOFVerifica che l'importazione dell'immagine sia terminata e che lo stato sia
Ready:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachineimageimports.virtualmachine.gdc.goog --namespace PROJECT \ VM_IMAGE_IMPORT_NAME -o jsonpath='{.status}'Al termine dell'importazione, lo stato dovrebbe essere simile al seguente:
{ "conditions": [ { "lastTransitionTime": "", "message": "", "observedGeneration": 1, "reason": "ImportJobComplete", "status": "True", "type": "Ready" } ], "imageName": IMAGE_NAME }Verifica che l'immagine sia stata creata:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachineimages.virtualmachine.gdc.goog --namespace PROJECT \ CREATED_IMAGE_NAMESostituisci le variabili utilizzando le seguenti definizioni.
Variabile Definizione MANAGEMENT_API_SERVERIl file kubeconfigdel server API Management.PROJECTIl progetto GDC in cui creare l'immagine. DISK_NAMEIl nome del disco di origine, ad esempio vm1-boot-disk.VM_IMAGE_IMPORT_NAMEIl nome dell'importazione dell'immagine VM. Il nome non deve contenere più di 35 caratteri. IMAGE_NAMEIl nome dell'immagine creata, ad esempio custom-image.OS_NAMEIl nome del sistema operativo dell'immagine deve essere uno di questi tre: ubuntu-2004,windows-2019orhel-8.MINIMUM_DISK_SIZELa dimensione minima del disco nell'importazione dell'immagine VM, ad esempio 20G:
minimumDiskSize, deve sempre essere maggiore o uguale alla dimensione del disco di avvio di origine.CREATED_IMAGE_NAMEIl nome dell'immagine creata. Il nome dell'immagine creata deve essere univoco e non può essere un nome di immagine già esistente nel progetto.