Compartir grupos de nodos de único cliente


Los grupos de nodos de único cliente compartidos son similares a los grupos de nodos de único cliente locales. Por ejemplo, los grupos de nodos compartidos cuestan lo mismo, consumen la misma cuota y se encuentran en un proyecto principal de la jerarquía de recursos.

La diferencia entre los grupos de nodos compartidos y los grupos de nodos locales es que otros proyectos de tu organización pueden aprovisionar instancias de máquina virtual en los grupos de nodos compartidos.

Compartir un grupo de nodos entre varios proyectos o una organización puede ayudarte a hacer lo siguiente:

  • Consolida los grupos de nodos que gestionas en un solo proyecto y, a continuación, comparte esos nodos con otros proyectos o con toda la organización.

  • Reducir los costes eliminando nodos después de consolidar las VMs de varios proyectos en grupos de nodos infrautilizados

  • Gestionar nodos de único cliente con un solo equipo

  • Compartir nodos de un solo inquilino con proyectos más pequeños y mantener los límites de seguridad y control de acceso entre esos proyectos

  • Realizar una migración en directo entre grupos de nodos del mismo proyecto

  • Mejorar la utilización de los grupos de nodos y reducir el número de nodos de mantenimiento reservados al usar la política de mantenimiento Migrar dentro del grupo de nodos

En el siguiente diagrama se muestra un grupo de nodos que se comparte con otros proyectos para que otros departamentos que gestionan VMs en esos proyectos puedan aprovisionar VMs en un grupo de nodos compartido.

Diagrama de un grupo de nodos compartido entre proyectos. Los departamentos que gestionan VMs en diferentes proyectos pueden aprovisionar VMs en un grupo de nodos compartido.

Ventajas de utilización de los grupos de nodos compartidos

En la siguiente tabla se comparan los proyectos que usan grupos de nodos locales con los que usan grupos de nodos compartidos. Ten en cuenta que la infrautilización de las vCPUs disminuye en los proyectos que usan grupos de nodos compartidos.

Configuración del proyecto Grupos de nodos locales Grupos de nodos compartidos
Proyectos 10 10
vCPU por proyecto 24 24
Grupos de nodos 10 1
Nodos o grupos de nodos 1 3
vCPU por nodo 80 80
Utilización/grupo de nodos 24 80
Infrautilización/grupo de nodos 56 0
Infrautilización total 10 x 56 = 560 vCPUs 1 x 0 = 0 vCPUs

Configuración para compartir grupos de nodos

Compute Engine usa los siguientes ajustes para compartir grupos de nodos y aprovisionar VMs en los grupos de nodos compartidos:

  • Un ajuste para compartir que se configura al crear o actualizar el grupo de nodos de un solo inquilino. Para especificar si quieres compartir el grupo de nodos con otros proyectos o con toda la organización, usa los ajustes de la CLI de gcloud (--share-setting y --share-with) o los ajustes de la API REST (shareSetting y shareWith).

  • Una etiqueta de afinidad de nodos compute.googleapis.com/project predeterminada que se usa al aprovisionar una VM en un grupo de nodos compartido mediante etiquetas de afinidad de nodos. Para obtener información sobre otras etiquetas de afinidad de nodo predeterminadas, consulta Etiquetas de afinidad predeterminadas.

Consideraciones sobre la política de mantenimiento

Cuando un grupo de nodos usa la política de mantenimiento Migrar dentro del grupo de nodos, Compute Engine reserva al menos un nodo para los eventos de migración en directo, por lo que el grupo de nodos debe tener al menos dos nodos. No puedes programar VMs en el nodo reservado, por lo que los grupos de nodos con esta política de mantenimiento suelen tener una utilización general más baja. Por este motivo, las cargas de trabajo que requieren la política de mantenimiento Migrar dentro del grupo de nodos son buenas candidatas para compartir grupos de nodos, ya que suelen ser las que más se benefician de la mejora de la utilización.

Funciones y permisos de IAM

