Este documento destina-se a proprietários de aplicativos que usam o ambiente de execução de VMs no Google Distributed Cloud para executar máquinas virtuais (VMs) no GKE em Bare Metal. Neste documento, mostramos como editar VMs em execução nos cluster do GKE. Por exemplo, é possível editar a alocação de recursos, como CPU e memória, ou alterar a rede a que uma VM se conecta.
É possível modificar qualquer campo na seção spec
de um recurso VirtualMachine
.
Também é possível editar os rótulos de uma VM. Outros campos, como o nome da VM
(metadata.name
), não podem ser editados. Por padrão, a VM precisa estar no estado Stopped
antes de editar o recurso. No entanto, a partir do GKE em Bare Metal versão 1.13.0, é possível configurar o recurso VirtualMachine
para reiniciar automaticamente sempre que você alterar a
configuração.
Se as edições no recurso VirtualMachine
tiverem erros quando você as salvar,
as mudanças serão recusadas, e você verá uma notificação. Corrija os erros e tente salvar o recurso VirtualMachine
novamente. Se a VM não
iniciar depois que você fizer alterações, use o
comando kubectl describe gvm VM_NAME
para
ver informações de solução de problemas e corrigir os erros.
Antes de começar
Para concluir este documento, você precisa de acesso aos seguintes recursos:
- Uma VM executada em um dos clusters. Se necessário, crie uma VM no GKE em Bare Metal.
- A ferramenta do cliente
virtctl
instalada como um plug-in para okubectl
. Se necessário, instale a ferramenta de cliente virtctl.
Editar recursos de computação
Se as demandas de carga de trabalho de computação mudarem, será possível atualizar o número de CPUs virtuais e a quantidade de memória virtual atribuída às VMs. Para editar suas cargas de trabalho de computação, siga as seguintes etapas:
Pare a VM que você quer editar:
kubectl virt stop VM_NAME
Substitua
VM_NAME
pelo nome da VM que você quer interromper.Use
kubectl
para editar a VM:kubectl edit gvm VM_NAME
Substitua
VM_NAME
pelo nome da VM que você quer iniciar.No editor, atualize os valores dos recursos de computação que você quer alterar.
Por exemplo, o manifesto de amostra
VirtualMachine
a seguir mostra que o recurso da VM tem2
vCPUs atribuídas:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...
Se você quiser atualizar o número de vCPUs atribuídas, altere o valor no editor, como mostrado no exemplo a seguir:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 4 ...
Salve e feche o manifesto da VM.
Inicie a VM que você editou:
kubectl virt start VM_NAME
Substitua
VM_NAME
pelo nome da VM que você editou.Verifique o
STATUS
da sua VM:kubectl get gvm VM_NAME
Verifique se a VM está no estado
Running
. Se a VM solicitar mais recursos de computação do que o host pode fornecer, a VM não poderá ser iniciada. Se a VM não estiver no estadoRunning
, verifique o manifesto do recursoVirtualMachine
e a disponibilidade do recurso de computação no host.O exemplo de saída a seguir mostra a VM em um estado
Running
NAME STATUS AGE IP vm1 Running 1m 192.168.2.72
Veja informações detalhadas sobre uma VM usando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Substitua
VM_NAME
pelo nome da VM que você editou.O exemplo de saída a seguir mostra as informações condensadas de uma VM, com uma alteração no número de vCPUs aplicadas:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Cpu: Vcpus: 4 ...
Para mais informações, veja como criar VMs com configurações específicas de computação de vCPU e memória.
Editar recursos de disco
Se os requisitos de armazenamento mudarem, será possível adicionar ou remover discos virtuais de uma VM. Para editar os discos anexados à sua VM, siga estas etapas:
Pare a VM que você quer editar:
kubectl virt stop VM_NAME
Substitua
VM_NAME
pelo nome da VM que você quer interromper.Use
kubectl
para editar a VM:kubectl edit gvm VM_NAME
Substitua
VM_NAME
pelo nome da VM que você quer iniciar.No editor, atualize a seção
spec.disks
para anexar ou desanexar discos.Por exemplo, o exemplo de manifesto
VirtualMachine
a seguir mostra que apenas um disco de inicialização está anexado à VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv ...
Se você quiser adicionar um disco vazio, atualize a configuração do disco no editor, conforme mostrado no exemplo a seguir:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv - virtualMachineDiskName: DISK_NAME ...
Substitua
DISK_NAME
pelo nome do disco a ser anexado.Salve e feche o manifesto da VM.
Inicie a VM que você editou:
kubectl virt start VM_NAME
Substitua
VM_NAME
pelo nome da VM que você editou.Verifique o
STATUS
da sua VM:kubectl get gvm VM_NAME
Verifique se a VM está no estado
Running
. Se a VM solicitar umaStorageClass
ou atribuição de disco que o host não possa fornecer, a VM não será iniciada. Se a VM não estiver no estadoRunning
, verifique os manifestos de recursos deVirtualMachine
eVirtualMachineDisk
e o suporte ao armazenamento do host.Veja informações detalhadas sobre uma VM usando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Substitua
VM_NAME
pelo nome da VM que você editou.O exemplo de saída a seguir mostra as informações condensadas de uma VM, com uma alteração nos discos anexados aplicados com êxito:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Disks: Name: vm1-boot-dv Name: data-disk-01 ...
Para mais informações, veja como criar e gerenciar discos.
Editar recursos de rede
À medida que sua infraestrutura é alterada, talvez seja necessário alterar a configuração de rede de uma VM. Por exemplo, é possível conectar a VM a uma rede virtual diferente ou atribuir manualmente um endereço IP. Para editar a configuração de rede de uma VM, siga estas etapas:
Pare a VM que você quer editar:
kubectl virt stop VM_NAME
Substitua
VM_NAME
pelo nome da VM que você quer interromper.Use
kubectl
para editar a VM:kubectl edit gvm VM_NAME
Substitua
VM_NAME
pelo nome da VM que você quer iniciar.No editor, atualize as configurações de rede que você quer mudar.
Por exemplo, o manifesto de amostra
VirtualMachine
a seguir mostra que a VM se conecta a uma rede chamadabackend-vlan100
e usa DHCP porque nenhum endereço IP está definido:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: backend-vlan100 default: true ...
Se você quiser alterar a rede a que a VM se conecta ou atribuir um endereço IP manual, atualize a configuração de rede no editor, conforme mostrado no exemplo a seguir:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true ...
Substitua
NETWORK_NAME
pelo nome da rede a que se conectar ou adicione a seçãoipAddresses
e especifique oIP_ADDRESS
a ser usado pela VM.Salve e feche o manifesto da VM.
Inicie a VM que você editou:
kubectl virt start VM_NAME
Substitua
VM_NAME
pelo nome da VM que você editou.Verifique o
STATUS
da sua VM:kubectl get gvm VM_NAME
Verifique se a VM está no estado
Running
. Se a VM solicitar uma conexão de rede que o host não possa fornecer, a VM não será iniciada. Se a VM não estiver no estadoRunning
, verifique o manifesto do recurso deVirtualMachine
e o suporte à rede do host.Veja informações detalhadas sobre uma VM usando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Substitua
VM_NAME
pelo nome da VM que você editou.O exemplo de saída a seguir mostra as informações condensadas de uma VM, com uma mudança na configuração de rede e endereço IP aplicada com sucesso:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Interfaces: Name: eth0 Network Name: backend-vlan200 ... Status: ... Interfaces: Dns Config: Nameservers: 8.8.8.8 gateway4: 10.200.0.9 Ip Addresses: 10.200.0.22/24 Mac Address: 22:b4:e3:d2:ef:fb Name: eth0 Resource Name: vm1-eth0-f2468 ...
Para saber mais, veja como criar e gerenciar redes virtuais.
Configurar a VM para reinicializações automáticas
Muitas alterações na configuração da VM, como mudanças nas configurações de compute
,
exigem que a VM seja interrompida e reiniciada para que as alterações sejam sincronizadas
com a instância de VM correspondente (VirtualMachineInstance
). As VMs em execução no GKE em Bare Metal versão 1.13.0 ou mais recente podem ser configuradas para reiniciar
automaticamente sempre que você fizer mudanças na configuração. Ao configurar uma VM para usar esse recurso, não é necessário interromper e reiniciar uma VM ao editar o recurso personalizado dela. O ambiente de execução de VMs no Google Distributed Cloud monitora a VM e, se
detectar uma alteração de configuração, reinicia a VM automaticamente para sincronizar as
mudanças.
Se você estiver usando o Gerenciamento de configurações para gerenciar seus arquivos de configuração YAML, esse recurso será especialmente útil. Sem esse recurso, é necessário parar
a VM manualmente antes de fazer alterações no recurso personalizado VirtualMachine
e iniciar a VM manualmente depois de concluir as alterações.
Para ativar as reinicializações automáticas, siga estas etapas:
Use
kubectl
para editar a VM:kubectl edit gvm VM_NAME
No editor, adicione o campo
autoRestartOnConfigurationChange
e defina-o comotrue
.É possível fazer outras alterações na VM, como atualizar o valor de
vcpus
. Se você editar as configurações decompute
, o ambiente de execução de VMs no Google Distributed Cloud reiniciará a VM automaticamente ao salvar as alterações.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: ... name: vm-sample-01 namespace: default resourceVersion: "16711824" uid: ed623879-0cfa-52de-ad2c-b63308e6116c spec: autoRestartOnConfigurationChange: true compute: cpu: vcpus: 2 ...
Salve e feche o manifesto da VM.
Se você precisa sincronizar outras alterações na VM com a instância de VM correspondente, o ambiente de execução de VMs no Google Distributed Cloud reinicia a VM. Se você fez a mudança apenas para ativar as reinicializações automáticas, não é preciso reiniciar a VM.
Verifique o
status
da sua VM:kubectl get gvm VM_NAME
Dependendo da velocidade em que a VM é recebida, é possível ver
state: Starting
à medida que a VM é reiniciada. Quando a VM for reiniciada, você verástate: Running
. As alterações de configuração subsequentes no recurso personalizadoVirtualMachine
não exigem que você pare e inicie a VM manualmente. As alterações subsequentes no recurso personalizado são refletidas na instância da VM de maneira consistente.
Observe o seguinte comportamento situacional de recursos:
Se você interromper uma VM manualmente antes de editar o recurso personalizado
VirtualMachine
, a alteração de configuração não acionará uma reinicialização. O estado interrompido da VM antes de persistir a mudança de configuração.Se você fez alterações no rótulo ou na programação da VM antes de ativar o recurso de reinicialização automática, adicionar
autoRestartOnConfigurationChange
agora sem nenhuma outra alteração não acionará uma reinicialização. O ideal é que esse recurso mantenha a instância de VM consistente com a configuração da VM. No entanto, o ambiente de execução de VMs no Google Distributed Cloud não consegue detectar inconsistências anteriores.
A seguir
- Crie VMs com configurações específicas de computação de vCPU e memória no GKE em Bare Metal.
- Crie e gerencie discos no GKE em Bare Metal.