Crear y poner en marcha una instancia de VM

En esta página se explica cómo crear una instancia de máquina virtual (VM) usando una imagen o una captura del disco de arranque.

Puedes crear una VM con uno o varios discos. También puedes añadir discos a tu VM después de crearla. El dispositivo air-gapped de Google Distributed Cloud (GDC) inicia automáticamente la instancia de VM después de crearla.

Puedes añadir secuencias de comandos de inicio a una VM, ya sea antes o después de crearla. Para obtener más información sobre las secuencias de comandos de inicio, consulta la página Usar una secuencia de comandos de inicio con una instancia de VM.

Antes de empezar

Para usar los comandos de la gdcloud interfaz de línea de comandos (CLI), asegúrate de haber descargado, instalado y configurado la gdcloud CLI. Todos los comandos del dispositivo aislado de GDC usan la CLI gdcloud o kubectl y requieren un entorno de sistema operativo (SO).

Obtener la ruta del archivo kubeconfig

Para ejecutar comandos en el servidor de la API Management, asegúrate de tener los siguientes recursos:

  1. Busca el nombre del servidor de la API Management o pregunta a tu administrador de plataforma cuál es.

  2. Inicia sesión y genera el archivo kubeconfig del servidor de la API Management si no tienes uno.

  3. Usa la ruta para sustituir MANAGEMENT_API_SERVER{"</var>"}} en estas instrucciones.

Solicitar permisos y acceso

Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de máquinas virtuales de proyecto. Sigue los pasos para verificar o pide al administrador de gestión de identidades y accesos de tu proyecto que te asigne el rol Administrador de máquinas virtuales de proyectos (project-vm-admin) en el espacio de nombres del proyecto en el que reside la VM.

Para realizar operaciones con VMs mediante la consola de GDC o la CLI de gdcloud, pide al administrador de gestión de identidades y accesos de tu proyecto que te asigne el rol Administrador de VirtualMachine de proyecto y el rol Lector de proyectos (project-viewer).

Crear una instancia de VM a partir de una imagen

En esta sección se explica cómo crear una VM a partir de una imagen de SO proporcionada por GDC o de una imagen de SO personalizada.

Ver una lista de imágenes proporcionadas por GDC

Antes de crear una VM con una imagen proporcionada por GDC, consulta la lista de imágenes disponibles.

gdcloud

Lista todas las imágenes disponibles y su tamaño de disco mínimo:

gdcloud compute images list

Este comando incluye imágenes proporcionadas por GDC e imágenes personalizadas. Elige una de las imágenes del espacio de nombres vm-system.

API

  1. Lista de todas las imágenes proporcionadas por GDC:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace vm-system
    
  2. Obtener el minimumDiskSize de una imagen concreta proporcionada por GDC:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace vm-system \
        BOOT_DISK_IMAGE_NAME -ojsonpath='{.spec.minimumDiskSize}{"\n"}'
    

    Haz los cambios siguientes:

    • MANAGEMENT_API_SERVER con el kubeconfig del servidor de la API Management.
    • BOOT_DISK_IMAGE_NAME con el nombre de la imagen.

Crear una instancia de VM a partir de una imagen proporcionada por GDC

De forma predeterminada, todos los proyectos de GDC pueden crear VMs a partir de imágenes de SO proporcionadas por GDC.

gdcloud

Selecciona una imagen proporcionada por GDC para crear la instancia de VM:

gdcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --image=BOOT_DISK_IMAGE_NAME --image-project=vm-system \
    --boot-disk-size=BOOT_DISK_SIZE \
    --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE

Haz los cambios siguientes:

VariableDefinición
VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
NO_BOOT_DISK_AUTO_DELETE true o false, que indica el valor inverso de si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
MACHINE_TYPE El tipo de máquina predefinido de la nueva VM. Para seleccionar un tipo de máquina disponible, ejecuta este comando:
gdcloud compute machine-types list

