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 VirtualMachine
recurso 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
virtctl
instalada 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_NAME
Substitua
VM_NAME
pelo nome da VM que quer parar.Use
kubectl
para editar a VM:kubectl edit gvm VM_NAME
Substitua
VM_NAME
pelo 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
2
vCPUs atribuídas:VirtualMachine
apiVersion: 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_NAME
Substitua
VM_NAME
pelo nome da VM que editou.Verifique o
STATUS
da sua VM:kubectl get gvm VM_NAME
Certifique-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 recursosVirtualMachine
e 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.72
Veja informações detalhadas sobre uma VM através do comando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Substitua
VM_NAME
pelo 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_NAME
Substitua
VM_NAME
pelo nome da VM que quer parar.Use
kubectl
para editar a VM:kubectl edit gvm VM_NAME
Substitua
VM_NAME
pelo nome da MV que quer editar.No editor, atualize a secção
spec.disks
para anexar ou desanexar discos.Por exemplo, o seguinte manifesto de amostra mostra que apenas um disco de arranque está associado à VM:
VirtualMachine
apiVersion: 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_NAME
pelo nome do disco a anexar.Guarde e feche o manifesto de VM.
Inicie a VM que editou:
kubectl virt start VM_NAME
Substitua
VM_NAME
pelo nome da MV que editou.Verifique o
STATUS
da sua VM:kubectl get gvm VM_NAME
Certifique-se de que a VM está no estado
Running
. Se a sua VM pedir uma atribuição deStorageClass
ou de 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 recursosVirtualMachine
eVirtualMachineDisk
, 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_NAME
Substitua
VM_NAME
pelo 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_NAME
Substitua
VM_NAME
pelo nome da VM que quer parar.Use
kubectl
para editar a VM:kubectl edit gvm VM_NAME
Substitua
VM_NAME
pelo 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-vlan100
e usa DHCP, uma vez que não está definido nenhum endereço IP:VirtualMachine
apiVersion: 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_NAME
pelo nome da rede à qual se quer ligar ou adicione a secçãoipAddresses
e especifique oIP_ADDRESS
que a sua VM deve usar.Guarde e feche o manifesto de VM.
Inicie a VM que editou:
kubectl virt start VM_NAME
Substitua
VM_NAME
pelo nome da MV que editou.Verifique o
STATUS
da sua VM:kubectl get gvm VM_NAME
Certifique-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 recursoVirtualMachine
e o suporte da rede anfitriã.Veja informações detalhadas sobre uma VM através do comando
kubectl describe gvm
:kubectl describe gvm VM_NAME
Substitua
VM_NAME
pelo 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
kubectl
para editar a VM:kubectl edit gvm VM_NAME
No editor, adicione o campo
autoRestartOnConfigurationChange
e defina-o comotrue
.Pode fazer alterações adicionais à VM, como atualizar o
vcpus
valor. 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
status
da sua VM:kubectl get gvm VM_NAME
Consoante a rapidez com que recebe a VM, pode ver
state: Starting
quando a VM é reiniciada. Quando a VM for reiniciada com êxito, é apresentadostate: Running
. As alterações de configuração subsequentes ao recurso personalizadoVirtualMachine
nã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 à VM antes de ativar a funcionalidade de reinício automático, a adição de
autoRestartOnConfigurationChange
agora 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.