Ten en cuenta la siguiente información sobre los roles y permisos de gestión de identidades y accesos cuando compartas un grupo de nodos:

  • Si un grupo de nodos se comparte con un proyecto, cualquier usuario que pueda crear máquinas virtuales en los proyectos de la lista o en la organización podrá aprovisionar máquinas virtuales de esos proyectos en el grupo de nodos compartido sin tener que cambiar los roles ni los permisos de gestión de identidades y accesos.

  • El rol de compute.soleTenantViewer de gestión de identidades y accesos te permite enumerar y ver grupos de nodos (interfaz de línea de comandos de gcloud / REST). No puedes modificar grupos de nodos con este rol. Cualquier usuario con este rol o con permisos para enumerar grupos de nodos, independientemente de los permisos de gestión de identidades y accesos de la VM, puede ver el ID del proyecto, el nombre, el tipo de máquina y la información sobre los SSD locales y las GPUs de todas las VMs del grupo de nodos.

Limitaciones

  • Limitaciones del régimen de cumplimiento:

    • Independientemente de los permisos de gestión de identidades y accesos de la VM, cualquier usuario con permisos para enumerar grupos de nodos puede ver el ID de proyecto, el nombre y el tipo de máquina de todas las VMs del grupo de nodos. Por lo tanto, debido al riesgo de divulgación de información entre proyectos, los proyectos que tengan máquinas virtuales aprovisionadas en grupos de nodos compartidos deben estar sujetos al mismo régimen de cumplimiento.
  • Limitaciones de la consolaGoogle Cloud :

    • Si no tienes permiso para ver las VMs del grupo de nodos de un solo inquilino compartido, esas VMs no aparecerán en la lista de VMs de la página Nodos de un solo inquilino de la consolaGoogle Cloud .
    • Después de modificar la configuración para compartir en la página Grupos de nodos de un solo inquilino, el ajuste Compartido con no se actualiza en la interfaz de usuario. Para ver la configuración actualizada de Compartido con, vaya a la página Nodos de un solo inquilino.
    • Después de compartir un grupo de nodos con todos los proyectos de una organización o con proyectos concretos de una organización, solo podrás ver el grupo de nodos compartido desde el proyecto al que pertenece. No podrás verlo desde los proyectos con los que se ha compartido. Para aprovisionar una VM en el grupo de nodos compartido, ve a la página Instancias de VM del proyecto con el que se comparte el grupo de nodos y, a continuación, modifica las etiquetas de afinidad de nodo de arrendamiento único.
  • Limitaciones para compartir:

    • Debes actualizar la configuración de uso compartido del proyecto propietario del grupo de nodos.
    • Puedes especificar un máximo de 100 proyectos cuando uses el ajuste projects compartir.
    • No puedes compartir grupos de nodos entre organizaciones. Por ejemplo, si migras un proyecto que contiene un grupo de nodos compartido de una organización a otra, también debes migrar todos los proyectos que tengan máquinas virtuales en ejecución en ese grupo de nodos compartido.
    • No puedes realizar migraciones en directo entre proyectos mientras usas grupos de nodos de un solo propietario compartidos. Para obtener más información, consulta Migrar manualmente máquinas virtuales en tiempo real.

Precios

Las VMs de los grupos de nodos compartidos no generan cargos adicionales, y tampoco se aplican cargos adicionales por compartir grupos de nodos. Para obtener más información sobre los precios de los nodos de único propietario, consulta la página Precios de los nodos de único propietario.

Antes de empezar

  • Antes de crear un grupo de nodos de único propietario, crea una plantilla de nodo de único propietario.
  • Antes de aprovisionar VMs en un nodo de único cliente, consulta tu cuota. En función del número y el tamaño de los nodos que reserves, es posible que tengas que solicitar cuota adicional.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Crear un grupo de nodos y compartirlo

Para crear un grupo de nodos y compartirlo con otros proyectos o con toda la organización, usa la consola, la interfaz de línea de comandos de gcloud o REST. Google Cloud

Consola

  1. Crea un grupo de nodos de único cliente. Para obtener más información, consulta Crear un grupo de nodos de un solo inquilino.

  2. Configure los ajustes para compartir especificando una de las siguientes opciones en Configurar ajustes para compartir:

    • Para compartir el grupo de nodos con todos los proyectos de tu organización, elige Compartir este grupo de nodos con todos los proyectos de la organización.
    • Para compartir el grupo de nodos con proyectos específicos de tu organización, elige Compartir este grupo de nodos con proyectos seleccionados de la organización.

    Si no quieres compartir el grupo de nodos, elige No compartir este grupo de nodos con otros proyectos.

gcloud