API

  1. Selecciona una imagen proporcionada por el dispositivo aislado de GDC para crear la instancia de VM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
          namespace: vm-system
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineType: MACHINE_TYPE
      disks:
        - virtualMachineDiskRef:
            name: VM_BOOT_DISK_NAME
          boot: true
          autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    Haz los cambios siguientes:

    VariableDefinición
    MANAGEMENT_API_SERVER Ruta del servidor de la API Management kubeconfig.
    PROJECT El proyecto del dispositivo con air gap de GDC para crear la VM.
    VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
    VM_BOOT_DISK_NAME Nombre del nuevo disco de arranque de la VM.
    BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
    BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
    Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
    BOOT_DISK_AUTO_DELETE true o false, que indica si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
    MACHINE_TYPE El tipo de máquina predefinido de la nueva VM. Para seleccionar un tipo de máquina disponible, ejecuta este comando:
    gdcloud compute machine-types list
  2. Verifica que se haya creado la VM y espera a que muestre el estado Running. El estado Running no indica que el SO esté totalmente listo y accesible.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachine.virtualmachine.gdc.goog VM_NAME -n PROJECT
    

    Sustituye VM_NAME y PROJECT por el nombre y el proyecto de la VM. VM_NAME Solo puede contener caracteres alfanuméricos y guiones.

    Para añadir una secuencia de comandos de inicio a la creación de tu instancia de VM, sigue los pasos que se indican en la página Usar una secuencia de comandos de inicio con una instancia de VM. Asegúrate de apagar la máquina virtual antes de añadir la secuencia de comandos.

Crear una instancia de VM a partir de una imagen personalizada

Una imagen personalizada pertenece exclusivamente a tu proyecto. Para crear una VM con una imagen personalizada, primero debes crear una imagen personalizada en el mismo proyecto si aún no tienes una.

gdcloud

  1. Lista todas las imágenes personalizadas:

    gdcloud compute images list --no-standard-images=true
    
  2. Crea la instancia de VM:

    gdcloud compute instances create VM_NAME \
        --machine-type=MACHINE_TYPE \
        --image=BOOT_DISK_IMAGE_NAME \
        --boot-disk-size=BOOT_DISK_SIZE \
        --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE
    

    Haz los cambios siguientes:

    VariableDefinición
    VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
    BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
    BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
    Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
    NO_BOOT_DISK_AUTO_DELETE true o false, que indica el valor inverso de si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
    MACHINE_TYPE El tipo de máquina predefinido de la nueva VM. Para seleccionar un tipo de máquina disponible, ejecuta este comando:
    gdcloud compute machine-types list

API

  1. Lista de todas las imágenes personalizadas:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace PROJECT
    

    Obtén el minimumDiskSize de una imagen concreta para crear una instancia de VM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimage.virtualmachine.gdc.goog --namespace PROJECT \
        BOOT_DISK_IMAGE_NAME -ojsonpath='{.spec.minimumDiskSize}{"\n"}'
    

    Haz los cambios siguientes:

    VariableDefinición
    MANAGEMENT_API_SERVER Ruta del servidor de la API Management kubeconfig.
    BOOT_DISK_IMAGE_NAME El nombre de la imagen elegida en el comando para listar todas las imágenes personalizadas.
    PROJECT El proyecto de la imagen.
  2. Crea la instancia de VM:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        virtualMachineType: MACHINE_TYPE
      disks:
        - virtualMachineDiskRef:
            name: VM_BOOT_DISK_NAME
          boot: true
          autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    Sustituye las variables con las siguientes definiciones:

    VariableDefinición
    MANAGEMENT_API_SERVER El archivo kubeconfig del servidor de la API Management.
    PROJECT El proyecto del dispositivo con air gap de GDC para crear la VM.
    VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
    VM_BOOT_DISK_NAME Nombre del nuevo disco de arranque de la VM.
    BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
    BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
    Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
    BOOT_DISK_AUTO_DELETE true o false, que indica si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
    MACHINE_TYPE El tipo de máquina predefinido de la nueva VM. Para seleccionar un tipo de máquina disponible, ejecuta este comando:
    kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
  3. Verifica que se haya creado la VM y espera a que muestre el estado Running. El estado Running no indica que el SO esté totalmente listo y accesible.

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachine.virtualmachine.gdc.goog VM_NAME -n PROJECT
    

    Sustituye VM_NAME y PROJECT por el nombre y el proyecto de la VM. VM_NAME Solo puede contener caracteres alfanuméricos y guiones.

Crear una instancia de VM con discos adicionales que no sean de arranque

Puedes crear discos que no sean de arranque al crear una VM. Cada disco adicional puede especificar una fuente de imagen o no. Este último caso se utiliza para crear un disco en blanco.

