Crea y administra discos virtuales en clústeres de Anthos alojados en equipos físicos

Este documento está dirigido a los propietarios de aplicaciones que ejecutan clústeres de Anthos en equipos físicos. En este documento, se muestra cómo crear y administrar recursos de discos para máquinas virtuales (VM) que usan el entorno de ejecución de VM de Anthos.

Antes de comenzar

Para completar este documento, necesitas acceso a los siguientes recursos:

Crea una VM con un disco conectado

Cuando creas una VM, puedes conectar un disco de arranque o de datos existente, crear un disco a partir de una imagen (incluido el disco de arranque) o crear un disco en blanco.

Disco en blanco

En esta situación, debes crear un disco en blanco y conectarlo a la VM. Esta situación te permite crear un disco de datos para almacenar datos de la aplicación.

  1. Crea un manifiesto que defina VirtualMachineDisk y VirtualMachine, como my-vm.yaml, en el editor que elijas:

    nano my-vm.yaml
    
  2. Copia y pega la siguiente definición de 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
    

    En este ejemplo, se crea un disco 10Gi en blanco (10 gibibyte) llamado DISK_NAME. En la sección spec.disks de la VM, también debes adjuntar un disco de arranque, como a partir de una imagen tal como se muestra en la siguiente sección.

  3. Guarda y cierra el archivo de manifiesto en tu editor.

  4. Crea la VM y el disco con kubectl:

    kubectl apply -f my-vm.yaml
    

Desde la imagen

En esta situación, crearás un disco a partir de una imagen y lo conectará a la VM. Esta situación te permite crear un disco de arranque, por ejemplo, a partir de una imagen. También puedes crear y adjuntar discos de datos a partir de una imagen.

  1. Crea un manifiesto que defina VirtualMachineDisk y VirtualMachine, como my-vm.yaml, en el editor que elijas:

    nano my-vm.yaml
    
  2. Copia y pega la siguiente definición de 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
    

    En este ejemplo, se crea un disco 20Gi (20 gibibytes) llamado VM_NAME-boot-dv mediante una imagen pública de Ubuntu. En la sección spec.disks de la VM, el disco se establece en boot: true.

  3. Guarda y cierra el manifiesto en tu editor.

  4. Crea la VM y el disco con kubectl:

    kubectl apply -f my-vm.yaml
    

Disco existente

En esta situación, debes crear un disco en blanco y conectarlo a la VM. Esta situación te permite crear un disco de datos para almacenar datos de la aplicación.

  1. Crea un manifiesto VirtualMachine, como my-vm.yaml, en el editor que elijas:

    nano my-vm.yaml
    
  2. Copia y pega la siguiente definición de 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
    

    En este ejemplo, se conecta un disco existente llamado EXISTING_DISK_NAME.

    En la sección spec.disks de la VM, también debes adjuntar un disco de arranque, como a partir de una imagen tal como se muestra en la sección anterior.

  3. Guarda y cierra el manifiesto de la VM en el editor.

  4. Crea la VM mediante kubectl:

    kubectl apply -f my-vm.yaml
    

Crea y conecta discos a la VM existente

Si tienes una VM existente, puedes crear y adjuntar discos para respaldar los ciclos de vida de las aplicaciones. La VM debe estar detenida antes de conectar un disco.

Disco en blanco

En esta situación, debes crear un disco en blanco y conectarlo a la VM. Esta situación te permite crear un disco de datos para almacenar datos de la aplicación.

  1. Usa kubectl para detener la VM, si es necesario:

    kubectl virt stop vm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas detener.

  2. Edita el recurso de VM existente, como my-vm:

    kubectl edit gvm VM_NAME
    
  3. Actualiza el manifiesto YAML VirtualMachine para agregar una sección VirtualMachineDisk en la parte superior y, luego, conecta el disco al final de la sección spec.disks de la VM:

    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
    

    En este ejemplo, se crea un disco 10Gi en blanco (10 gibibyte) llamado DISK_NAME.

  4. Guarda y cierra el manifiesto de VM actualizado en el editor.

  5. Usa kubectl para iniciar la VM:

    kubectl virt start vm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas iniciar.

Desde la imagen

En esta situación, debes crear un disco a partir de una imagen de origen y conectarlo a la VM.

  1. Usa kubectl para detener la VM, si es necesario:

    kubectl virt stop vm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas detener.

  2. Edita el recurso de VM existente, como my-vm:

    kubectl edit gvm VM_NAME
    
  3. Actualiza el manifiesto VirtualMachine para agregar una sección VirtualMachineDisk en la parte superior y, luego, conecta el disco al final de la sección spec.disks de la 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
    

    En este ejemplo, se crea un disco 10Gi (10 gibibyte) llamado DISK_NAME desde la fuente HTTP http://example.com/my-disk-img.qcow2.

  4. Guarda y cierra el manifiesto de VM actualizado en el editor.

  5. Usa kubectl para iniciar la VM:

    kubectl virt start vm VM_NAME
    

    Reemplaza VM_NAME por el nombre de la VM que deseas iniciar.

Crea un disco

En esta situación, debes crear los recursos de discos por separado de los recursos de la VM. Esta situación te permite crear discos con anticipación y, luego, conectarte a las VM según sea necesario.

Disco en blanco

Para crear un disco en blanco, completa los siguientes pasos.

  1. Crea un manifiesto VirtualMachineDisk, como my-disk.yaml, en el editor que elijas:

    nano my-disk.yaml
    
  2. Copia y pega la siguiente definición de YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
    

    En este ejemplo, se crea un disco 10Gi en blanco (10 gibibyte) llamado DISK_NAME.

  3. Guarda y cierra el manifiesto del disco en el editor.

  4. Crea el disco con kubectl:

    kubectl apply -f my-disk.yaml
    

Desde la imagen

Para crear un disco a partir de una imagen, completa los siguientes pasos.

  1. Crea un manifiesto VirtualMachineDisk, como my-disk.yaml, en el editor que elijas:

    nano my-disk.yaml
    
  2. Copia y pega la siguiente definición de 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
    

    En este ejemplo, se crea un disco 20Gi (20 gibibytes) llamado DISK_NAME con una imagen pública de Ubuntu.

  3. Guarda y cierra el manifiesto del disco en el editor.

  4. Crea el disco con kubectl:

    kubectl apply -f my-disk.yaml
    

¿Qué sigue?