Para crear un grupo de nodos compartido, usa el siguiente gcloud compute sole-tenancy node-groups create comando.

gcloud compute sole-tenancy node-groups create NODE_GROUP \
    --zone=ZONE \
    --node-template=NODE_TEMPLATE \
    --target-size=SIZE \
    --share-setting=SHARE_SETTING \
    --share-with=PROJECTS

Haz los cambios siguientes:

  • NODE_GROUP: el nombre del grupo de nodos.

  • ZONE: la zona en la que se creará el grupo de nodos.

  • NODE_TEMPLATE: el nombre de la plantilla de nodo creada anteriormente.

  • SIZE: el número de nodos del grupo de nodos.

  • SHARE_SETTING: el ajuste para compartir del grupo de nodos. Selecciona projects para compartirlo con proyectos específicos o organization para compartirlo con toda la organización.

  • PROJECTS: una lista de IDs o números de proyecto con los que compartir el grupo de nodos. Solo es obligatorio si asignas el valor projects a SHARE_SETTING.

REST

Para crear un grupo de nodos compartido, usa el siguiente método nodeGroups.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups

{
  ...
  "name": NODE_GROUP,
  "nodeTemplate": NODE_TEMPLATE,
  "size": SIZE,
  "shareSettings": {
    "shareType": SHARE_TYPE,
    "projectMap": {
      string: {
        "projectId": PROJECTS
      },
    }
  }
  ...
}

Haz los cambios siguientes:

  • PROJECT: el nombre del proyecto en el que se va a crear el grupo de nodos.

  • ZONE: la zona en la que se creará el grupo de nodos.

  • NODE_GROUP: el nombre del grupo de nodos.

  • NODE_TEMPLATE: el nombre de la plantilla de nodo creada anteriormente.

  • SIZE: el número de nodos del grupo de nodos.

  • SHARE_TYPE: el ajuste para compartir del grupo de nodos. Selecciona SPECIFIC_PROJECTS para compartirlo con proyectos específicos o ORGANIZATION para compartirlo con toda la organización.

  • PROJECTS: una lista de IDs o números de proyecto con los que compartir el grupo de nodos. Solo es obligatorio si asignas el valor SPECIFIC_PROJECTS a SHARE_TYPE.

Aprovisionar una máquina virtual de único cliente en un grupo de nodos compartido

Para aprovisionar una VM de único cliente en un grupo de nodos compartido, usa laGoogle Cloud consola, la CLI de gcloud o la API REST.

Consola

  1. En la Google Cloud consola, cambia a un proyecto con el que hayas compartido un grupo de nodos.

  2. Ve a la página Instancias de VM.

    Ir a instancias de VM

  3. Haz clic en Crear instancia.

  4. En Zona, elige la zona del grupo de nodos compartidos.

  5. En Configuración de la máquina > Serie, elige el mismo tipo de máquina que se especifica en la plantilla de grupo de nodos de un solo inquilino compartida.

  6. Expande la sección Opciones avanzadas.

  7. Despliegue la sección Tenencia exclusiva.

  8. Haz clic en Explorar.

  9. Elige Seleccionar proyecto y especifica el proyecto que contiene el grupo de nodos compartido.

  10. Elige el grupo de nodos de único cliente o un nodo de único cliente específico de ese grupo en el que aprovisionar la VM.

gcloud

Aprovisionar una VM en un grupo de nodos compartido mediante el nombre del grupo de nodos

Para aprovisionar una VM de un solo inquilino en un grupo de nodos compartido mediante el nombre del grupo de nodos, usa el siguiente gcloud compute instances createcomando.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --node-group=NODE_GROUP \
    --node-project=NODE_PROJECT

Haz los cambios siguientes:

  • VM_NAME: el nombre de la nueva VM de un solo inquilino que se va a crear en un grupo de nodos compartido

  • MACHINE_TYPE: el tipo de máquina de la nueva VM de único inquilino

  • NODE_GROUP: el nombre del grupo de nodos compartido en el que se creará la VM de único cliente

  • NODE_PROJECT: el proyecto que contiene el grupo de nodos en el que se aprovisionará la VM

Aprovisionar una VM en un grupo de nodos compartido mediante un archivo de afinidad de nodos

Para aprovisionar una VM de un solo inquilino en un grupo de nodos compartido mediante un archivo de afinidad de nodos, usa el siguiente gcloud compute instances createcomando.