gdcloud

  1. Para crear un disco a partir de una imagen, sigue estos pasos:

    gdcloud compute disks create NON_BOOT_DISK_FROM_IMAGE \
        --size=NON_BOOT_DISK_SIZE \
        --image=NON_BOOT_DISK_IMAGE_NAME \
        --image-project=NON_BOOT_DISK_IMAGE_NAMESPACE
    
  2. Crear un disco a partir de una imagen en blanco:

    gdcloud compute disks create NON_BOOT_BLANK_DISK \
        --size=NON_BOOT_BLANK_DISK_SIZE \
    
  3. Crea una instancia con los discos del paso anterior:

    gdcloud compute instances create VM_NAME \
        --machine-type=MACHINE_TYPE \
        --image=BOOT_DISK_IMAGE_NAME --image-project=vm-system \
        --boot-disk-size=BOOT_DISK_SIZE \
        --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE \
        --disk=name=NON_BOOT_DISK_FROM_IMAGE \
        --disk=name=NON_BOOT_BLANK_DISK
    

    Haz los cambios siguientes:

    VariableDefinición
    VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
    BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
    BOOT_DISK_IMAGE_NAMESPACE El espacio de nombres de la imagen que se va a usar para el disco de arranque de la nueva VM. Usa vm-system para una imagen proporcionada por GDC o deja el campo en blanco para usar una imagen personalizada.
    BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
    Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
    NO_BOOT_DISK_AUTO_DELETE true o false, que indica el valor inverso de si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
    MACHINE_TYPE El tipo de máquina predefinido de la nueva VM. Para seleccionar un tipo de máquina disponible, ejecuta este comando:
    gdcloud compute machine-types list

    En el caso de los discos adicionales, sustituye lo siguiente:

    • NON_BOOT_DISK_FROM_IMAGE y NON_BOOT_BLANK_DISK: el nombre del disco adicional.
    • NON_BOOT_DISK_SIZE y NON_BOOT_BLANK_DISK_SIZE: el tamaño de los discos adicionales (por ejemplo, 20G).
    • NON_BOOT_DISK_IMAGE_NAME: el nombre de la imagen que se va a usar como disco no de arranque.
    • NON_BOOT_DISK_IMAGE_NAMESPACE: el espacio de nombres de la imagen que se va a usar como disco que no es de arranque. Usa vm-system para una imagen proporcionada por GDC o deja el campo en blanco para usar una imagen personalizada.

API

  1. Crea una VM con un disco que no sea de arranque:
kubectl --kubeconfig MANAGEMENT_API_SERVER \
    apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: NON_BOOT_DISK_FROM_IMAGE
spec:
  source:
    image:
      name: NON_BOOT_DISK_IMAGE_NAME
      namespace: NON_BOOT_DISK_IMAGE_NAMESPACE
  size: NON_BOOT_DISK_SIZE
---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: NON_BOOT_BLANK_DISK
spec:
  size: NON_BOOT_BLANK_DISK_SIZE
---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineDisk
metadata:
  name: VM_BOOT_DISK_NAME
spec:
  source:
    image:
      name: BOOT_DISK_IMAGE_NAME
      namespace: BOOT_DISK_IMAGE_NAMESPACE
  size: BOOT_DISK_SIZE
---
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
  name: VM_NAME
spec:
  compute:
    virtualMachineType: MACHINE_TYPE
  disks:
    - virtualMachineDiskRef:
        name: VM_BOOT_DISK_NAME
      boot: true
      autoDelete: BOOT_DISK_AUTO_DELETE
    - virtualMachineDiskRef:
        name: NON_BOOT_DISK_FROM_IMAGE
    - virtualMachineDiskRef:
        name: NON_BOOT_BLANK_DISK
EOF

Haz los cambios siguientes:

VariableDefinición
MANAGEMENT_API_SERVER Ruta del servidor de la API Management kubeconfig.
PROJECT El proyecto de GDC en el que quieres crear la VM.
VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
VM_BOOT_DISK_NAME Nombre del nuevo disco de arranque de la VM.
BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
BOOT_DISK_IMAGE_NAMESPACE El espacio de nombres de la imagen que se va a usar para el disco de arranque de la nueva VM. Usa el espacio de nombres vm-system para una imagen proporcionada por GDC o déjalo en blanco para una imagen personalizada.
BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
BOOT_DISK_AUTO_DELETE true o false, que indica si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
MACHINE_TYPE El tipo de máquina predefinido de la nueva VM. Para seleccionar un tipo de máquina disponible, ejecuta este comando:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system

