Este documento destina-se a proprietários de aplicações que usam o VM Runtime no GDC para executar máquinas virtuais (VMs) em clusters criados com o Google Distributed Cloud (apenas software) em hardware simples. Este documento mostra como editar VMs em execução em clusters bare metal. Por exemplo, pode editar a alocação de recursos, como a CPU e a memória, ou alterar a rede à qual uma MV se liga.
Pode modificar qualquer campo na secção spec de um recurso VirtualMachine.
Também pode editar as etiquetas de uma MV. Não é possível editar outros campos, como o nome da VM (metadata.name). Por predefinição, a sua VM tem de estar num estado Stopped
antes de editar o recurso. No entanto, a partir da versão 1.13.0 do Google Distributed Cloud, pode configurar o seu VirtualMachinerecurso para reiniciar automaticamente sempre que alterar a configuração.
Se as edições ao recurso VirtualMachine contiverem erros quando as guardar, as alterações são rejeitadas e é apresentada uma notificação. Corrija os erros e tente guardar novamente o recurso VirtualMachine. Se a VM não for iniciada após fazer alterações, use o comando kubectl describe gvm VM_NAME para ver informações de resolução de problemas e corrigir os erros.
Antes de começar
Para preencher este documento, precisa de ter acesso aos seguintes recursos:
- Uma VM que é executada num dos seus clusters. Se necessário, crie uma VM num cluster bare metal.
- A ferramenta de cliente
virtctlinstalada como um plug-in para okubectl. Se necessário, instale a ferramenta de cliente virtctl.
Edite recursos de computação
Se as exigências da sua carga de trabalho de computação mudarem, pode atualizar o número de CPUs virtuais e a quantidade de memória virtual que atribui às suas VMs. Para editar as cargas de trabalho de computação, conclua os seguintes passos:
Pare a VM que quer editar:
kubectl virt stop VM_NAMESubstitua
VM_NAMEpelo nome da VM que quer parar.Use
kubectlpara editar a VM:kubectl edit gvm VM_NAMESubstitua
VM_NAMEpelo nome da MV que quer editar.No editor, atualize os valores dos recursos de computação que quer alterar.
Por exemplo, o manifesto de amostra seguinte mostra que o recurso de VM tem
2vCPUs atribuídas:VirtualMachineapiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...Se quiser atualizar o número de vCPUs atribuídas, altere o valor no editor, como mostrado no exemplo seguinte:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 4 ...Guarde e feche o manifesto de VM.
Inicie a VM que editou:
kubectl virt start VM_NAMESubstitua
VM_NAMEpelo nome da VM que editou.Verifique o
STATUSda sua VM:kubectl get gvm VM_NAMECertifique-se de que a VM está no estado
Running. Se a sua VM pedir mais recursos de computação do que o anfitrião pode fornecer, a VM não pode ser iniciada. Se a VM não estiver num estadoRunning, verifique o manifesto de recursosVirtualMachinee a disponibilidade de recursos de computação no anfitrião.O exemplo de saída seguinte mostra a VM num estado
Running:NAME STATUS AGE IP vm1 Running 1m 192.168.2.72Veja informações detalhadas sobre uma VM através do comando
kubectl describe gvm:kubectl describe gvm VM_NAMESubstitua
VM_NAMEpelo nome da VM que editou.O exemplo de resultado seguinte mostra as informações condensadas de uma VM, com uma alteração ao número de vCPUs aplicada com êxito:
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 de computação de vCPU e memória específicas.
Edite recursos de disco
Se os seus requisitos de armazenamento mudarem, pode adicionar ou remover discos virtuais de uma VM. Para editar os discos associados à sua VM, conclua os seguintes passos:
Pare a VM que quer editar:
kubectl virt stop VM_NAMESubstitua
VM_NAMEpelo nome da VM que quer parar.Use
kubectlpara editar a VM:kubectl edit gvm VM_NAMESubstitua
VM_NAMEpelo nome da MV que quer editar.No editor, atualize a secção
spec.diskspara anexar ou desanexar discos.Por exemplo, o seguinte manifesto de amostra mostra que apenas um disco de arranque está associado à VM:
VirtualMachineapiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv ...Se quiser adicionar um disco vazio existente, atualize a configuração do disco no editor, conforme mostrado no exemplo seguinte:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv - virtualMachineDiskName: DISK_NAME ...Substitua
DISK_NAMEpelo nome do disco a anexar.Guarde e feche o manifesto de VM.
Inicie a VM que editou:
kubectl virt start VM_NAMESubstitua
VM_NAMEpelo nome da MV que editou.Verifique o
STATUSda sua VM:kubectl get gvm VM_NAMECertifique-se de que a VM está no estado
Running. Se a sua VM pedir uma atribuição deStorageClassou disco que o anfitrião não possa fornecer, a VM não pode ser iniciada. Se a VM não estiver no estadoRunning, verifique os manifestos de recursosVirtualMachineeVirtualMachineDisk, bem como o suporte de armazenamento do anfitrião.Veja informações detalhadas sobre uma VM através do comando
kubectl describe gvm:kubectl describe gvm VM_NAMESubstitua
VM_NAMEpelo nome da MV que editou.O exemplo de resultado seguinte mostra as informações condensadas de uma VM, com uma alteração aos discos anexados aplicada 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 gerir discos.
Edite recursos de rede
À medida que a sua infraestrutura muda, pode querer alterar a configuração de rede de uma VM. Por exemplo, pode querer ligar a VM a uma rede virtual diferente ou atribuir manualmente um endereço IP. Para editar a configuração de rede de uma VM, conclua os seguintes passos:
Pare a VM que quer editar:
kubectl virt stop VM_NAMESubstitua
VM_NAMEpelo nome da VM que quer parar.Use
kubectlpara editar a VM:kubectl edit gvm VM_NAMESubstitua
VM_NAMEpelo nome da VM que quer editar.No editor, atualize as definições de configuração de rede que quer alterar.
Por exemplo, o seguinte manifesto de amostra mostra que a VM se liga a uma rede denominada
backend-vlan100e usa DHCP, uma vez que não está definido nenhum endereço IP:VirtualMachineapiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: backend-vlan100 default: true ...Se quiser alterar a rede à qual a VM se liga ou atribuir um endereço IP manual, atualize a configuração de rede no editor, conforme mostrado no exemplo seguinte:
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_NAMEpelo nome da rede à qual se quer ligar ou adicione a secçãoipAddressese especifique oIP_ADDRESSque a sua VM deve usar.Guarde e feche o manifesto de VM.
Inicie a VM que editou:
kubectl virt start VM_NAMESubstitua
VM_NAMEpelo nome da MV que editou.Verifique o
STATUSda sua VM:kubectl get gvm VM_NAMECertifique-se de que a VM está no estado
Running. Se a sua VM pedir uma ligação de rede que o anfitrião não possa fornecer, a VM não pode ser iniciada. Se a VM não estiver no estadoRunning, verifique o manifesto do recursoVirtualMachinee o suporte da rede anfitriã.Veja informações detalhadas sobre uma VM através do comando
kubectl describe gvm:kubectl describe gvm VM_NAMESubstitua
VM_NAMEpelo nome da MV que editou.O exemplo de resultado seguinte mostra as informações condensadas de uma VM, com uma alteração à configuração de rede e endereço IP aplicada com êxito:
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 mais informações, veja como criar e gerir redes virtuais.
Configure a VM para reinícios automáticos
Muitas alterações de configuração da VM, como alterações às definições do compute, requerem que a VM seja parada e reiniciada para que as alterações sejam sincronizadas com a instância de VM correspondente (VirtualMachineInstance). As VMs executadas em clusters da versão 1.13.0 ou superior podem ser configuradas para serem reiniciadas automaticamente sempre que fizer alterações à respetiva configuração. Quando configura uma VM para usar esta funcionalidade, não precisa de parar e reiniciar uma VM quando edita o respetivo recurso personalizado. O tempo de execução da VM no GDC monitoriza a VM e, se detetar uma alteração de configuração, reinicia a VM automaticamente para sincronizar as alterações.
Se estiver a usar o Config Sync para gerir os seus ficheiros de configuração YAML, esta funcionalidade é especialmente útil. Sem esta funcionalidade, tem de parar manualmente a VM antes de fazer alterações ao recurso personalizado VirtualMachine e iniciar manualmente a VM depois de concluir as alterações.
Para ativar os reinícios automáticos:
Use
kubectlpara editar a VM:kubectl edit gvm VM_NAMENo editor, adicione o campo
autoRestartOnConfigurationChangee defina-o comotrue.Pode fazer alterações adicionais à VM, como atualizar o
vcpusvalor. Se editar as definiçõescompute, o tempo de execução da VM no GDC reinicia a VM automaticamente quando guarda 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 ...Guarde e feche o manifesto de VM.
Se tiver feito outras alterações à VM que precisem de ser sincronizadas com a instância de VM correspondente, o tempo de execução da VM no GDC reinicia a VM. Se só fez a alteração para ativar os reinícios automáticos, não é necessário reiniciar a MV.
Verifique o
statusda sua VM:kubectl get gvm VM_NAMEConsoante a rapidez com que recebe a VM, pode ver
state: Startingquando a VM é reiniciada. Quando a VM é reiniciada com êxito, é apresentadostate: Running. As alterações de configuração subsequentes ao recurso personalizadoVirtualMachinenão exigem que pare e inicie a VM manualmente. As alterações subsequentes ao recurso personalizado refletem-se na instância de VM de forma consistente.
Tenha em atenção o seguinte comportamento das funcionalidades situacionais:
Se parar uma VM manualmente antes de editar o recurso personalizado
VirtualMachine, a alteração da configuração não aciona um reinício. O estado parado da VM antes da alteração da configuração é mantido.Se fez alterações de etiquetas ou agendamento à MV antes de ativar a funcionalidade de reinício automático, a adição de
autoRestartOnConfigurationChangeagora sem qualquer outra alteração não aciona um reinício. Idealmente, esta funcionalidade mantém a instância de VM consistente com a configuração de VM. No entanto, o tempo de execução da VM no GDC não consegue detetar inconsistências anteriores.
O que se segue?
- Crie VMs com configurações de computação de vCPU e memória específicas.
- Crie e faça a gestão de discos.