Gestionar extensiones de VM mediante políticas de extensiones

VM Extension Manager usa políticas de extensiones para gestionar tus extensiones de VM a gran escala. Para obtener más información, consulta Acerca de VM Extension Manager. En este documento se describe cómo ver, actualizar y eliminar políticas de extensiones de VM.

Funciones y permisos de IAM

Para obtener los permisos que necesitas para ver, modificar y eliminar políticas de extensiones de VM, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para ver, modificar y eliminar políticas de extensiones de VM. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Se necesitan los siguientes permisos para ver, modificar y eliminar políticas de extensiones de VM:

  • Para ver las políticas de extensiones, sigue estos pasos: compute.vmExtensionPolicies.list
  • Para ver los detalles de una política de extensiones, sigue estos pasos: compute.vmExtensionPolicies.get
  • Para modificar las políticas de extensiones, sigue estos pasos: compute.vmExtensionPolicies.update
  • Para eliminar políticas de extensiones, sigue estos pasos: compute.vmExtensionPolicies.delete

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en Compute Engine, consulta el artículo sobre roles y permisos de Compute Engine.

Ver políticas de extensiones

Puedes ver una lista de las políticas de extensiones de VM de tu proyecto o los detalles de una política específica mediante la Google Cloud consola o la CLI de Google Cloud.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de extensiones de VM.

    Ir a las políticas de extensiones de MV

    En esta página se muestran todas las políticas de extensiones de VM de tu proyecto.
  2. Para ver los detalles de una política de extensiones específica, haz clic en su nombre.

gcloud

Para ver todas las políticas de extensiones de un proyecto, usa el comando gcloud beta compute zone-vm-extension-policies list:

gcloud beta compute zone-vm-extension-policies list \
  --project=PROJECT_ID \
  --zone=ZONE \
  --page-size=PAGE_SIZE

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • ZONE: el nombre de la zona en la que quieres enumerar las políticas de extensiones de VM.
  • PAGE_SIZE: número máximo de resultados que se devolverán por página.

Para ver los detalles de una política de extensiones específica, usa el comando gcloud beta compute zone-vm-extension-policies describe:

gcloud beta compute zone-vm-extension-policies describe POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de la política de extensión de VM que quieras describir.
  • PROJECT_ID: tu ID de proyecto Google Cloud .
  • ZONE: la Google Cloud zona en la que se encuentra la política de extensiones de VM.

Modificar extensiones actualizando una política de extensiones de VM

Cuando actualizas una política, VM Extension Manager implementa los cambios en todas las VMs aplicables, normalmente en un minuto. Si modificas las etiquetas de inclusión, es posible que las extensiones se instalen en las nuevas VMs o se desinstalen de las VMs que ya tengas en función de si coinciden con las etiquetas actualizadas.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de extensiones de VM.

    Ir a las políticas de extensiones de MV

  2. Selecciona la política que quieras actualizar.
  3. Haz clic en Editar.
  4. Modifica la Descripción, la Prioridad, las Extensiones o las Instancias de VM de destino.
  5. Haz clic en Guardar.

gcloud

Usa el comando gcloud beta compute zone-vm-extension-policies update para modificar una política de extensión de VM. Cuando actualizas una política con gcloud, la solicitud actúa como sustitución completa. Los campos opcionales que omitas volverán a sus valores predeterminados en lugar de conservar los valores de la política modificada.

Para actualizar una política de extensiones de VM, ejecuta el siguiente comando:

  gcloud beta compute zone-vm-extension-policies update POLICY_NAME \
      --zone=ZONE \
      --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
      --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
      --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
      --inclusion-labels=KEY_1=VALUE_1 \
      --priority=PRIORITY_NUMBER \
      --description="DESCRIPTION"

