Como criar e gerenciar discos virtuais em clusters do Anthos em bare metal

Este documento é destinado a proprietários de aplicativos que executam clusters do Anthos em bare metal. Neste documento, você verá como criar e gerenciar recursos de disco de máquinas virtuais (VMs) que usam o ambiente de execução de VMs do Anthos.

Antes de começar

Para concluir este documento, você precisa de acesso aos seguintes recursos:

Criar uma VM com um disco anexado

Ao criar uma VM, é possível anexar um disco de inicialização ou de dados, criar um disco com base em uma imagem (inclusive para o disco de inicialização) ou criar um disco em branco.

Disco em branco

Nesse cenário, você cria um disco em branco e o anexa à VM. Esse cenário permite criar um disco para armazenar dados do aplicativo.

  1. Crie um manifesto que defina um VirtualMachineDisk e uma VirtualMachine, como my-vm.yaml, no editor que você escolher:

    nano my-vm.yaml
    
  2. Copie e cole a seguinte definição 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
    

    Este exemplo cria um disco 10Gi em branco (10 gibibyte) chamado DISK_NAME. Na seção spec.disks da VM, você também precisa anexar um disco de inicialização, como um de uma imagem conforme mostrado na próxima seção.

  3. Salve e feche o arquivo de manifesto no editor.

  4. Crie a VM e o disco usando kubectl:

    kubectl apply -f my-vm.yaml
    

Da imagem

Neste cenário, você cria um disco usando uma imagem e o anexa à VM. Esse cenário permite criar um disco de inicialização, por exemplo, com base em uma imagem. Também é possível criar e anexar discos de dados de uma imagem.

  1. Crie um manifesto que defina um VirtualMachineDisk e uma VirtualMachine, como my-vm.yaml, no editor que você escolher:

    nano my-vm.yaml
    
  2. Copie e cole a seguinte definição 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
    

    Neste exemplo, criamos um disco 20Gi (20 gibibyte) chamado VM_NAME-boot-dv, usando uma imagem pública do Ubuntu. Na seção spec.disks da VM, o disco está definido como boot: true.

  3. Salve e feche o manifesto no editor.

  4. Crie a VM e o disco usando kubectl:

    kubectl apply -f my-vm.yaml
    

Disco atual

Nesse cenário, você cria um disco em branco e o anexa à VM. Esse cenário permite criar um disco para armazenar dados do aplicativo.

  1. Crie um manifesto VirtualMachine, como my-vm.yaml, no editor de sua escolha:

    nano my-vm.yaml
    
  2. Copie e cole a seguinte definição 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
    

    Neste exemplo, anexamos um disco chamado EXISTING_DISK_NAME.

    Na seção spec.disks da VM, você também precisa anexar um disco de inicialização como de uma imagem, como mostrado na seção anterior.

  3. Salve e feche o manifesto da VM no editor.

  4. Crie a VM usando kubectl:

    kubectl apply -f my-vm.yaml
    

Criar e anexar discos a uma VM

Se você já tiver uma VM, poderá criar e anexar discos para oferecer suporte aos ciclos de vida dos seus aplicativos. A VM precisa estar parada para poder ser anexada ao disco.

Disco em branco

Nesse cenário, você cria um disco em branco e o anexa à VM. Esse cenário permite criar um disco para armazenar dados do aplicativo.

  1. Use kubectl para interromper a VM, se necessário:

    kubectl virt stop vm VM_NAME
    

    Substitua VM_NAME pelo nome da VM que você quer interromper.

  2. Edite seu recurso de VM atual, como my-vm:

    kubectl edit gvm VM_NAME
    
  3. Atualize o manifesto YAML VirtualMachine para adicionar uma seção VirtualMachineDisk na parte superior e, em seguida, anexe o disco ao final da seção spec.disks da 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
    

    Este exemplo cria um disco 10Gi em branco (10 gibibyte) chamado DISK_NAME.

  4. Salve e feche o manifesto da VM atualizado no editor.

  5. Use kubectl para iniciar a VM:

    kubectl virt start vm VM_NAME
    

    Substitua VM_NAME pelo nome da VM que você quer iniciar.

Da imagem

Nesse cenário, você cria um disco com base em uma imagem de origem e o anexa à VM.

  1. Use kubectl para interromper a VM, se necessário:

    kubectl virt stop vm VM_NAME
    

    Substitua VM_NAME pelo nome da VM que você quer interromper.

  2. Edite seu recurso de VM atual, como my-vm:

    kubectl edit gvm VM_NAME
    
  3. Atualize o manifesto VirtualMachine para adicionar uma seção VirtualMachineDisk na parte superior e, em seguida, anexe o disco ao final da seção spec.disks da 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
    

    Neste exemplo, criamos um disco 10Gi (10 gibibyte) chamado DISK_NAME a partir da origem HTTP http://example.com/my-disk-img.qcow2.

  4. Salve e feche o manifesto da VM atualizado no editor.

  5. Use kubectl para iniciar a VM:

    kubectl virt start vm VM_NAME
    

    Substitua VM_NAME pelo nome da VM que você quer iniciar.

Criar um disco

Nesse cenário, você cria os recursos de disco separadamente dos recursos de VM. Este cenário permite que você crie discos com antecedência e anexá-los às VMs conforme necessário.

Disco em branco

Para criar um disco em branco, siga as etapas abaixo.

  1. Crie um manifesto VirtualMachineDisk, como my-disk.yaml, no editor de sua escolha:

    nano my-disk.yaml
    
  2. Copie e cole a seguinte definição de YAML:

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

    Este exemplo cria um disco 10Gi em branco (10 gibibyte) chamado DISK_NAME.

  3. Salve e feche o manifesto do disco no editor.

  4. Crie o disco usando kubectl:

    kubectl apply -f my-disk.yaml
    

Da imagem

Para criar um disco com base em uma imagem, siga as etapas abaixo.

  1. Crie um manifesto VirtualMachineDisk, como my-disk.yaml, no editor de sua escolha:

    nano my-disk.yaml
    
  2. Copie e cole a seguinte definição 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
    

    Neste exemplo, criamos um disco 20Gi (20 gibibyte) chamado DISK_NAME, usando uma imagem pública do Ubuntu.

  3. Salve e feche o manifesto do disco no editor.

  4. Crie o disco usando kubectl:

    kubectl apply -f my-disk.yaml
    

A seguir