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_PATH
Indique 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 vmruntime
Defina
enabled:true
na 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: qcow2
Na secção
spec
anterior, 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 campouseEmulation
tem como predefinição o valorfalse
, se não for especificado.vmImageFormat
: suporta dois valores de formato de imagem de disco:raw
eqcow2
. Se não definirvmImageFormat
, o tempo de execução da VM no GDC usa o formato de imagem de discoraw
para criar VMs. O formatoraw
pode 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
VMRuntime
está ativado:kubectl describe vmruntime vmruntime
Os detalhes do recurso personalizado
VMRuntime
incluem 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=true
Indique o caminho para o ficheiro kubeconfig do cluster e os valores das seguintes opções de configuração:
--force
: defina comotrue
para 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 vmruntime
Defina
enabled:false
na especificação:apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2
Guarde a especificação de recursos personalizados atualizada no editor.
Para verificar se o recurso personalizado
VMRuntime
está desativado, veja os pods que são executados no espaço de nomesvm-system
:kubectl get pods --namespace vm-system
O tempo de execução da VM no GDC está desativado quando apenas os pods que pertencem à implementação
vmruntime-controller-manager
estã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-SkipSchedule
nos nósCrie independentemente o VM Runtime no objeto de verificação prévia do GDC executando o comando
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH
ou 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_PATH
O 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 21s
Para 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-system
Verifique 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