En la siguiente página, se explica cómo crear clústeres de Standard de Google Kubernetes Engine (GKE) con nodos que admiten la virtualización anidada. Las VMs de Compute Engine usan instrucciones de Intel VT-x para que las VMs anidadas puedan ejecutarse en la VM subyacente de un nodo de GKE. Luego, puedes implementar Pods que usen herramientas como QEMU para crear VMs anidadas. Puedes usar VMs anidadas para ejecutar cargas de trabajo especializadas, como emuladores de Android, o cargas de trabajo que se beneficien de la VM como límite de aislamiento.
Implicaciones de rendimiento reducido
Con la virtualización anidada asistida por hardware, las cargas de trabajo que se ejecutan en las VMs anidadas pueden experimentar un rendimiento reducido en comparación con las configuraciones de virtualización no anidadas. La cantidad del impacto en el rendimiento dependerá del perfil de carga de trabajo específico, incluidas las características de uso de E/S y memoria.
Además, crear VMs anidadas en las VMs subyacentes de los nodos de GKE puede afectar el rendimiento de otras cargas de trabajo que se ejecutan en esos nodos.
Antes de comenzar
Antes de comenzar, asegúrate de haber realizado las siguientes tareas:
- Habilita la API de Google Kubernetes Engine. Habilitar la API de Google Kubernetes Engine
- 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.
- Asegúrate de que la política de la organización admita la creación de VMs anidadas.
- Revisa las restricciones de las VMs anidadas.
Requisitos y limitaciones
Ten en cuenta la siguiente información antes de habilitar la virtualización anidada con GKE y permitir que tus Pods creen VMs anidadas:
- Solo puedes configurar grupos de nodos con VMs anidadas en una cantidad limitada de series de máquinas de VM. Consulta la fila Nested virtualization de la comparación de series de máquinas para confirmar las series de máquinas compatibles.
- Debes usar el tipo de imagen
UBUNTU_CONTAINERD
o el tipo de imagenCOS_CONTAINERD
con nodos que ejecutan la versión 1.28.4-gke.1083000 o una posterior. - Solo puedes usar la virtualización anidada con clústeres de Standard, no con clústeres de Autopilot.
- No puedes usar el aprovisionamiento automático de nodos con grupos de nodos anidados con la virtualización habilitada.
- No puedes usar la virtualización anidada si se aplica la restricción Inhabilitar la virtualización anidada de VMs para la política de la organización.
- Debes configurar
securityContext.privileged:true
para que los Pods interactúen con las VMs anidadas.
Habilitar la virtualización anidada
Puedes habilitar la virtualización anidada cuando creas un clúster, si la habilitas para el grupo de nodos predeterminado, o cuando creas un grupo de nodos. No puedes habilitar o inhabilitar la función para un grupo de nodos existente.
En las instrucciones de las siguientes secciones, se crean grupos de nodos con nodos con la
etiqueta nested-virtualization=enabled
. Después de que GKE crea los
nodos, puedes programar Pods que crearon VMs anidadas en la VM subyacente del
nodo.
Habilita la virtualización anidada con un clúster de Standard nuevo
Crea un clúster de Standard nuevo con la virtualización anidada habilitada para el grupo de nodos predeterminado. GKE solo crea el grupo de nodos predeterminado con la virtualización anidada habilitada. GKE no habilita automáticamente la función para todos los grupos de nodos nuevos creados para el clúster:
gcloud container clusters create CLUSTER_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--machine-type=MACHINE_TYPE
Reemplaza lo siguiente:
CLUSTER_NAME
: Es el nombre del clúster.MACHINE_TYPE
: un tipo de máquina compatible (consulta la fila de virtualización anidada).
De forma opcional, verifica que la virtualización anidada esté habilitada para un nodo en el grupo de nodos.
Ahora puedes programar Pods que crean VMs anidadas en la VM subyacente del nodo.
Habilita la virtualización anidada con un grupo de nodos nuevo
Crea un grupo de nodos nuevo con la virtualización anidada habilitada para un clúster de Standard existente:
gcloud container node-pools create NODEPOOL_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE
Reemplaza lo siguiente:
NODEPOOL_NAME
: el nombre del grupo de nodos en el que está habilitada la virtualización anidada.CLUSTER_NAME
: Es el nombre del clúster.MACHINE_TYPE
: un tipo de máquina compatible (consulta la fila de virtualización anidada).
De forma opcional, verifica que la virtualización anidada esté habilitada para un nodo en el grupo de nodos.
Ahora puedes programar Pods que crean VMs anidadas en la VM subyacente del nodo.
Programa un Pod en un nodo que admita la virtualización anidada
Para programar un Pod en un nodo con la virtualización anidada habilitada, agrega el siguiente selector de nodos a la especificación:
nodeSelector:
nested-virtualization: enabled
Además, para que el Pod se conecte con una VM anidada, debes configurar el Pod con
privilegios a través de la configuración de securityContext.privileged:true
.