En esta página se explica cómo aislar las cargas de trabajo que se ejecutan en clústeres estándar de Google Kubernetes Engine (GKE) mediante nodos de único cliente de Compute Engine, que son servidores físicos dedicados que solo ejecutan las máquinas virtuales de un proyecto específico. Puedes usar nodos de único propietario para mantener tus máquinas virtuales separadas físicamente de las de otros proyectos o para agruparlas en el mismo hardware de host.
Esta función no está disponible en 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 único cliente en GKE, crea un grupo de nodos de único cliente en Compute Engine y usa ese grupo de nodos para crear un grupo de nodos de GKE. Puedes crear grupos de nodos con nodos de único inquilino del proyecto del clúster de GKE o nodos de único inquilino compartidos con recursos de diferentes proyectos de tu organización. Por ejemplo, puedes designar un proyecto propietario en tu organización donde crear grupos de nodos de un solo inquilino y proyectos de consumidor donde tengas clústeres con grupos de nodos que usen esos grupos de nodos del proyecto propietario.
Antes de empezar
Antes de empezar, asegúrate de que has realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- Si quieres usar Google Cloud CLI para esta tarea, instálala y, a continuación, inicialízala. Si ya has instalado la gcloud CLI, obtén la versión más reciente ejecutando
gcloud components update
.
Solicitar cuota adicional
Los nodos de único propietario son grandes (por ejemplo, 96 vCPUs y 624 GB de memoria), y las cuotas de proyecto predeterminadas son demasiado bajas para gestionarlos.
Para crear nodos de único cliente, debes solicitar un aumento de cuota de CPUs de la API de Compute Engine en la página de cuotas. Para obtener más información sobre cómo solicitar un aumento, consulta Cuotas.
El número de CPUs que necesitas depende de lo siguiente:
- El uso actual de tu cuota de CPU.
- Tamaño del grupo de nodos.
- La plantilla de nodo.
Consulta el número de núcleos de tu tipo de nodo de un solo inquilino y solicita un límite de CPU de al menos esa cantidad. Es recomendable que añadas 10 CPUs más para asegurarte de que tu proyecto tenga capacidad suficiente.
Crear una plantilla de nodo de único cliente
Una plantilla de nodo de único propietario es un recurso regional que define y aplica propiedades a cada nodo al crear un grupo de nodos. Para obtener más información, consulta Tipos de nodos.
Si usas nodos de único inquilino compartidos, asegúrate de seguir estas instrucciones en el proyecto propietario del grupo de nodos, no en el proyecto consumidor del clúster.
Consola
Ve a la página Nodos de un solo inquilino de la Trusted Cloud consola.
Haz clic en Crear plantilla de nodo.
Especifique un nombre y una región para la plantilla de nodo.
Selecciona un Tipo de nodo. Para ver qué tipos de máquinas se admiten en cada tipo de nodo, consulta la sección Tipos de nodos del artículo "Descripción general de la función de único cliente".
Opcionalmente, añade una o varias etiquetas de afinidad de nodo.
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
Haz los cambios siguientes:
TEMPLATE_NAME
: el nombre de la nueva plantilla de nodo.NODE_TYPE
: el tipo de nodo de los nodos de único cliente creados a partir de esta plantilla. Usa el comandogcloud compute sole-tenancy node-types list
para obtener una lista de los tipos de nodo disponibles en cada zona.AFFINITY_LABELS
: las claves y los valores,[KEY=VALUE,...]
, de las etiquetas de afinidad. Las etiquetas de afinidad te permiten agrupar lógicamente nodos y grupos de nodos. Más adelante, cuando aprovisiones máquinas virtuales, podrás especificar etiquetas de afinidad en las máquinas virtuales 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
: 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 debería ser similar al siguiente:
Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].
Crear un grupo de nodos de único cliente
Un grupo de nodos es un conjunto de nodos de único cliente de una zona específica que proceden de la misma plantilla de nodos de único cliente. En el caso de los clústeres y grupos de nodos regionales disponibles en varias zonas, debes crear un grupo de nodos con el mismo nombre en cada zona. Asegúrate de que tienes suficiente cuota antes de completar este paso.
Si usas nodos de único inquilino compartidos, asegúrate de seguir estas instrucciones en el proyecto propietario del grupo de nodos, no en el proyecto consumidor del clúster.
Consola
Para crear un grupo de nodos de único cliente, sigue estos pasos:
Ve a la página Nodos de un solo inquilino de la Trusted Cloud consola.
Haz clic en Crear grupo de nodos.
Especifique un nombre para la plantilla de nodo.
Selecciona la misma región en la que has creado la plantilla de nodo y, a continuación, selecciona una zona de esa región.
Selecciona la plantilla de nodo.
De forma opcional, habilita el modo de autoescalado.
Especifica el Número de nodos que quieres que haya en el grupo.
Mantén la política de mantenimiento predeterminada, ya que otros valores podrían provocar interrupciones.
Opcionalmente, para compartir el grupo de nodos de un solo inquilino, configure los ajustes de uso compartido especificando una de las siguientes opciones en la sección Configurar ajustes de uso compartido:
- Comparte este grupo de nodos con todos los proyectos de la organización.
- Compartir este grupo de nodos con los proyectos seleccionados de la organización.
Haz clic en Crear para crear el 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 \
--maintenance-policy=default
Haz los cambios siguientes:
GROUP_NAME
: el nombre que quieras darle al nuevo grupo de nodos.COMPUTE_ZONE
: la zona en la que se encuentra este grupo de nodos. Esta zona debe estar en la misma región que la plantilla de nodo que estés usando.TEMPLATE_NAME
: el nombre de la plantilla de nodo que estás usando.TARGET_SIZE
: el número de nodos que quiere crear en el grupo.SHARE_SETTING
: el ajuste para compartir del grupo de nodos. Seleccionaprojects
para compartirlo con proyectos específicos oorganization
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 valorprojects
aSHARE_SETTING
.
Este comando define la política de mantenimiento del host predeterminada. Otros valores pueden provocar interrupciones.
Crear un grupo de nodos de único cliente de GKE
Ahora que has creado un grupo de nodos de único cliente en Compute Engine, puedes crear un grupo de nodos de único cliente.
Si ya tienes un clúster de GKE, puedes añadirle un pool de nodos de un solo inquilino. Si no lo has hecho, crea un clúster con gcloud container clusters create
.
Si utilizas 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 reutilizar el nombre en cada zona, crea grupos de nodos independientes para cada zona.
Crear un grupo de nodos con un grupo de nodos de único cliente del proyecto del clúster
Para crear un grupo de nodos con un grupo de nodos del proyecto del clúster, indica el nombre del grupo de nodos de aislamiento. Si quieres usar un grupo de nodos de un solo inquilino compartido o etiquetas de afinidad de nodos personalizadas que hayas configurado al crear la plantilla de nodo de un solo inquilino, consulta las instrucciones para crear un pool de nodos con un nodo de un solo inquilino compartido mediante un archivo de afinidad de nodos.
Crea un grupo de nodos con un grupo de nodos específico:
En el caso de los grupos de nodos zonales:
gcloud container node-pools create NODE_POOL_NAME \
--node-group GROUP_NAME --cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION --machine-type=MACHINE_TYPE \
--node-locations=COMPUTE_ZONE1
En el caso de los grupos de nodos regionales:
gcloud container node-pools create NODE_POOL_NAME \
--node-group GROUP_NAME --cluster CLUSTER_NAME \
--location CONTROL_PLANE_LOCATION --machine-type=MACHINE_TYPE \
--node-locations=COMPUTE_ZONE1,COMPUTE_ZONE2
Haz los cambios siguientes:
NODE_POOL_NAME
: el nombre del nuevo grupo de nodos.GROUP_NAME
: el nombre del grupo de nodos de un solo arrendatario que quieras usar.CLUSTER_NAME
: el nombre del clúster en el que vas a crear el grupo de nodos.CONTROL_PLANE_LOCATION
: la ubicación de Compute Engine del plano de control de tu clúster. Proporciona una región para los clústeres regionales o una zona para los clústeres zonales.MACHINE_TYPE
: el tipo de máquina del grupo de nodos.COMPUTE_ZONE1
,COMPUTE_ZONE2,[...]
: las zonas de los grupos de nodos de un solo inquilino.
Para ver una lista completa de las marcas opcionales que puedes especificar, consulta la documentación de gcloud container node-pools create
.
Crear un grupo de nodos con un nodo de único cliente compartido mediante un archivo de afinidad de nodos
Para crear un grupo de nodos con un grupo de nodos de un solo inquilino compartido, debes usar etiquetas de afinidad de nodos. También puedes usar la afinidad de nodos para elegir grupos de nodos del mismo proyecto.
Para hacer referencia a las etiquetas, sigue las instrucciones para crear un grupo de nodos y sustituye la marca --node-group
por la marca --sole-tenant-node-affinity-file
. Transfiere 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 \
--location 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 prácticos de etiquetas de afinidad de nodos con nodos de un solo inquilino.
Especificar el nombre de un grupo de nodos de un proyecto
Para usar grupos de nodos de único cliente de un proyecto y un nombre de grupo de nodos específicos, especifica estos valores en el archivo de afinidad de nodos. Puedes usar esta afinidad si vas a crear 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 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"]
},
]
Especificar etiquetas personalizadas
También puedes usar la afinidad y la antiafinidad de nodos para crear un grupo de nodos con grupos de nodos que tengan etiquetas personalizadas. A cada grupo de nodos se le asignan automáticamente etiquetas de afinidad predeterminadas. Puedes hacer referencia a las etiquetas predeterminadas como en los ejemplos anteriores o usar etiquetas personalizadas designadas al crear la plantilla de nodo. Puedes usar etiquetas personalizadas para aislar o agrupar 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 único cliente, eres responsable de gestionar la capacidad subyacente de los grupos de nodos de único cliente. Ten en cuenta cómo interactúan las siguientes funciones con los grupos de nodos de un solo inquilino:
- Puedes habilitar el autoescalado de clústeres, pero está limitado por la capacidad del grupo de nodos subyacente. Puedes configurar el escalador automático de grupos de nodos en Compute Engine para gestionar automáticamente el tamaño de tus grupos de nodos de único cliente.
- No puedes habilitar el aprovisionamiento automático de nodos en tu clúster si usas nodos de un solo inquilino.
- Puedes usar cualquier estrategia de actualización de nodos, pero debes asegurarte de que tienes capacidad suficiente para admitir el grupo de nodos con la estrategia de actualización que hayas elegido.
Exceso de compromiso de CPU
El exceso de compromiso de CPU es una función opcional que te permite suscribir en exceso los recursos de CPU de tus nodos de único propietario. La asignación excesiva de CPU puede ser útil para cargas de trabajo que no estén limitadas por la CPU, lo que te permite ejecutar más pods en menos nodos y, potencialmente, reducir los costes.
Para habilitar la asignación excesiva de CPU, debes especificar la marca --cpu-overcommit-type=enabled
al crear una plantilla de nodo de un solo inquilino. Cuando creas un grupo de nodos, puedes especificar el número mínimo de vCPUs que deben estar disponibles en el nodo de único propietario mediante la marca --sole-tenant-min-node-cpus
. La función de exceso de compromiso de CPU tiene los mismos límites que se describen en el artículo Comprometer de forma excesiva CPUs en máquinas virtuales de único propietario. Esta función es compatible con GKE 1.33.1-gke.1545000 y versiones posteriores.