Na página a seguir, explicamos como criar clusters do Google Kubernetes Engine (GKE) Standard com nós compatíveis com virtualização aninhada. As VMs do Compute Engine usam as instruções do Intel VT-x para que as VMs aninhadas possam ser executadas em uma VM subjacente do nó do GKE. Em seguida, é possível implantar pods que usam ferramentas como o QEMU para criar VMs aninhadas. É possível usar VMs aninhadas para executar cargas de trabalho especializadas, como emuladores do Android, ou cargas de trabalho que se beneficiam da VM como limite de isolamento.
Implicações do desempenho reduzido
Com a virtualização aninhada assistida por hardware, as cargas de trabalho em execução nas VMs aninhadas podem ter desempenho reduzido em comparação com as configurações de virtualização não aninhadas. O impacto no desempenho depende do perfil específico da carga de trabalho, incluindo as características de uso da memória e de E/S.
Além disso, a criação de VMs aninhadas nas VMs subjacentes dos nós do GKE pode afetar o desempenho de outras cargas de trabalho em execução nesses nós.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
- Verifique se a política da organização permite a criação de VMs aninhadas.
- Analise as restrições para VMs aninhadas.
Requisitos e limitações
Considere as informações a seguir antes de ativar a virtualização aninhada com o GKE e permitir que seus pods criem VMs aninhadas:
- Só é possível configurar pools de nós com VMs aninhadas com um número limitado de séries de máquinas de VM. Consulte a linha Virtualização aninhada da Comparação de séries de máquinas para confirmar as séries de máquinas compatíveis.
- É preciso usar o tipo de imagem
UBUNTU_CONTAINERD
ouCOS_CONTAINERD
com nós que executam a versão 1.28.4-gke.1083000 ou posterior. - Só é possível usar a virtualização aninhada com clusters do Standard, não os clusters do Autopilot.
- Não é possível usar o provisionamento automático de nós com pools de nós que têm a virtualização aninhada ativada.
- Não será possível usar a virtualização aninhada se a restrição Desativar virtualização aninhada da VM for aplicada à política da organização.
- Defina
securityContext.privileged:true
para que os pods interajam com VMs aninhadas.
Ativar virtualização aninhada
É possível ativar a virtualização aninhada ao criar um cluster, ativando-o para o pool de nós padrão, ou ao criar um pool de nós. Não é possível ativar ou desativar o recurso para um pool de nós que já existe.
As instruções nas próximas seções criam pools de nós com o rótulo nested-virtualization=enabled
. Depois que o GKE cria os nós, é possível programar pods que criaram VMs aninhadas na VM subjacente do nó.
Ativar a virtualização aninhada com um novo cluster do Standard
Crie um novo cluster do Standard com a virtualização aninhada ativada para o pool de nós padrão. O GKE só cria o pool de nós padrão com a virtualização aninhada ativada. O GKE não ativa o recurso automaticamente para todos os novos pools de nós criados para o cluster:
gcloud container clusters create CLUSTER_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--machine-type=MACHINE_TYPE
Substitua:
CLUSTER_NAME
: o nome do cluster.MACHINE_TYPE
: um tipo de máquina compatível (consulte a linha de virtualização aninhada).
Opcionalmente, verifique se a virtualização aninhada está ativada para um nó no pool de nós.
Agora é possível programar pods que criam VMs aninhadas na VM subjacente do nó.
Ativar a virtualização aninhada com um novo pool de nós
Crie um novo pool de nós com virtualização aninhada ativada para um cluster do Standard que já existe:
gcloud container node-pools create NODEPOOL_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE
Substitua:
NODEPOOL_NAME
: o nome do pool de nós em que a virtualização aninhada está ativada.CLUSTER_NAME
: o nome do cluster.MACHINE_TYPE
: um tipo de máquina compatível (consulte a linha "Virtualização aninhada").
Opcionalmente, verifique se a virtualização aninhada está ativada para um nó no pool de nós.
Agora é possível programar pods que criam VMs aninhadas na VM subjacente do nó.
Programar um pod para um nó compatível com virtualização aninhada
Para programar um pod em um nó com virtualização aninhada ativada, adicione o seguinte seletor de nós à especificação:
nodeSelector:
nested-virtualization: enabled
Além disso, para que o pod se conecte a uma VM aninhada, defina o pod como privilegiado configurando securityContext.privileged:true
.