Neste documento, mostramos como ativar ou desativar o ambiente de execução de VM no Google Distributed Cloud
atualizando o recurso personalizado VMRuntime
ou executando comandos bmctl
.
Antes de começar
Para ativar ou desativar o ambiente de execução de VM no GDC, você precisa ter acesso a estes recursos e ferramentas:
- Acesso a um cluster do Google Distributed Cloud 1.12.0 (
anthosBareMetalVersion: 1.12.0
) ou uma versão mais recente. Use qualquer tipo de cluster capaz de executar cargas de trabalho. Se necessário, teste o Google Distributed Cloud no Compute Engine ou consulte a visão geral da criação de clusters. - Ferramenta de linha de comando
bmctl
. Para mais informações, consulte Fazer o download e instalar a ferramentabmctl
.
Ativar o ambiente de execução de VM no GDC
O ambiente de execução de VM no GDC é instalado automaticamente no Google Distributed Cloud 1.10 ou em versões mais recentes, mas está desativado por padrão. Para executar recursos de VM no Google Distributed Cloud, é preciso ativar o ambiente de execução de VM no GDC.
bmctl
Para ativar o ambiente de execução, use a ferramenta
bmctl
:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
Forneça o caminho para o arquivo kubeconfig do cluster. O Google Distributed Cloud gera o arquivo kubeconfig na estação de trabalho de administrador quando você cria um cluster. Por padrão, o caminho é
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
.Se o ambiente de execução de VM no GDC já estiver ativado, o comando vai retornar um erro.
Configurações adicionais, como emulação ou formato de imagem, podem ser definidas
editando o recurso personalizado VMRuntime
.
Recurso personalizado
Para ativar o ambiente de execução, atualize o recurso personalizado VMRuntime
. Esse recurso
personalizado é instalado por padrã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 seção
spec
anterior, os seguintes valores podem ser definidos:enabled
: defina como verdadeiro para ativar o ambiente de execução de VM no GDCuseEmulation
: se o nó não for compatível com a virtualização por hardware ou você não tiver certeza, defina o valor como "true". Se disponível, a virtualização de hardware oferece um desempenho melhor do que a emulação de software. O campouseEmulation
teráfalse
como padrão se não for especificado.vmImageFormat
: compatível com dois valores de formato de imagem de disco:raw
eqcow2
. Se você não definirvmImageFormat
, o ambiente de execução de VM no GDC vai usar o formato de imagem de discoraw
para criar VMs. O formatoraw
pode melhorar o desempenho em relação aoqcow2
, uma cópia no formato de gravação, mas pode usar mais disco. Para mais informações sobre os formatos de imagem da VM, consulte Formatos de arquivo de imagem de disco na documentação do QEMU.
Salve 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 seçãoStatus
. O ambiente de execução de VM no GDC está ativado e funcionando quandoVMRuntime.Status.Ready
aparece comotrue
.
Desativar o ambiente de execução de VM no GDC
Quando não for mais necessário usar o ambiente de execução de VM no GDC, você poderá desativar esse recurso.
bmctl
Para desativar o ambiente de execução, use a ferramenta
bmctl
:bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=true
Forneça o caminho para o arquivo kubeconfig do cluster e os valores das seguintes opções de configuração:
--force
: defina comotrue
para confirmar que você quer excluir os recursos de VM atuais. O valor padrão éfalse
.
Recurso personalizado
Para desativar o ambiente de execução, atualize o recurso personalizado VMRuntime
:
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
Salve a especificação atualizada do recurso personalizado no editor.
Para verificar se o recurso personalizado
VMRuntime
está desativado, confira os pods executados no namespacevm-system
:kubectl get pods --namespace vm-system
O ambiente de execução de VM no GDC está desativado quando apenas os pods que pertencem à implantação
vmruntime-controller-manager
estão em execução no namespace.
Explicação sobre o comportamento de VMs em execução
A anotação baremetal.cluster.gke.io/vmrumtime-force-disable
pode ser usada no
recurso do ambiente de execução de VM no GDC para definir o comportamento quando o ambiente de execução está
desativado enquanto as VMs estão em execução no cluster.
Este exemplo mostra que o valor dessa anotação é definido como false
por padrã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 essa anotação é definida como false
, o ambiente de execução de VM no GDC tenta
proteger as VMs em execução. Exclua todas as VMs em execução antes que o
ambiente de execução de VM no GDC seja desativado ou especifique o parâmetro --force=true
com o comando bmctl disable vmruntime
, conforme mostrado na seção
anterior.
A seguinte tabela explica o que acontece com as VMs em execução quando essa anotação
está definida como true
ou false
e quando o parâmetro --force=true
está ou não
especificado:
Estado do cluster | --force parameter | vmrumtime-force-disable annotation | Comportamento |
---|---|---|---|
Nenhuma VM | N/A | N/A | Desative o ambiente de execução de VM no GDC. |
VMs atuais | Verdadeiro | True | Exclua todas as VMs em execução e os recursos relacionados. Desative o ambiente de execução de VM no GDC. |
True | Falso | Exclua todas as VMs em execução e os recursos relacionados. Desative o ambiente de execução de VM no GDC. | |
Falso | True | Solicitação para excluir VMs em execução e recursos relacionados. Quando todas as VMs em execução forem excluídas, desative o ambiente de execução de VM no GDC. | |
Falso | Falso | Não exclua nenhuma VM atual que esteja em execução. Não desative o
ambiente de execução de VM no GDC. O comando bmctl retorna um
erro. |
Verificação de simulação do ambiente de execução de VM no GDC
A verificação de simulação do ambiente de execução de VM no GDC valida um conjunto de
pré-requisitos no ambiente da máquina antes de usar
o ambiente de execução de VM no GDC e as VMs. A criação de VM será bloqueada se
o ambiente de execução de VM no GDC falhar na verificação de simulação. A
verificação de simulação do ambiente de execução de 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 de simulação do ambiente de execução de VM no GDC é executada quando você executa qualquer uma das seguintes operações:
Ativar o ambiente de execução de VM no GDC
Ativar os recursos do ambiente de execução de VM no GDC, como o useEmulation
Fazer upgrade de clusters
Remover o identificador
kubevm.io/VM-SkipSchedule
nos nósCrie de maneira independente o objeto de verificação de simulação do ambiente de execução de VM no GDC executando o comando
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH
ou aplicando um manifesto YAMLVMRuntimePreflightCheck
.
Você pode iniciar VMs quando a última verificação de simulação do ambiente de execução de VM no GDC for bem-sucedida. Se a verificação de simulação falhar, a criação da VM será bloqueada e você receberá erros de verificação de simulação.
Como verificar o sucesso da verificação da simulação
Para verificar se as verificações de simulação foram bem-sucedidas, execute os seguintes comandos:
Encontre as últimas verificações de simulação realizadas:
kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATH
A saída 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 status de uma verificação de simulaçã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 ...
Falha na verificação da simulação de depuração
Se a verificação de simulação falhar, siga estas etapas para depurar:
Encontre as últimas verificações de simulação realizadas.
kubectl get vmruntimepfc -n vm-system
Verifique o status da verificação de simulação para mais 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 de simulação do ambiente de execução de VM no GDC. Confira este exemplo de manifesto YAML VMRuntimePreflightCheck:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntimePreflightCheck metadata: name: vmruntime-preflight-check-manual namespace: vm-system