Crie imagens personalizadas

Pode criar imagens personalizadas a partir de discos de origem existentes e usá-las para criar e iniciar máquinas virtuais (VMs). As imagens personalizadas são ideais para utilização quando criou e modificou um disco de arranque persistente para um determinado estado e precisa de guardar esse estado para criar VMs. A criação e a poupança de uma imagem personalizada para usar como uma nova imagem de VM na criação de VMs futuras evita a duplicação dos passos de configuração mais tarde.

Antes de começar

Para usar os comandos da interface de linhas de comando (CLI) gdcloud, certifique-se de que transferiu, instalou e configurou a CLI gdcloud. Todos os comandos para o dispositivo isolado do GDC usam a CLI gdcloud ou kubectl e requerem um ambiente Linux.

Obtenha o caminho do ficheiro kubeconfig

Para executar comandos no servidor da API Management, certifique-se de que tem os seguintes recursos:

  1. Localize o nome do servidor da API Management ou pergunte ao administrador da plataforma (PA) qual é o nome do servidor.

  2. Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.

  3. Use o caminho para substituir MANAGEMENT_API_SERVER{"</var>"}} nestas instruções.

Peça autorizações e acesso

Para criar uma imagem personalizada, tem de ter acesso à imagem da VM ao nível do projeto. Siga os passos indicados para que o administrador da IAM do projeto lhe atribua a função de administrador de imagens de máquinas virtuais do projeto (project-vm-image-admin) no espaço de nomes do projeto onde reside a VM. Se usar a consola do GDC ou a CLI gdcloud para criar uma imagem, também precisa da função de administrador de máquinas virtuais do projeto (project-vm-admin) e da função de visualizador do projeto (project-viewer).

Crie uma imagem personalizada

Esta secção descreve como criar uma imagem personalizada numa VM do Linux.

Prepare a VM para uma imagem

Pode criar uma imagem a partir de um disco enquanto este está associado a uma VM em execução. No entanto, a imagem é mais fiável se colocar a VM num estado para a captura da imagem.

Minimize a gravação de dados no disco persistente

Use um dos seguintes processos para reduzir as gravações no disco. Pare a VM ou minimize as escritas no disco:

  • Pare a VM para que possa ser encerrada e parar de escrever dados no disco persistente.

Se não conseguir parar a VM antes de criar a imagem, minimize as gravações no disco e sincronize o sistema de ficheiros. Para minimizar as gravações no disco persistente, siga estes passos:

  1. Pause as apps ou os processos do SO que escrevem dados nesse disco persistente. Execute uma descarga da app para o disco, se necessário. Outras apps podem ter processos semelhantes.
  2. Impeça as suas apps de escreverem no disco persistente.
  3. Corrida sudo sync.

Crie a imagem

Siga estes passos para criar imagens de disco a partir de um disco persistente, mesmo quando esse disco está anexado a uma VM:

Consola

  1. Selecione um projeto.

  2. No menu de navegação, clique em Máquinas virtuais > Imagens.

  3. Clique em Criar imagem.

  4. Introduza um nome exclusivo para a imagem. O nome não pode ter mais de 35 carateres.

  5. Introduza uma versão para adicionar ao nome da imagem.

  6. No campo Disco de origem, selecione um disco.

  7. No campo Tamanho mínimo do disco, introduza um tamanho do disco.

  8. Introduza uma descrição da imagem.

  9. Clique em Criar.

A imagem aparece na lista de imagens.

API

  1. Apresentar todos os objetos VirtualMachineDisk:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
       get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT
    
  2. Selecione um objeto VirtualMachineDisk para usar como disco de origem para a nova imagem.

  3. Verifique se o disco da VM está associado a uma VM:

      kubectl --kubeconfig MANAGEMENT_API_SERVER \
          get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \
          DISK_NAME -o jsonpath='{.status.virtualMachineAttachments}'
    

    Exemplo de saída que mostra que um disco está associado a uma VM:

      [{"autoDelete":true,"nameRef":{"name":"vm1"},"uid":"...."}]
    
    1. Verifique o estado de execução da VM. Se o estado não for Stopped, pare a VM e avance para a criação do VirtualMachineImage.
  4. Obtenha o size de VirtualMachineDisk para criar a imagem:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \
        DISK_NAME -o jsonpath='{.spec.size}'
    
  5. Crie um objeto VirtualMachineImageImport no servidor da 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
    EOF
    
  6. Verifique se a importação de imagens terminou e se o estado é Ready:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get virtualmachineimageimports.virtualmachine.gdc.goog --namespace PROJECT \
        VM_IMAGE_IMPORT_NAME -o jsonpath='{.status}'
    

    O estado deve ser semelhante a este quando a importação estiver concluída:

    {
      "conditions": [
        {
          "lastTransitionTime": "",
          "message": "",
          "observedGeneration": 1,
          "reason": "ImportJobComplete",
          "status": "True",
          "type": "Ready"
        }
      ],
      "imageName": IMAGE_NAME
    }
    
  7. Verifique se a imagem foi criada:

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

    Substitua as variáveis com as seguintes definições.

    VariávelDefinição
    MANAGEMENT_API_SERVER O ficheiro kubeconfig do servidor da API Management.
    PROJECT O projeto do GDC no qual criar a imagem.
    DISK_NAME O nome do disco de origem, como vm1-boot-disk.
    VM_IMAGE_IMPORT_NAME O nome da importação de imagens de VMs. O nome não pode ter mais de 35 carateres.
    IMAGE_NAME O nome da imagem criada, como custom-image.
    OS_NAME O nome do SO da imagem tem de ser um destes três:
    ubuntu-2004, windows-2019 ou rhel-8.
    MINIMUM_DISK_SIZE O tamanho mínimo do disco na importação de imagens de VM, como 20G:
    minimumDiskSize, tem de ser sempre superior ou igual ao tamanho do disco de arranque de origem.
    CREATED_IMAGE_NAME O nome da imagem criada. O nome da imagem criada tem de ser exclusivo. Não pode ser um nome de imagem que já exista no projeto.