Este documento mostra como ativar ou desativar o tempo de execução da VM no Google Distributed Cloud
atualizando o recurso personalizado VMRuntime ou executando comandos bmctl.
Antes de começar
Para ativar ou desativar o VM Runtime no GDC, precisa de aceder aos seguintes recursos e ferramentas:
- Acesso ao cluster da versão 1.12.0 (
anthosBareMetalVersion: 1.12.0) ou superior do Google Distributed Cloud. Pode usar qualquer tipo de cluster capaz de executar cargas de trabalho. Se necessário, experimente o Google Distributed Cloud no Compute Engine ou consulte a vista geral da criação de clusters. - A ferramenta de linhas de comandos
bmctl. Para mais informações, consulte o artigo Transfira e instale a ferramentabmctl.
Ative o tempo de execução de VMs no GDC
O tempo de execução da VM no GDC é instalado automaticamente no Google Distributed Cloud versão 1.10 ou superior, mas está desativado por predefinição. Antes de poder executar recursos de VMs no Google Distributed Cloud, tem de ativar o VM Runtime no GDC.
bmctl
Para ativar o tempo de execução, use a ferramenta
bmctl:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATHIndique o caminho para o ficheiro kubeconfig do seu cluster. O Google Distributed Cloud gera o ficheiro kubeconfig na estação de trabalho do administrador quando cria um cluster. Por predefinição, o caminho é
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig.Se o tempo de execução da VM no GDC já estiver ativado, o comando devolve um erro.
Pode configurar definições adicionais, como as de emulação ou formato de imagem, editando o recurso personalizado VMRuntime.
Recurso personalizado
Para ativar o tempo de execução, atualize o VMRuntime recurso personalizado. Este recurso personalizado é instalado por predefinição.
Edite o recurso personalizado
VMRuntime:kubectl edit vmruntimeDefina
enabled:truena especificação:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: enabled: true # useEmulation defaults to "false" if not set. useEmulation: true # vmImageFormat defaults to "qcow2" if not set. vmImageFormat: qcow2Na secção
specanterior, podem ser definidos os seguintes valores:enabled: definido como verdadeiro para ativar o tempo de execução da VM no GDCuseEmulation: se o seu nó não suportar a virtualização de hardware ou não tiver a certeza, defina o valor como verdadeiro. Se estiver disponível, a virtualização de hardware oferece um melhor desempenho do que a emulação de software. O campouseEmulationtem como predefinição o valorfalse, se não for especificado.vmImageFormat: suporta dois valores de formato de imagem de disco:raweqcow2. Se não definirvmImageFormat, o tempo de execução da VM no GDC usa o formato de imagem de discorawpara criar VMs. O formatorawpode oferecer um desempenho melhorado em relação ao formatoqcow2, um formato de cópia na gravação, mas pode usar mais espaço em disco. Para mais informações sobre os formatos de imagem da sua VM, consulte Formatos de ficheiros de imagem de disco na documentação do QEMU.
Guarde o recurso personalizado no editor.
Verifique se o recurso personalizado
VMRuntimeestá ativado:kubectl describe vmruntime vmruntimeOs detalhes do recurso personalizado
VMRuntimeincluem uma secçãoStatus. O tempo de execução da VM no GDC está ativado e a funcionar quandoVMRuntime.Status.Readyé apresentado comotrue.
Desative o VM Runtime no GDC
Quando já não precisar de usar o VM Runtime no GDC, pode desativar esta funcionalidade.
bmctl
Para desativar o tempo de execução, use a ferramenta
bmctl:bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=trueIndique o caminho para o ficheiro kubeconfig do cluster e os valores das seguintes opções de configuração:
--force: defina comotruepara confirmar que quer eliminar os recursos de VM existentes. O valor predefinido éfalse.
Recurso personalizado
Para desativar o tempo de execução, atualize o VMRuntime recurso personalizado:
Edite o recurso personalizado
VMRuntime:kubectl edit vmruntimeDefina
enabled:falsena especificação:apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2Guarde a especificação de recursos personalizados atualizada no editor.
Para verificar se o recurso personalizado
VMRuntimeestá desativado, veja os pods que são executados no espaço de nomesvm-system:kubectl get pods --namespace vm-systemO tempo de execução da VM no GDC está desativado quando apenas os pods que pertencem à implementação
vmruntime-controller-managerestão em execução no espaço de nomes.
Compreenda o comportamento para executar VMs
A anotação baremetal.cluster.gke.io/vmrumtime-force-disable pode ser usada no recurso VM Runtime no GDC para definir o comportamento quando o tempo de execução é desativado enquanto as VMs estão em execução no cluster.
O exemplo seguinte mostra que o valor desta anotação está definido como false
por predefinição:
// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
annotations:
baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
name: vmruntime
[...]
Quando esta anotação está definida como false, o tempo de execução da VM no GDC tenta proteger as VMs em execução. Elimine todas as VMs em execução antes de o tempo de execução de VMs no GDC ser desativado ou especifique o parâmetro --force=true
com o comando bmctl disable vmruntime, conforme mostrado na secção anterior.
A tabela seguinte explica o que acontece às VMs em execução quando esta anotação
está definida como true ou false e se especifica o parâmetro --force=true ou não:
| Estado do cluster | Parâmetro --force | vmrumtime-force-disable annotation | Comportamento |
|---|---|---|---|
| Nenhuma VM | N/A | N/A | Desative o tempo de execução de VMs no GDC. |
| VMs existentes | True | True | Eliminar todas as VMs em execução e os recursos relacionados. Desative o tempo de execução de VMs no GDC. |
| True | Falso | Eliminar todas as VMs em execução e os recursos relacionados. Desative o tempo de execução de VMs no GDC. | |
| Falso | True | Pede para eliminar VMs em execução e recursos relacionados. Quando todas as VMs em execução forem eliminadas, desative o VM Runtime no GDC. | |
| Falso | Falso | Não elimine nenhuma VM existente em execução. Não desative o tempo de execução de VMs no GDC. O comando bmctl devolve um erro. |
Verificação prévia do tempo de execução da VM no GDC
A verificação prévia do tempo de execução da VM no GDC valida um conjunto de pré-requisitos no ambiente da máquina antes de usar o tempo de execução da VM no GDC e nas VMs. A criação de VMs é bloqueada se a verificação prévia do tempo de execução de VMs no GDC falhar. A verificação prévia do tempo de execução da VM no GDC é executada automaticamente quando spec.enabled está definido como verdadeiro.
kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH
A verificação prévia do tempo de execução da VM no GDC é executada quando realiza qualquer uma das seguintes operações:
Ative o tempo de execução de VMs no GDC
Ative o tempo de execução de VMs nas funcionalidades do GDC, como useEmulation
Atualize clusters
Remova a etiqueta
kubevm.io/VM-SkipSchedulenos nósCrie independentemente o VM Runtime no objeto de verificação prévia do GDC executando o comando
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATHou aplicando um manifesto YAMLVMRuntimePreflightCheck.
Pode iniciar VMs quando a pré-verificação do tempo de execução da VM mais recente no GDC for bem-sucedida. Se a verificação prévia falhar, a criação da VM é bloqueada e recebe erros de verificação prévia.
Validar o êxito da verificação prévia
Para verificar se as verificações pré-voo foram bem-sucedidas, execute os seguintes comandos:
Encontre as últimas verificações pré-publicação realizadas:
kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATHO resultado deve ser semelhante ao seguinte exemplo:
NAME PASS AGE vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e false 42s vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 true 21sPara encontrar o estado de uma verificação pré-publicação, execute o seguinte comando:
kubectl get vmruntime vmruntime -o yaml --kubeconfig KUBECONFIG_PATH... preflightCheckSummary: preflightCheckSummary: featureStatuses: CPU: passed: true KVM: passed: true preflightCheckName: vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 preflightCheckPassed: true ...
Falhas na verificação prévia de depuração
Se a verificação prévia falhar, siga estes passos para depurar:
Encontre as últimas verificações pré-voo realizadas.
kubectl get vmruntimepfc -n vm-systemVerifique o estado dessa verificação pré-voo para ver detalhes.
kubectl get vmruntimepfc -n vm-system \ vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e -o yaml \ --kubeconfig KUBECONFIG_PATH... status: checks: worker-0--52229ee15841099-22c41577139a7b8c.lab.anthos: passed: false results: - checkName: CPU passed: true - checkName: KVM message: | command terminated with exit code 1 ls: /mnt/dev/kvm: No such file or directory passed: false ...Corrija o problema e execute novamente a verificação prévia do tempo de execução da VM no GDC. O exemplo seguinte mostra um manifesto YAML VMRuntimePreflightCheck:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntimePreflightCheck metadata: name: vmruntime-preflight-check-manual namespace: vm-system