Questo documento è destinato ai proprietari di applicazioni che eseguono Google Distributed Cloud. Questo documento mostra come creare e gestire risorse disco per (VM) che utilizzano il runtime VM su GDC.
Prima di iniziare
Per completare questo documento, devi accedere alle seguenti risorse:
- Accesso a Google Distributed Cloud versione 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o un cluster superiore. Puoi utilizzare qualsiasi tipo di cluster in grado di eseguire carichi di lavoro. Se necessario, prova Google Distributed Cloud su Compute Engine o consulta le Panoramica della creazione del cluster. - Lo strumento client
virtctl
installato come plug-in perkubectl
. Se necessario, installa lo strumento client virtctl.
Crea una VM con un disco collegato
Quando crei una VM, puoi collegare un disco di avvio o un disco dati esistente, da un'immagine (incluso il disco di avvio) oppure crea un disco vuoto.
Disco vuoto
In questo scenario, creerai un disco vuoto e lo collegherai alla VM. Questo consente di creare un disco dati per archiviare i dati dell'applicazione.
Crea un manifest che definisca
VirtualMachineDisk
eVirtualMachine
, ad esempiomy-vm.yaml
, nell'editor di tua scelta:nano my-vm.yaml
Copia e incolla la seguente definizione YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
Sostituisci quanto segue:
DISK_NAME
: il nome del disco vuoto che crei e colleghi alla tua VM.VM_NAME
: il nome della VM che stai in fase di creazione.In questo esempio viene creato un disco
10Gi
vuoto (10 gibibyte) denominatoDISK_NAME
. Nel campospec.disks
della VM devi collegare anche un disco di avvio, ad esempio da un'immagine come mostrato nella prossima sezione.
Salva e chiudi il file manifest nell'editor.
Crea la VM e il disco utilizzando
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso di il file kubeconfig del cluster.
Dall'immagine
In questo scenario, creerai un disco da un'immagine e lo collegherai alla VM. Questo consente di creare un disco di avvio, ad esempio da un'immagine. Puoi anche creare e collegare dischi dati da un'immagine.
Origini immagini supportate
Il runtime VM su GDC consente una varietà di formati delle immagini
e supporta tre tipi di origini delle immagini che possono essere specificati nel
VirtualMachineDisk
specifiche. Ciascuno dei seguenti esempi crea 20 gibibyte
da un'origine immagine supportata diversa.
Hypertext Transfer Protocol (HTTP)
Il seguente esempio di
VirtualMachineDisk
mostra la struttura di base di una Origine immagine HTTP. Il campourl
prevede un URL HTTP o HTTPS.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: http: url: https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img size: 20GiB storageClassName: local-shared
Cloud Storage
L'esempio seguente mostra come creare un disco da un'immagine in un nel bucket Cloud Storage. Se le credenziali predefinite dell'applicazione sulla macchina non siano sufficienti per accedere all'URL di Cloud Storage, devi fornire e credenziali. Nell'esempio seguente,
my-gcs
è un secret contenente un con codifica base64.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: gcs: url: gs://kubevirt-ci-vm-images/rhel8.2/rhel8_2_cloud.qcow2 secretRef: my-gcs size: 20GiB storageClassName: local-shared
Se hai utilizzato le chiavi degli account di servizio scaricate per creare il cluster, puoi utilizzare la chiave dell'account di servizio di Container Registry per l'accesso a Cloud Storage. Se creare un account di servizio separato per accedere a Cloud Storage, consulta Configura un account di servizio che può accedere a un bucket Cloud Storage.
Utilizza il comando seguente per creare un secret Kubernetes dal file di chiavi dell'account di servizio:
kubectl create secret generic SECRET_NAME --from-file=KEY_FILE --namespace default \ --kubeconfig KUBECONFIG
Sostituisci quanto segue:
SECRET_NAME
: nome del tuo secret.KEY_FILE
: percorso della risorsa scaricata e il file JSON delle chiavi dell'account di servizio. Ad esempio,bmctl-workspace/.sa-keys/my-project-anthos-baremetal-gcr.json
.KUBECONFIG
: percorso del cluster kubeconfig.
Per ulteriori informazioni sull'utilizzo delle credenziali per accedere a Cloud Storage, vedi Crea e utilizza le credenziali per importare immagini da Cloud Storage.
Esempio di Container Registry
Registri di container conformi alla Open Container Initiative (OCI) distribution-spec sono supportate. L'esempio seguente crea un disco da un'immagine archiviata in registro di sistema.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: registry: url: docker://kubevirt/fedora-cloud-registry-disk-demo size: 20GiB storageClassName: local-shared
Formati dell'immagine validi
Puoi utilizzare uno qualsiasi dei seguenti formati di immagine quando crei un disco un'immagine:
- Archivio zip GNU (gzip) (
.gz
) - Formato RAW (
.raw
,.img
) - Copia QEMU in scrittura versione 2 (qcow2) immagine disco (
.qcow2
) - Archivio compresso con XZ (
.xz
) - File del disco della macchina virtuale (VMDK) (
.vmdk
) - File VDI (Virtual Disk Image) VirtualBox (
.vdi
) - File immagine del disco rigido virtuale (VHD) (
.vdh
) - File VDHX (Virtual Hard Disk versione 2) (
.vdhx
) - File immagine disco ISO (
.iso
)
Esempio di un disco creato da un'immagine HTTP
Segui questi passaggi per creare un disco di avvio da un'immagine Ubuntu:
Crea un manifest che definisca
VirtualMachineDisk
eVirtualMachine
, ad esempio my-vm.yaml,,nell'editor che preferisci:nano my-vm.yaml
Copia e incolla la seguente definizione YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv
In questo esempio viene creato un disco
20Gi
(20 gibibyte) denominatoVM_NAME-boot-dv
che utilizza Ubuntu pubblico dell'immagine. Nella sezionespec.disks
della VM, il disco è impostato suboot: true
.Salva e chiudi il manifest nell'editor.
Crea la VM e il disco utilizzando
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso di il file kubeconfig del cluster.
Disco esistente
In questo scenario, creerai un disco vuoto e lo collegherai alla VM. Questo consente di creare un disco dati per archiviare i dati dell'applicazione.
Crea un manifest
VirtualMachine
, ad esempio my-vm.yaml,,nell'editor di la tua scelta:nano my-vm.yaml
Copia e incolla la seguente definizione YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: EXISTING_DISK_NAME
Questo esempio collega un disco esistente denominato
EXISTING_DISK_NAME
.Nella sezione
spec.disks
della VM, devi anche collegare un disco di avvio, come da un'immagine, come mostrato nella sezione precedente.Salva e chiudi il manifest della VM nell'editor.
Crea la VM utilizzando
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso di il file kubeconfig del cluster.
Localizzazione dei dischi
A partire da Google Distributed Cloud versione 1.13.0, quando crei una VM,
Il runtime VM su GDC utilizza i nomi dei dischi specificati nella risorsa VM per
per impostare i numeri di serie dei dischi. In particolare, i nomi che specifichi
spec.disks.virtualMachineDiskName
nella risorsa personalizzata VirtualMachine
sono
usato nel numero di serie dei dischi. Questa funzionalità facilita l'individuazione
i tuoi dischi nella VM quando devi eseguire operazioni su disco, ad esempio
formattazione o montaggio.
Ad esempio, se hai creato una VM e specificato un disco di avvio denominato
sample-boot-dv
la tua risorsa personalizzata VirtualMachine
ha un aspetto simile a questo
questo:
apiVersion: vm.cluster.gke.io/v1
kind: VirtualMachine
metadata:
name: sample-vm
spec:
osType: Linux
compute:
cpu:
vcpus: 2
memory:
capacity: 4Gi
interfaces:
- name: eth0
networkName: pod-network
default: true
disks:
- boot: true
virtualMachineDiskName: sample-vm-boot-dv
- virtualMachineDiskName: attached-disk
Per le VM Linux, quando accedi alla tua VM, puoi eseguire questo comando per elencare i dischi in base al numero di serie:
ls -l /dev/disk/by-id/
La tua risposta dovrebbe avere un aspetto simile a questo output di esempio, in cui il disco appaiono come numeri di serie:
total 0
lrwxrwxrwx 1 root root 9 Oct 19 17:17 ata-QEMU_HARDDISK_agentInstallation -> ../../sdb
lrwxrwxrwx 1 root root 9 Oct 19 17:17 ata-QEMU_HARDDISK_agentSADisk -> ../../sda
lrwxrwxrwx 1 root root 9 Oct 19 17:17 virtio-sample-boot-dv -> ../../vda
lrwxrwxrwx 1 root root 10 Oct 19 17:17 virtio-sample-boot-dv-part1 -> ../../vda1
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-sample-boot-dv-part14 -> ../../vda14
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-sample-boot-dv-part15 -> ../../vda15
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-attached-disk -> ../../vdb
Tieni presente il seguente comportamento situazionale delle funzionalità:
- Se il valore
virtualMachineDiskName
supera i 20 caratteri, Il runtime VM su GDC utilizza solo i primi 20 caratteri come numero seriale numero. - Se sono presenti due dischi con gli stessi primi 20 caratteri, solo il primo avranno un numero di serie.
Crea e collega dischi a una VM esistente
Se hai una VM esistente, puoi creare e collegare dischi per supportare cicli di vita delle applicazioni. La VM deve essere in stato arrestato prima di poter collegare un disco.
Disco vuoto
In questo scenario, creerai un disco vuoto e lo collegherai alla VM. Questo consente di creare un disco dati per archiviare i dati dell'applicazione.
Utilizza
kubectl
per arrestare la VM, se necessario:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIG
Sostituisci quanto segue:
VM_NAME
: il nome della VM che vuoi interrompere.KUBECONFIG
: il percorso kubeconfig del cluster.
Modifica la risorsa VM esistente, ad esempio
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Aggiorna il manifest YAML
VirtualMachine
per aggiungere unVirtualMachineDisk
in alto, quindi collega il disco alla fine del modulo Sezionespec.disks
:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
In questo esempio viene creato un disco
10Gi
vuoto (10 gibibyte) denominatoDISK_NAME
.Salva e chiudi il manifest aggiornato della VM nell'editor.
Utilizza
kubectl
per avviare la VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Dall'immagine
In questo scenario, crei un disco da un'immagine di origine e lo colleghi al VM.
Utilizza
kubectl
per arrestare la VM, se necessario:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIG
Sostituisci quanto segue:
VM_NAME
: il nome della VM che vuoi interrompere.KUBECONFIG
: il percorso kubeconfig del cluster.
Modifica la risorsa VM esistente, ad esempio
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Aggiorna il file manifest
VirtualMachine
per aggiungere una sezioneVirtualMachineDisk
all'indirizzo in alto, quindi collega il disco alla fine della sezionespec.disks
della VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi source: http: url: http://example.com/my-disk-img.qcow2 --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
In questo esempio viene creato un disco
10Gi
(10 gibibyte) denominatoDISK_NAME
dahttp://example.com/my-disk-img.qcow2
.Salva e chiudi il manifest aggiornato della VM nell'editor.
Utilizza
kubectl
per avviare la VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Crea un disco
In questo scenario, le risorse del disco verranno create separatamente dalla VM Google Cloud. Questo scenario consente di creare i dischi in anticipo e quindi di collegarli a delle VM in base alle esigenze.
Disco vuoto
Per creare un disco vuoto, completa i seguenti passaggi.
Crea un manifest
VirtualMachineDisk
, ad esempio my-disk.yaml,nell'editor di tua scelta:nano my-disk.yaml
Copia e incolla la seguente definizione YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi
In questo esempio viene creato un disco
10Gi
vuoto (10 gibibyte) denominatoDISK_NAME
.Salva e chiudi il manifest del disco nell'editor.
Crea il disco utilizzando
kubectl
:kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso di il file kubeconfig del cluster.
Dall'immagine
Per creare un disco da un'immagine, completa i seguenti passaggi.
Crea un manifest
VirtualMachineDisk
, ad esempiomy-disk.yaml
, nella un editor di tua scelta:nano my-disk.yaml
Copia e incolla la seguente definizione YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img
In questo esempio viene creato un disco
20Gi
(20 gibibyte) denominatoDISK_NAME
utilizzando un'immagine Ubuntu pubblica.Salva e chiudi il manifest del disco nell'editor.
Crea il disco utilizzando
kubectl
:kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIG
Sostituisci
KUBECONFIG
con il percorso di il file kubeconfig del cluster.
Passaggi successivi
- Crea e utilizza le credenziali per importare immagini da Cloud Storage.
- Creare e utilizzare classi di archiviazione in Google Distributed Cloud.
- Quando non hai più bisogno di VM o delle relative risorse del disco virtuale, Eliminare una VM in Google Distributed Cloud.