Haz los cambios siguientes:

  • POLICY_NAME: nombre de la política de extensión de VM que se va a actualizar.
  • ZONE: la zona Google Cloud en la que se aplica la política.
  • EXTENSION_NAME_1 y EXTENSION_NAME_2: los nombres de las extensiones que se van a actualizar. Debes especificar al menos una extensión.
  • VERSION_1: la versión de la primera extensión de VM.
  • VERSION_2: la versión de la segunda extensión de VM.
  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: lista de pares clave-valor separados por comas en la que la clave es el nombre de la extensión y el valor es la ruta al archivo de configuración de esa extensión. Esta ruta se encuentra en la VM en la que ejecutas el comando gcloud, no en la VM en la que instalas la extensión.

    También puede proporcionar la configuración como una cadena insertada. Para ello, utilice la marca --config en lugar de --config-from-file. Por ejemplo, EXTENSION_NAME_1="CONFIG_1". Puedes usar --config-from-file o --config, pero no ambos en el mismo comando.

  • KEY_1=VALUE_1: lista de pares clave-valor separados por comas que definen las etiquetas de inclusión de un selector. Las VMs deben tener todas las etiquetas especificadas en un selector para poder segmentarlas. Si especifica --inclusion-labels varias veces, la política se aplicará a las VMs que coincidan con cualquiera de los selectores proporcionados (operador lógico OR). Si omite esta marca, la política se aplicará a todas las VMs de la zona especificada.

  • PRIORITY_NUMBER: número de prioridad de la política de extensión de VM.

  • DESCRIPTION: una descripción de la política de extensiones de VM.

Desinstalar extensiones eliminando una política de extensión de VM

Cuando eliminas una política, VM Extension Manager desinstala las extensiones de las VMs gestionadas por esa política. Sin embargo, si se aplica otra política activa de menor prioridad a una VM y declara la misma extensión, la extensión permanecerá instalada en esa VM en función de la política de menor prioridad.

El administrador de extensiones de VM elimina las extensiones de todas las VMs accesibles en un minuto después de eliminar la política. Si no se puede acceder a una VM porque se ha eliminado el agente invitado o se ha eliminado la VM, el administrador de extensiones de VM omite la eliminación de la extensión. Si una VM de este tipo vuelve a estar disponible, VM Extension Manager elimina las extensiones en ese momento.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de extensiones de VM.

    Ir a las políticas de extensiones de MV

  2. Selecciona la política que quieras eliminar.
  3. Haz clic en Eliminar.
  4. En el cuadro de diálogo de confirmación, haz clic en Eliminar.

gcloud

Usa el comando gcloud beta compute zone-vm-extension-policies delete para eliminar una política de extensión de VM.

gcloud beta compute zone-vm-extension-policies delete POLICY_NAME \
  --project=PROJECT_ID \
  --zone=ZONE

Haz los cambios siguientes:

  • POLICY_NAME: el nombre de la política de extensión de VM que quieres eliminar.
  • PROJECT_ID: el ID de tu proyecto de Google Cloud .
  • ZONE: la Google Cloud zona en la que se encuentra la política.

Solucionar problemas de extensiones de máquinas virtuales

En esta sección se describe cómo solucionar problemas con las extensiones de VM.

Verificar que una extensión está instalada

Para verificar que una extensión está instalada, comprueba lo siguiente en la máquina virtual:

  • Conéctate a la VM y comprueba si hay procesos en ejecución.

    En la siguiente tabla se indican los nombres de los procesos de cada extensión:

    Nombre de la extensión Nombre del proceso de la extensión
    google-cloud-sap-extension google_cloud_sap_agent
    google-cloud-workload-extension google_cloud_workload_agent
    ops-agent ops-agent

    Linux

    ps aux | grep 'EXTENSION_PROCESS_NAME'
    Sustituye EXTENSION_PROCESS_NAME por el nombre del proceso de la extensión. Por ejemplo, para comprobar el proceso del agente de operaciones, ejecuta el siguiente comando:
    ps aux | grep 'ops-agent'

    Windows

    tasklist | findstr "EXTENSION_PROCESS_NAME"
    Sustituye EXTENSION_PROCESS_NAME por el nombre del proceso de la extensión. Por ejemplo, para comprobar el proceso del agente de Ops, ejecuta el siguiente comando:
    tasklist | findstr "ops-agent"

    La salida del comando ps en una máquina virtual Linux para el agente de operaciones puede mostrar una entrada similar a la siguiente:

    ....
    /var/lib/google-guest-agent/931374772276853249/plugins/ops-agent_baddabb3dac3
    ....
  • Habilita y revisa los registros del agente invitado. Los registros del agente invitado muestran cuándo se instala y se inicia una extensión.

    A continuación, se muestra un ejemplo del resultado que puede ver en los registros del agente invitado cuando se instala una extensión del Agente de operaciones:

    my-instance google_guest_agent [14972]: Installing plugin "ops-agent", revision "2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (client.go:181) Sent message [[type.googleapis.com/agent_controlplane.PluginEventMessage: (revision_id:"2dfa648c1892da87)]]
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "DownloadPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:316) Successfully downloaded "https://storage.googleapis.com/acp-gcs-bucket-us-centrall-a/ops-agent
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "UnpackPluginArchiveStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (pluginengine.go:361) Successfully unpacked "/var/lib/google-guest-agent/ops-agent.tar.gz" to "/google-guest-agent/ops-agent_2dfa648c1892da87
    my-instance google_guest_agent [14972]: (pluginengine.go:202) Running "LaunchPluginStep" on plugin "ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (run_linux.go:32) Attempting process start: (OutputType:0 Name:/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87)
    my-instance google_guest_agent [14972]: (pluginlauncher.go:132) Launched a plugin process from "/var/lib/google-guest-agent/plugins/ops-agent_2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:136) Dialing in on plugin "ops-agent 2dfa648c1892da87"
    my-instance google_guest_agent [14972]: (plugin.go:51) Executing start request on plugin "ops-agent_2dfa648c1892da87"