En el caso de los discos adicionales, sustituye lo siguiente:

  • NON_BOOT_DISK_FROM_IMAGE y NON_BOOT_BLANK_DISK: el nombre del disco adicional.
  • NON_BOOT_DISK_SIZE y NON_BOOT_BLANK_DISK_SIZE: el tamaño de los discos adicionales (por ejemplo, 20G).
  • NON_BOOT_DISK_IMAGE_NAME: el nombre de la imagen que quieras usar como disco que no sea de arranque.
  • NON_BOOT_DISK_IMAGE_NAMESPACE: el espacio de nombres de la imagen que quieras usar como disco no de arranque. Usa el espacio de nombres vm-system para una imagen proporcionada por GDC o déjalo en blanco para una imagen personalizada.

Formatea y monta los discos antes de usarlos.

Crear una VM a partir de una copia de seguridad o una instantánea

Puedes crear una máquina virtual a partir de una captura de las siguientes formas:

  • Restaurar un disco de arranque de una VM: si has creado una copia de seguridad de un disco de arranque de una VM con una captura, utiliza esa captura para crear una VM. Consulta Restaurar una instantánea.
  • Restaurar un disco que no es de arranque: si has creado una copia de seguridad de un disco que no es de arranque con una captura, también puedes restaurar la captura en un disco que no es de arranque nuevo al crear una VM siguiendo las mismas instrucciones.

Para crear más de una VM con el mismo disco de arranque, sigue estos pasos:

  1. Crea una imagen personalizada.
  2. Crea VMs a partir de esa imagen sin usar una instantánea.

Crear una VM sin usar un tipo de máquina

El dispositivo aislado de GDC ofrece tipos de máquinas predefinidos que puedes usar al crear una instancia de VM. Un tipo de máquina predefinido tiene un número preestablecido de vCPUs y una cantidad de memoria.

Si las VMs predefinidas no se ajustan a tus necesidades, crea una instancia de VM con una configuración de hardware virtualizado personalizada.

Las VMs personalizadas son ideales en los siguientes casos:

  • Cargas de trabajo que no se pueden aplicar a los tipos de VM predefinidos.
  • Cargas de trabajo que requieren más potencia de procesamiento o más memoria, pero que no necesitan todas las mejoras que ofrece el tipo de máquina del siguiente nivel.

gdcloud

  1. Crea una VM con un tipo de máquina que definas:

    gdcloud compute instances create VM_NAME \
        --custom-cpu=NUM_VCPU \
        --custom-memory=MEMORY
        --image=BOOT_DISK_IMAGE_NAME --image-project=vm-system \
        --boot-disk-size=BOOT_DISK_SIZE \
        --no-boot-disk-auto-delete=NO_BOOT_DISK_AUTO_DELETE
    

    Haz los cambios siguientes:

    VariableDefinición
    VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
    BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
    BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
    Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
    NO_BOOT_DISK_AUTO_DELETE true o false, que indica el valor inverso de si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
    NUM_VCPU Número de vCPUs. El número máximo de vCPUs admitidas es 192.
    MEMORY El tamaño de la memoria, como 8G. El tamaño máximo de memoria es de un terabyte (TB).

API

  1. Crea una VM con un tipo de máquina que definas:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: VM_BOOT_DISK_NAME
    spec:
      source:
        image:
          name: BOOT_DISK_IMAGE_NAME
          namespace: vm-system
      size: BOOT_DISK_SIZE
    ---
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
      name: VM_NAME
    spec:
      compute:
        vcpus: NUM_VCPU
        memory: MEMORY
      disks:
        - virtualMachineDiskRef:
            name: VM_BOOT_DISK_NAME
          boot: true
          autoDelete: BOOT_DISK_AUTO_DELETE
    EOF
    

    Haz los cambios siguientes:

    VariableDefinición
    MANAGEMENT_API_SERVER Ruta del servidor de la API Management kubeconfig.
    PROJECT El proyecto del dispositivo con air gap de GDC para crear la VM.
    VM_NAME Nombre de la nueva VM. El nombre solo puede contener caracteres alfanuméricos y guiones, y no puede tener más de 53 caracteres.
    VM_BOOT_DISK_NAME Nombre del nuevo disco de arranque de la VM.
    BOOT_DISK_IMAGE_NAME Nombre de la imagen que se va a usar para el disco de arranque de la nueva VM.
    BOOT_DISK_SIZE Tamaño del disco de arranque, como 20G.
    Este valor siempre debe ser mayor o igual que el minimumDiskSize de la imagen del disco de arranque.
    BOOT_DISK_AUTO_DELETE true o false, que indica si el disco de arranque se elimina automáticamente cuando se elimina la instancia de máquina virtual.
    NUM_VCPU Número de vCPUs. El número máximo de vCPUs admitidas es 192.
    MEMORY El tamaño de la memoria, como 8G. El tamaño máximo de la memoria es de un TB.