Aísla tus cargas de trabajo de GKE con nodos de usuario único


En esta página, se muestra cómo aislar las cargas de trabajo que se ejecutan en clústeres de Google Kubernetes Engine (GKE) estándar mediante los nodos de usuario único de Compute Engine, que son servidores físicos dedicados ejecutar solo las VMs de un proyecto específico. Puedes usar nodos de usuario único a fin de mantener tus VMs separadas de forma física de las VMs en otros proyectos o para agruparlas en el mismo hardware del host.

Esta función no es compatible con GKE Autopilot. Para obtener más información sobre los límites de seguridad de Autopilot, consulta Límites de seguridad en Autopilot.

Para usar nodos de usuario único en GKE, debes crear un grupo de nodos de usuario único en Compute Engine y usar ese grupo de nodos a fin de crear un grupo de nodos de GKE. Puedes crear grupos de nodos con nodos de usuario único del proyecto del clúster de GKE o nodos de usuario único compartidos con recursos en todos los proyectos de tu organización. Por ejemplo, puedes designar un proyecto de propietario en la organización en el que creas grupos de nodos de usuario único y los proyectos de consumidor en los que tienes clústeres con nodo grupos que usan esos grupos de nodos del proyecto propietario.

Antes de comenzar

Antes de comenzar, asegúrate de haber realizado las siguientes tareas:

  • Habilita la API de Kubernetes Engine de Google.
  • Habilitar la API de Kubernetes Engine de Google
  • Si deseas usar Google Cloud CLI para esta tarea, instala y, luego, inicializa gcloud CLI. Si ya instalaste gcloud CLI, ejecuta gcloud components update para obtener la versión más reciente.

Solicita cuota adicional

Los nodos de usuario único son grandes (por ejemplo, 96 CPU virtuales y 624 GB de memoria) y las cuotas predeterminadas del proyecto son demasiado bajas para controlarlas.

Debes solicitar un aumento de cuota para las CPU de la API de Compute Engine en la página de cuotas a fin de crear nodos de usuario único. Para obtener más información sobre cómo solicitar el aumento, consulta la página Cuotas.

La cantidad de CPU que necesitas depende de los siguiente factores:

  • El uso actual de la cuota de CPU
  • El tamaño del grupo de nodos
  • La plantilla de nodos

Examina la cantidad de núcleos de tu tipo de nodo de usuario único y solicita un límite de CPU de al menos esa cantidad, de preferencia con 10 CPUs adicionales para asegurarte de que tu proyecto tenga la capacidad adecuada.

Crea una plantilla de nodo de usuario único

Una plantilla de nodo de usuario único es un recurso regional que define y aplica propiedades a cada nodo cuando se crea un grupo de nodos. Para obtener más información, consulta los tipos de nodos.

Si usas nodos de usuario único compartidos, asegúrate de completar estas instrucciones en el proyecto de propietario para el grupo de nodos, no en el proyecto de consumidor del clúster.

Consola

  1. Ve a la página Nodos de usuario único en la consola de Google Cloud.

    Ir a Nodos de usuario único

  2. Haz clic en Crear plantilla de nodo.

  3. Especifica un Nombre y una Región para tu plantilla de nodo.

  4. Selecciona un Tipo de nodo.

  5. También puedes agregar una o más etiquetas de afinidad de nodos.

  6. Haz clic en Crear para crear la plantilla de nodo.

gcloud

Usa el comando gcloud compute sole-tenancy node-templates create para crear una plantilla de nodo:

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type=NODE_TYPE \
    --node-affinity-labels=AFFINITY_LABELS \
    --region=COMPUTE_REGION

Reemplaza lo siguiente:

  • TEMPLATE_NAME: Es el nombre de la plantilla de nodo nueva.
  • NODE_TYPE: Es el tipo de nodo para los nodos de usuario único que se crearon según esta plantilla. Usa el comando gcloud compute sole-tenancy node-types list para obtener una lista de los tipos de nodos disponibles en cada zona.
  • AFFINITY_LABELS: Son las claves y los valores, [KEY=VALUE,...], de las etiquetas de afinidad. Las etiquetas de afinidad te permiten agrupar nodos y grupos de nodos de forma lógica y, luego, cuando aprovisionas VM, puedes especificar etiquetas de afinidad en las VM para programarlas en un conjunto específico de nodos o grupos de nodos. Para obtener más información, consulta Afinidad y antiafinidad de nodos.
  • COMPUTE_REGION: es la región en la que se creará la plantilla de nodo. Puedes usar esta plantilla para crear grupos de nodos en cualquier zona de esta región.

