Iniciar y detener una VM

En este documento se explica cómo iniciar, detener y reiniciar una instancia de máquina virtual (VM) en Google Distributed Cloud (GDC) air-gapped.

Puedes detener, iniciar y reiniciar VMs para que se adapten al ciclo de vida de tus aplicaciones. Por ejemplo, puede que quieras cambiar el número de unidades de procesamiento centralizadas virtuales (vCPUs) asignadas o la cantidad de memoria asignada a una VM. Debes detener la VM antes de editar la configuración. Cuando hayas terminado, debes cambiar el estado de alimentación para aplicar los cambios.

Este documento está dirigido a desarrolladores de grupos de administradores de plataformas u operadores de aplicaciones que necesiten iniciar, detener y reiniciar instancias de VM en un entorno de Distributed Cloud. Para obtener más información, consulta el artículo Audiencias de la documentación de GDC air-gapped.

Antes de empezar

Para usar los comandos de la interfaz de línea de comandos (CLI) gdcloud, asegúrate de haber descargado, instalado, y configurado la CLI gdcloud. Todos los comandos de Distributed Cloud usan la CLI gdcloud o kubectl y requieren un entorno de sistema operativo (SO).

Obtener la ruta del archivo kubeconfig

Para ejecutar comandos en el servidor de la API Management, asegúrate de tener los siguientes recursos:

  1. Inicia sesión y genera el archivo kubeconfig del servidor de la API de gestión si no tienes uno.

  2. Usa la ruta del archivo kubeconfig del servidor de la API de gestión para sustituir MANAGEMENT_API_SERVER en estas instrucciones.

Si quieres minimizar el tiempo de inicio de la VM, sigue las instrucciones que se indican en el artículo Minimizar el tiempo de inicio de la VM antes de iniciar la VM.

Solicitar roles de IAM

Ponte en contacto con el administrador de IAM del proyecto para solicitar los siguientes roles en tu proyecto:

  • Administrador de proyectos de máquinas virtuales (project-vm-admin): crea, modifica, enumera y elimina VMs en el espacio de nombres del proyecto.

  • Visualizador de proyectos(project-viewer): visualiza todos los recursos de los espacios de nombres del proyecto.

Todos los roles de VM deben enlazarse al espacio de nombres del proyecto en el que reside la VM. Sigue los pasos para verificar tu acceso.

Detener una VM

Cuando detienes una máquina virtual (VM), el hipervisor desasigna todos los recursos asociados a la instancia. La VM se apaga.

Para detener una VM que esté en estado de ejecución, usa la consola de GDC o kubectl.

Consola

  1. En el menú de navegación, haz clic en Máquinas virtuales > Instancias.

  2. En la lista de VMs, marca la casilla de la VM en ejecución que quieras detener.

  3. Haz clic en Detener.

  4. En el cuadro de diálogo de confirmación, haz clic en Detener.

gdcloud

Para detener una VM, sigue estos pasos:

gdcloud compute instances stop VM_NAME \
  --project PROJECT
  • Sustituye VM_NAME por el nombre de la VM.
  • Sustituye PROJECT por el nombre del proyecto de GDC en el que reside la VM.

kubectl

  1. Ejecuta el siguiente comando:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
       -n PROJECT \
       edit virtualmachines.virtualmachine.gdc.goog VM_NAME
    
  2. Busca el campo runningState en la spec de la VM y cambia el valor del campo a Stopped. Si runningState no está en la spec, añade runningState a la spec y asigna el valor Stopped.

    spec:
       runningState: Stopped
    
  3. Verifica el estado de la VM:

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

    Usa estas definiciones para las variables anteriores.

    VariableDefinición
    MANAGEMENT_API_SERVER_KUBECONFIGEl archivo kubeconfig del servidor de la API de gestión.
    VM_NAMEEl nombre de la VM.
    PROJECTEl nombre del proyecto de la VM.

Iniciar una VM

Para iniciar una VM que esté en estado detenido, usa la consola o kubectl.

Consola

  1. En el menú de navegación, haz clic en Máquinas virtuales > Instancias.

  2. En la lista de VMs, marca la casilla de la VM detenida que quieras iniciar.

  3. Haz clic en Iniciar.

  4. En el cuadro de diálogo de confirmación, haz clic en Iniciar.

gdcloud

Para iniciar una VM, sigue estos pasos:

gdcloud compute instances start VM_NAME --project PROJECT
  • Sustituye VM_NAME por el nombre de la VM.
  • Sustituye PROJECT por el nombre del proyecto de GDC en el que reside la VM.

kubectl

  1. Ejecuta el siguiente comando:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      -n PROJECT \
      edit virtualmachines.virtualmachine.gdc.goog VM_NAME
    
  2. Busca el campo runningState en la spec de la VM y cambia el valor del campo a Running.

    spec:
       runningState: Running
    
  3. Verifica el estado de la VM:

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

    Usa estas definiciones para las variables del código de ejemplo.

    VariableDefinición
    MANAGEMENT_API_SERVER_KUBECONFIGEl archivo kubeconfig del servidor de la API de gestión.
    MANAGEMENT_API_SERVER_NAMEEl nombre del servidor de la API de gestión.
    VM_NAMEEl nombre de la VM.
    PROJECTEl nombre del proyecto de la VM.

Reiniciar una VM

Cuando reinicias una VM, la máquina vuelve a su estado inicial y se borra el contenido de la memoria.

Para reiniciar una VM que esté en estado de ejecución, usa la consola o kubectl.

Consola

  1. En el menú de navegación, haz clic en Máquinas virtuales > Instancias.

  2. En la lista de VMs, marca la casilla de la VM en ejecución que quieras reiniciar.

  3. Haz clic en Reiniciar.

  4. En el cuadro de diálogo de confirmación, haz clic en Reiniciar.

gdcloud

Para reiniciar una VM, sigue estos pasos:

gdcloud compute instances reset VM_NAME --project PROJECT
  • Sustituye VM_NAME por el nombre de la VM.
  • Sustituye PROJECT por el nombre del proyecto de GDC en el que reside la VM.

kubectl

  1. Obtén los datos del certificado de cliente y la clave, así como el servidor de la API Management. Usa estos valores en los siguientes pasos:

    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. Haz una solicitud a la API para reiniciar la VM mediante el comando wget y especifica el certificado y la clave del paso 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. Verifica el estado de la VM:

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

    Usa estas definiciones para las variables del código de ejemplo.

    VariableDefinición
    MANAGEMENT_API_SERVER_KUBECONFIGEl archivo kubeconfig del servidor de la API de gestión.
    MANAGEMENT_API_SERVER_NAMEEl nombre del servidor de la API de gestión.
    VM_NAMEEl nombre de la VM.
    PROJECTEl nombre del proyecto de la VM.