gcloud compute instances create VM_NAME \
    --machine-type=MACHINE_TYPE \
    --node-affinity-file=NODE_AFFINITY_FILE

Haz los cambios siguientes:

  • VM_NAME: el nombre de la VM de un solo inquilino que se va a crear en un grupo de nodos compartido mediante una etiqueta de afinidad.

  • MACHINE_TYPE: el tipo de máquina de la VM de único propietario que se va a crear en un grupo de nodos compartido.

  • NODE_AFFINITY_FILE: el nombre del archivo .json que contiene la información de afinidad de nodos. En el archivo de afinidad de nodos, asigna el valor "compute.googleapis.com/project" a la clave de etiqueta de afinidad, el valor "IN" al operador y el valor del proyecto que contiene el grupo de nodos. Para obtener más información sobre cómo configurar la afinidad de nodos, consulta Configurar etiquetas de afinidad de nodos.

REST

Para aprovisionar una VM de un solo inquilino en un grupo de nodos compartido mediante un archivo de afinidad de nodos, usa el siguiente nodeGroups.insert método.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/instances

{
  ...
  "name": VM_NAME,
  "machineType": MACHINE_TYPE,
  "scheduling": {
    ...
    "nodeAffinities": [
      {
        "key": KEY,
        "operator": OPERATOR,
        "values": [
          VALUE
        ]
      }
    ],
    ...
  },
  ...
}

Haz los cambios siguientes:

  • PROJECT: el nombre del proyecto al que pertenece el grupo de nodos.

  • ZONE: la zona del grupo de nodos.

  • VM_NAME: el nombre de la VM de un solo inquilino que se va a crear en un grupo de nodos compartido mediante una etiqueta de afinidad.

  • MACHINE_TYPE: el tipo de máquina de la VM de único propietario que se va a crear en un grupo de nodos compartido.

  • KEY: la etiqueta de afinidad. Su valor debe ser "compute.googleapis.com/project".

  • OPERATOR: el operador de la etiqueta de afinidad. Su valor debe ser "IN".

  • VALUE: el proyecto que contiene el grupo de nodos en el que se va a aprovisionar la VM. Especifica un proyecto mediante el nombre o el ID del proyecto.

Para obtener más información sobre cómo configurar la afinidad de nodos, consulta Configurar etiquetas de afinidad de nodos.

Ver la configuración para compartir de un grupo de nodos

Para ver la configuración de uso compartido de un grupo de nodos, usa la Google Cloud consola, la CLI de gcloud o REST.

Consola

  1. En la Google Cloud consola, ve a la página Nodos de un solo inquilino.

    Ir a nodos de único cliente

  2. Para ver las propiedades del grupo de nodos, en la columna Nombre, haga clic en el nombre del grupo de nodos.

gcloud

Para ver la configuración de uso compartido de un grupo de nodos, utiliza el siguiente gcloud compute sole-tenancy node-groups describecomando.

gcloud compute sole-tenancy node-groups describe NODE_GROUP

Sustituye NODE_GROUP por el nombre del grupo de nodos cuyas opciones para compartir quieras ver.

REST

Para ver la configuración de uso compartido de un grupo de nodos, utiliza el siguiente nodeGroups.get método.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups

Haz los cambios siguientes:

  • PROJECT: el nombre del proyecto con el grupo de nodos para ver la configuración de uso compartido

  • ZONE: la zona que contiene el grupo de nodos del que quiere ver los ajustes para compartir

Compartir un grupo de nodos

Para compartir un grupo de nodos con otros proyectos o con toda la organización, usa la Google Cloud consola, la CLI de gcloud o la API REST.

Consola

  1. En la Google Cloud consola, ve a la página Nodos de un solo inquilino.

    Ir a nodos de único cliente

  2. En la columna Nombre, haz clic en el nombre del grupo de nodos.

  3. Para compartir el grupo de nodos con todos los proyectos de la organización o con los proyectos seleccionados de la organización, en Resumen > Compartido con, haz clic en Editar .

gcloud

Para actualizar la configuración de uso compartido de un grupo de nodos, usa el siguiente gcloud compute sole-tenancy node-groups update comando.

gcloud compute sole-tenancy node-groups update NODE_GROUP \
    --zone=ZONE \
    --share-setting=SHARE_SETTING \
    --share-with=PROJECTS