El resultado es similar a este:

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

Crea un grupo de nodo de usuario único

Un grupo de nodos es un conjunto de nodos de usuario único en una zona específica de la misma plantilla de nodo de usuario único. En el caso de los clústeres regionales y los grupos de nodos disponibles en varias zonas, debes crear un grupo de nodos con el mismo nombre en cada zona. Asegúrate de tener cuota suficiente antes de completar este paso.

Si usas nodos de usuario único compartidos, asegúrate de completar estas instrucciones en el proyecto de propietario para el grupo de nodos, no en el proyecto de consumidor del clúster.

Consola

Para crear un grupo de nodos de usuario único, realiza los siguientes pasos:

  1. Ve a la página Nodos de usuario único en la consola de Google Cloud.

    Ir a Nodos de usuario único

  2. Haz clic en Crear grupo de nodos.

  3. Especifica un nombre para la plantilla de nodo.

  4. Selecciona la misma región en la que creaste la plantilla de nodo y, luego, selecciona una zona en esa región.

  5. Selecciona tu Plantilla de nodo.

  6. De manera opcional, habilita el modo de ajuste de escala automático.

  7. Especifica la cantidad de nodos que deseas incluir en el grupo.

  8. De manera opcional, cambia la política de mantenimiento.

  9. De manera opcional, para compartir el grupo de nodos de usuario único, especifica la configuración de uso compartido mediante una de las siguientes opciones en la sección Establece la configuración de uso compartido:

    • Compartir este grupo de nodos con todos los proyectos de la organización
    • Compartir este grupo de nodos con proyectos seleccionados de la organización
  10. Haz clic en Crear para crear el nuevo grupo de nodos.

gcloud

Crea un grupo de nodos a partir de la plantilla:

gcloud compute sole-tenancy node-groups create GROUP_NAME \
    --zone COMPUTE_ZONE \
    --node-template TEMPLATE_NAME --target-size TARGET_SIZE \
    --share-settings=SHARE_SETTING \
    --share-with=PROJECTS

Reemplaza lo siguiente:

  • GROUP_NAME: es el nombre que deseas para tu nuevo grupo de nodos.
  • COMPUTE_ZONE: es la zona en la que se encuentra este grupo de nodos. Esta zona debe estar en la misma región que la plantilla de nodos que usas.
  • TEMPLATE_NAME: es el nombre de la plantilla de nodo que usas.
  • TARGET_SIZE: es la cantidad de nodos que quieres crear en el grupo.
  • SHARE_SETTING: Es la configuración de uso compartido del grupo de nodos Configúralo como projects para compartirlo con proyectos específicos o en organization para compartirlo con toda la organización
  • PROJECTS: Una lista de los IDs o números de proyectos con los que se compartirá el grupo de nodos Solo es necesaria si configuras SHARE_SETTING en projects.

Crea un grupo de nodos de usuario único de GKE

Ahora que creaste un grupo de nodos de usuario único en Compute Engine, puedes crear un grupo de nodos de usuario único.

Si ya tienes un clúster de GKE, puedes agregarle un grupo de nodos de usuario único. De lo contrario, crea un clúster con gcloud container clusters create.

Si usas un clúster regional o si tu grupo de nodos está disponible en varias zonas, debes crear un grupo de nodos con el mismo nombre en cada una de esas zonas. Si no puedes volver a usar el nombre en cada zona, crea grupos de nodos separados para cada zona.

Crea un grupo de nodos con un grupo de nodos de usuario único del proyecto del clúster.

