Iniciar e interromper uma VM

Este documento explica como iniciar, interromper e reiniciar uma instância de máquina virtual (VM) no Google Distributed Cloud (GDC) com isolamento físico.

É possível interromper, iniciar e reiniciar as VMs para oferecer suporte ao ciclo de vida dos seus aplicativos. Por exemplo, talvez você queira mudar o número de unidades de processamento central (vCPUs) virtuais atribuídas ou a quantidade de memória alocada para uma VM. É necessário interromper a VM antes de editar a configuração. Depois de terminar, você precisa ciclar o estado de energia para aplicar as mudanças.

Este documento é destinado a desenvolvedores em grupos de administradores de plataforma ou operadores de aplicativos que precisam iniciar, interromper e reiniciar instâncias de VM em um ambiente do Distributed Cloud. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para usar comandos da interface de linha de comando (CLI) gdcloud, faça o download, a instalação, e a configuração da gdcloud CLI. Todos os comandos do Distributed Cloud usam a CLI gdcloud ou kubectl e exigem um ambiente de sistema operacional (SO).

Receber o caminho do arquivo kubeconfig

Para executar comandos no servidor da API Management, verifique se você tem os seguintes recursos:

  1. Faça login e gere o arquivo kubeconfig para o servidor da API Management, se você não tiver um.

  2. Use o caminho para o arquivo kubeconfig do servidor da API Management para substituir MANAGEMENT_API_SERVER nestas instruções.

Se você quiser minimizar o tempo de inicialização da VM, siga as instruções em Minimizar o tempo de inicialização da VM antes de iniciar a VM.

Solicitar papéis do IAM

Entre em contato com o administrador do IAM do projeto para solicitar os seguintes papéis no projeto:

  • Administrador do projeto de máquina virtual (project-vm-admin): cria, modifica, lista e exclui VMs no namespace do projeto.

  • Leitor do projeto(project-viewer): visualiza todos os recursos nos namespaces do projeto.

Todos os papéis da VM precisam ser vinculados ao namespace do projeto em que a VM reside. Siga as etapas para verificar seu acesso.

Interromper uma VM

Quando você interrompe uma máquina virtual (VM), o hipervisor desaloca todos os recursos associados à instância. A VM está desligada.

Interrompa uma VM que está em estado de execução usando o console do GDC ou kubectl.

Console

  1. No menu de navegação, clique em Máquinas virtuais > Instâncias.

  2. Na lista de VMs, marque a caixa de seleção da VM em execução que você quer interromper.

  3. Clique em Interromper.

  4. Na caixa de diálogo de confirmação, clique em Interromper.

gdcloud

Para interromper uma VM:

gdcloud compute instances stop VM_NAME \
  --project PROJECT
  • Substitua VM_NAME pelo nome da VM.
  • Substitua PROJECT pelo nome do projeto do GDC em que a VM reside.

kubectl

  1. Execute este comando:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
       -n PROJECT \
       edit virtualmachines.virtualmachine.gdc.goog VM_NAME
    
  2. Procure o campo runningState no spec da VM e mude o valor do campo para Stopped. Se runningState não estiver no spec, adicione runningState ao spec e defina o valor como Stopped.

    spec:
       runningState: Stopped
    
  3. Verifique o status da VM:

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

    Use estas definições para as variáveis anteriores.

    VariávelDefinição
    MANAGEMENT_API_SERVER_KUBECONFIGO arquivo kubeconfig do servidor da API Management.
    VM_NAMEO nome da VM.
    PROJECTO nome do projeto da VM.

Iniciar uma VM

Inicie uma VM de um estado interrompido usando o console ou kubectl.

Console

  1. No menu de navegação, clique em Máquinas virtuais > Instâncias.

  2. Na lista de VMs, marque a caixa de seleção da VM interrompida que você quer iniciar.

  3. Clique em Iniciar.

  4. Na caixa de diálogo de confirmação, clique em Iniciar.

gdcloud

Para iniciar uma VM:

gdcloud compute instances start VM_NAME --project PROJECT
  • Substitua VM_NAME pelo nome da VM.
  • Substitua PROJECT pelo nome do projeto do GDC em que a VM reside.

kubectl

  1. Execute este comando:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n PROJECT \
      edit virtualmachines.virtualmachine.gdc.goog VM_NAME
    
  2. Procure o campo runningState no spec da VM e mude o valor do campo para Running.

    spec:
       runningState: Running
    
  3. Verifique o status da VM:

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

    Use estas definições para as variáveis no código de exemplo.

    VariávelDefinição
    MANAGEMENT_API_SERVER_KUBECONFIGO arquivo kubeconfig do servidor da API Management.
    MANAGEMENT_API_SERVER_NAMEO nome do servidor da API Management.
    VM_NAMEO nome da VM.
    PROJECTO nome do projeto da VM.

Reiniciar uma VM

Quando você reinicia uma VM, a máquina é redefinida para o estado inicial e o conteúdo da memória da máquina é limpo.

Reinicie uma VM que está em estado de execução usando o console ou kubectl.

Console

  1. No menu de navegação, clique em Máquinas virtuais > Instâncias.

  2. Na lista de VMs, marque a caixa de seleção da VM em execução que você quer reiniciar.

  3. Clique em Redefinir.

  4. Na caixa de diálogo de confirmação, clique em Redefinir.

gdcloud

Para redefinir uma VM:

gdcloud compute instances reset VM_NAME --project PROJECT
  • Substitua VM_NAME pelo nome da VM.
  • Substitua PROJECT pelo nome do projeto do GDC em que a VM reside.

kubectl

  1. Receba o certificado do cliente e os dados da chave, além do servidor da API Management. Use esses valores nas etapas a seguir:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      config view --raw -o \
      jsonpath='{.users[?(@.name =="MANAGEMENT_API_SERVER_NAME-admin")].user.client-certificate-data}' \
      | base64 -d > cert
    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      config view --raw -o \
      jsonpath='{.users[?(@.name == "MANAGEMENT_API_SERVER_NAME-admin")].user.client-key-data}' \
      | base64 -d > key
    export APISERVER=`kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
       config view --raw -o \
       jsonpath='{.clusters[?(@.name == "MANAGEMENT_API_SERVER_NAME")].cluster.server}'`
    
  2. Faça uma solicitação de API para reiniciar a VM usando o comando wget e especifique o certificado e a chave da etapa anterior:

    wget --method=PUT -O- \
      --no-check-certificate \
      --certificate cert \
      --private-key key \
      --content-on-error=on \
      $APISERVER/apis/virtualmachineoperations.gdc.goog/v1/namespaces/PROJECT/virtualmachines/VM_NAME/restart
    
  3. Verifique o status da VM:

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

    Use estas definições para as variáveis no código de exemplo.

    VariávelDefinição
    MANAGEMENT_API_SERVER_KUBECONFIGO arquivo kubeconfig do servidor da API Management.
    MANAGEMENT_API_SERVER_NAMEO nome do servidor da API Management.
    VM_NAMEO nome da VM.
    PROJECTO nome do projeto da VM.