Haz los cambios siguientes:

  • NODE_GROUP: el nombre del grupo de nodos cuyas opciones de uso compartido quieres actualizar.

  • SHARE_SETTING: el ajuste para compartir del grupo de nodos. Selecciona projects para compartirlo con proyectos específicos o organization para compartirlo con toda la organización.

  • PROJECTS: una lista de IDs o números de proyecto con los que compartir el grupo de nodos. Solo es obligatorio si asignas el valor projects a SHARE_SETTING.

REST

Para actualizar la configuración de uso compartido de un grupo de nodos, utiliza el siguiente nodeGroups.patch método.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

{
  "shareSettings": {
    "shareType": SHARE_TYPE,
    "projectMap": {
      string: {
        "projectId": PROJECTS
      },
    }
  }
}

Haz los cambios siguientes:

  • PROJECT: el nombre del proyecto con los grupos de nodos de los que se va a actualizar la configuración de uso compartido.

  • ZONE: la zona que contiene los grupos de nodos cuya configuración de uso compartido se va a actualizar.

  • NODE_GROUP: el nombre del grupo de nodos cuyas opciones de uso compartido quieres actualizar.

  • SHARE_TYPE: el ajuste para compartir del grupo de nodos. Selecciona projects para compartirlo con proyectos específicos o organization para compartirlo con toda la organización.

  • PROJECTS: una lista de IDs o números de proyecto con los que compartir el grupo de nodos. Solo es obligatorio si asignas el valor SPECIFIC_PROJECTS a SHARE_SETTING.

Dejar de compartir un grupo de nodos

Para dejar de compartir un grupo de nodos con otros proyectos o con toda la organización, usa la CLI de gcloud o REST.

Consola

  1. En la Google Cloud consola, ve a la página Nodos de un solo inquilino.

    Ir a nodos de único cliente

  2. Haz clic en el nombre del grupo de nodos.

  3. En Resumen > Compartido con, haz clic en Editar .

  4. Para dejar de compartir, elige No compartir este grupo de nodos con otros proyectos.

gcloud

Para dejar de compartir un grupo de nodos con otros proyectos o con toda la organización, usa el siguiente gcloud compute sole-tenancy node-groups update comando.

gcloud compute sole-tenancy node-groups update NODE_GROUP \
    --zone=ZONE \
    --share-setting=local

Sustituye NODE_GROUP por el nombre del grupo de nodos que quieras dejar de compartir.

REST

Para dejar de compartir un grupo de nodos con otros proyectos o con toda la organización, usa el siguiente nodeGroups.patchmétodo.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

{
  "shareSettings": {
    "shareType": LOCAL
  }
}

Haz los cambios siguientes:

  • PROJECT: el nombre del proyecto con el grupo de nodos que se va a dejar de compartir

  • ZONE: la zona que contiene el grupo de nodos que se va a dejar de compartir

  • NODE_GROUP: el nombre del grupo de nodos que se va a dejar de compartir

Eliminar un grupo de nodos compartido del proyecto propietario

Para eliminar un grupo de nodos compartido del proyecto propietario, usa laGoogle Cloud consola, gcloud CLI o REST. Antes de eliminar un grupo de nodos, detén todas las VMs que se estén ejecutando en él.

Consola

  1. En la Google Cloud consola, ve a la página Nodos de un solo inquilino.

    Ir a nodos de único cliente

  2. En la columna Nombre, haz clic en el nombre del grupo de nodos.

  3. Haz clic en Eliminar.

gcloud

Para eliminar un grupo de nodos compartido del proyecto propietario, usa el siguiente gcloud compute sole-tenancy node-groups delete comando.

gcloud compute sole-tenancy node-groups delete NODE_GROUP

Sustituye NODE_GROUP por el nombre del grupo de nodos que quieras eliminar.

REST

Para eliminar un grupo de nodos compartido del proyecto propietario, utiliza el siguiente nodeGroups.delete método.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/nodeGroups/NODE_GROUP

Haz los cambios siguientes:

  • PROJECT: el nombre del proyecto con el grupo de nodos que se va a eliminar

  • ZONE: la zona que contiene el grupo de nodos que se va a eliminar

  • NODE_GROUP: el nombre del grupo de nodos que se va a eliminar