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:
Localize o nome do servidor da API Management ou pergunte ao administrador da plataforma (PA) qual é o nome do servidor.
Inicie sessão e gere o ficheiro kubeconfig para o servidor da API Management, se não tiver um.
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:
- 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.
- Impeça as suas apps de escreverem no disco persistente.
- 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
Selecione um projeto.
No menu de navegação, clique em Máquinas virtuais > Imagens.
Clique em Criar imagem.
Introduza um nome exclusivo para a imagem. O nome não pode ter mais de 35 carateres.
Introduza uma versão para adicionar ao nome da imagem.
No campo Disco de origem, selecione um disco.
No campo Tamanho mínimo do disco, introduza um tamanho do disco.
Introduza uma descrição da imagem.
Clique em Criar.
A imagem aparece na lista de imagens.
API
Apresentar todos os objetos
VirtualMachineDisk:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECTSelecione um objeto
VirtualMachineDiskpara usar como disco de origem para a nova imagem.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":"...."}]- Se a saída devolver um valor para
"name", o disco está associado a uma VM indicada pelo camponame. Neste exemplo de resultado, évm1. Continue para verificar o estado de execução da MV. - Se o resultado estiver vazio, avance para obter o
sizedoVirtualMachineDisk.
- Verifique
o estado de execução da VM. Se o estado não for
Stopped, pare a VM e avance para a criação doVirtualMachineImage.
- Se a saída devolver um valor para
Obtenha o
sizedeVirtualMachineDiskpara criar a imagem:kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachinedisks.virtualmachine.gdc.goog --namespace PROJECT \ DISK_NAME -o jsonpath='{.spec.size}'Crie um objeto
VirtualMachineImageImportno 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 EOFVerifique 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 }Verifique se a imagem foi criada:
kubectl --kubeconfig MANAGEMENT_API_SERVER \ get virtualmachineimages.virtualmachine.gdc.goog --namespace PROJECT \ CREATED_IMAGE_NAMESubstitua as variáveis com as seguintes definições.
Variável Definição MANAGEMENT_API_SERVERO ficheiro kubeconfigdo servidor da API Management.PROJECTO projeto do GDC no qual criar a imagem. DISK_NAMEO nome do disco de origem, como vm1-boot-disk.VM_IMAGE_IMPORT_NAMEO nome da importação de imagens de VMs. O nome não pode ter mais de 35 carateres. IMAGE_NAMEO nome da imagem criada, como custom-image.OS_NAMEO nome do SO da imagem tem de ser um destes três: ubuntu-2004,windows-2019ourhel-8.MINIMUM_DISK_SIZEO 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_NAMEO 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.