Solucionar problemas de instalación

Si una extensión no se instala en una máquina virtual después de crear una política, siga estos pasos para solucionar el problema:

  1. Espere a que se apliquen las políticas. Una política puede tardar hasta una hora en aplicarse, incluidos los reintentos.
  2. Comprueba que las etiquetas de inclusión especificadas en la política coincidan con las etiquetas de la VM.
  3. Para identificar posibles errores de instalación, habilita el registro de depuración del agente invitado.
  4. Una vez que haya solucionado el problema subyacente, vuelva a intentar la instalación con uno de los siguientes métodos:

    • Vuelve a crear la política: elimina la política y, a continuación, crea una nueva.
    • Usa una política temporal de alta prioridad: si quieres evitar tener que volver a crear una política que afecte a muchas VMs, usa una política temporal de mayor prioridad para volver a intentar la instalación en VMs específicas:

      1. Añade una etiqueta nueva a las VMs en las que no se haya podido completar la instalación. Por ejemplo, añade una etiqueta status=failed.
      2. Crea una política con una prioridad más alta que se dirija a la nueva etiqueta. Por ejemplo, si la política original que ha fallado tenía la prioridad predeterminada 1000, crea una política con una prioridad más alta, como 500.
        gcloud beta compute zone-vm-extension-policies create temp-policy  
        --project=test-project
        --zone=us-central1-f
        --extensions=ops-agent
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml"
        --priority=500
        --inclusion-labels=status=failed
      3. Una vez que la extensión se haya instalado correctamente, elimina la política temporal y quita la etiqueta de las VMs. La extensión sigue instalada porque la política original sigue activa.

Ver los registros de depuración del agente invitado

Para habilitar el registro de depuración, añade la configuración del nivel de registro y del nivel de detalle a la sección Core del archivo de configuración del agente invitado de la siguiente manera:

Linux

  1. Abre el archivo de configuración del agente invitado, que se encuentra en /etc/default/instance_configs.cfg.
  2. Añade las siguientes líneas al archivo. Si la sección [Core] ya existe, añádele los ajustes log_level y log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Reinicia el gestor de agentes invitados ejecutando el siguiente comando:

     sudo systemctl restart google-guest-agent-manager
    
  4. Para ver los registros de la actividad del agente invitado durante la instalación de la extensión, ejecuta el siguiente comando:

    journalctl -u google-guest-agent-manager
    

Windows

  1. Abre el archivo de configuración del agente invitado, que se encuentra en C:\Program Files\Google\Compute Engine\instance_configs.cfg.
  2. Añade las siguientes líneas al archivo. Si la sección [Core] ya existe, añádele los ajustes log_level y log_verbosity.

    [Core]
    log_level = 4
    log_verbosity = 4
    
  3. Reinicia el gestor de agentes invitados ejecutando el siguiente comando como administrador de Windows:

     net stop GCEAgentManager
     net start GCEAgentManager
    
  4. Para ver los registros de la actividad del agente invitado durante la instalación de la extensión, ejecuta el siguiente comando en PowerShell:

    Get-Eventlog -Source google_guest_agent_manager -LogName Application
    

Después de habilitar los registros de depuración, comprueba si se han producido los siguientes errores habituales:

  • No hay suficiente espacio en el disco: si los registros indican que no hay suficiente espacio en el disco, libera espacio en el disco o cambia su tamaño para añadir más espacio.
  • Uso excesivo de recursos: si los registros indican que el agente invitado ha detenido la extensión debido a un uso excesivo de memoria o CPU, cambia el tipo de máquina de la VM a uno con más recursos.

Siguientes pasos