Para crear un grupo de nodos mediante un grupo de nodos del proyecto del clúster, pasa el nombre del grupo de nodos de usuario único. Si deseas usar un grupo de nodos de usuario único compartido o quieres usar etiquetas de afinidad de nodos personalizadas que configuraste cuando creaste la plantilla de nodo de usuario único, consulta las instrucciones para crear un grupo de nodos con nodo de usuario único compartido mediante un archivo de afinidad de nodo.

Crea un grupo de nodos nuevo con un grupo de nodos específico con el siguiente comando:

Para grupos de nodos zonales:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE

Para grupos de nodos regionales:

  gcloud container node-pools create NODE_POOL_NAME \
      --node-group GROUP_NAME --cluster CLUSTER_NAME \
      --region COMPUTE_REGION --machine-type=MACHINE_TYPE \
      --node-locations=COMPUTE_ZONE1,COMPUTE_ZONE2

Reemplaza lo siguiente:

  • NODE_POOL_NAME: Un nombre para el grupo de nodos nuevo.
  • GROUP_NAME: es el nombre del grupo de nodos de usuario único existente que deseas usar.
  • CLUSTER_NAME: es el nombre del clúster en el que creas el grupo de nodos.
  • COMPUTE_REGION: La misma región que tu clúster.
  • MACHINE_TYPE: El tipo de máquina del grupo de nodos.
  • COMPUTE_ZONE1 y COMPUTE_ZONE2,[...]: son las zonas de los grupos de nodos de usuario único.

Para obtener una lista completa de las marcas opcionales que puedes especificar, consulta la documentación de gcloud container node-pools create.

Crea un grupo de nodos con nodo de usuario único compartido mediante un archivo de afinidad de nodo

Para crear un grupo de nodos con un grupo de nodos de usuario único compartido, debes usar las etiquetas de afinidad de nodo. También puedes usar la afinidad de nodos para elegir grupos de nodos del mismo proyecto.

A fin de hacer referencia a las etiquetas, sigue las instrucciones para crear un grupo de nodos y reemplaza la marca --node-group por --sole-tenant-node-affinity-file. Pasa un archivo JSON con esas etiquetas. Por ejemplo, consulta el siguiente comando:

  gcloud container node-pools create sole-tenant-node-pool \
      --sole-tenant-node-affinity-file /path/to/affinity/file --cluster my-cluster \
      --region us-central1 --machine-type n1-standard-4  \
      --node-locations=us-central1-a,us-central1-b,us-central1-c

En las siguientes secciones, se describen casos de uso para las etiquetas de afinidad de nodo con nodos de usuario único.

Especifica el nombre de un grupo de nodos de un proyecto

Para usar grupos de nodos de usuario único de un proyecto y nombre de grupo de nodos específicos, especifica estos valores en el archivo de afinidad de nodos. Puedes usar esta afinidad si creas un grupo de nodos multizona en el que los nombres de los grupos de nodos de cada zona deben coincidir. Para usar cualquier grupo de nodos en el proyecto de propietario especificado, omite todo el bloque compute-googleapis.com/node-group-name del archivo JSON.

Consulta el siguiente ejemplo:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "compute.googleapis.com/node-group-name",
    "operator" : "IN",
    "values" : ["GROUP_NAME"]
  },
]

Especifica etiquetas personalizadas

También puedes usar la afinidad y antiafinidad de nodos para crear un grupo de nodos con grupos de nodos con etiquetas personalizadas. A cada grupo de nodos se les asignan etiquetas de afinidad predeterminadas de forma automática. Puedes hacer referencia a las etiquetas predeterminadas como con los ejemplos anteriores o usar etiquetas personalizadas designadas cuando creas la plantilla de nodos. Puedes usar etiquetas personalizadas para aislar o agrupar las cargas de trabajo.

Consulta el siguiente ejemplo:

[
  {
    "key" : "compute.googleapis.com/project",
    "operator" : "IN",
    "values" : ["OWNER_PROJECT"]
  },
  {
    "key" : "workload",
    "operator" : "IN",
    "values" : ["frontend"]
  },
]

Limitaciones

Cuando creas un grupo de nodos con nodos de usuario único, eres responsable de administrar la capacidad subyacente de los grupos de nodos de usuario único. Considera cómo interactúan las siguientes características con los grupos de nodos de usuario único:

¿Qué sigue?