El entorno de ejecución de VM en GDC te permite editar las configuraciones de las máquina virtual (VMs), como los recursos de procesamiento, los discos conectados y la configuración de red, a medida que cambian los requisitos de tu carga de trabajo.
Puedes actualizar cualquier campo en la sección spec de un recurso VirtualMachine
y modificar las etiquetas de la VM, pero no se pueden cambiar otros campos, como el nombre de la VM (metadata.name). De forma predeterminada, una VM debe estar en un estado Stopped antes de editarla. Puedes configurar la VM para que se reinicie automáticamente cuando
cambie su configuración.
Antes de comenzar
Para completar este documento, necesitas acceso a los siguientes recursos:
- Una VM que se ejecuta en uno de los clústeres. Si es necesario, crea una VM en un clúster de equipos físicos.
- La herramienta cliente
virtctlinstalada como un complemento parakubectl. Si es necesario, instala la herramienta cliente de virtctl.
Edita recursos de procesamiento
Si la carga de trabajo de cómputo requiere un cambio, puedes actualizar la cantidad de CPUs virtuales y la cantidad de memoria virtual que asignas a las VMs. Para editar tus cargas de trabajo de procesamiento, completa los siguientes pasos:
Detén la VM que deseas editar:
kubectl virt stop VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que deseas detener.Usa
kubectlpara editar la VM:kubectl edit gvm VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que deseas editar.En tu editor, actualiza los valores de los recursos de procesamiento que deseas cambiar.
Por ejemplo, en el siguiente manifiesto
VirtualMachinede muestra, se muestra que el recurso de VM tiene2CPU virtuales asignadas:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 2 ...Si quieres actualizar la cantidad de CPU virtuales asignadas, cambia el valor en tu editor, como se muestra en el siguiente ejemplo:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... compute: cpu: vcpus: 4 ...Guarda y cierra el manifiesto de la VM.
Inicia la VM que editaste:
kubectl virt start VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que editaste.Verifica el
STATUSde tu VM:kubectl get gvm VM_NAMEAsegúrate de que tu VM esté en estado
Running. Si tu VM solicita más recursos de procesamiento de los que el host puede proporcionar, tu VM no se puede iniciar. Si la VM no está en un estadoRunning, verifica el manifiesto de recursosVirtualMachiney la disponibilidad del recurso de procesamiento en el host.En el siguiente resultado de ejemplo, se muestra la VM en un estado
Running:NAME STATUS AGE IP vm1 Running 1m 192.168.2.72Consulta información detallada sobre una VM mediante
kubectl describe gvm:kubectl describe gvm VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que editaste.En el siguiente resultado de ejemplo, se muestra la información resumida de una VM, con un cambio en la cantidad de CPU virtuales aplicado de forma correcta:
Name: vm1 Namespace: default Labels: <none> Annotations: <none> API Version: vm.cluster.gke.io/v1 Kind: VirtualMachine ... Spec: Compute: Cpu: Vcpus: 4 ...
Para obtener más información, consulta cómo crear VM con configuraciones de procesamiento específicas de CPU virtual y memoria.
Edita los recursos del disco
Si los requisitos de almacenamiento cambian, puedes agregar discos virtuales a una VM o quitarlos. Para editar los discos conectados a tu VM, completa los siguientes pasos:
Detén la VM que deseas editar:
kubectl virt stop VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que deseas detener.Usa
kubectlpara editar la VM:kubectl edit gvm VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que deseas editar.En tu editor, actualiza la sección
spec.diskspara conectar o desconectar discos.Por ejemplo, en el siguiente manifiesto
VirtualMachinede muestra, solo hay un disco de arranque conectado a la VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv ...Si deseas agregar un disco vacío existente, actualiza la configuración del disco en tu editor, como se muestra en el siguiente ejemplo:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... disks: - boot: true virtualMachineDiskName: vm1-boot-dv - virtualMachineDiskName: DISK_NAME ...Reemplaza
DISK_NAMEpor el nombre del disco que deseas conectar.Guarda y cierra el manifiesto de la VM.
Inicia la VM que editaste:
kubectl virt start VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que editaste.Verifica el
STATUSde tu VM:kubectl get gvm VM_NAMEAsegúrate de que tu VM esté en estado
Running. Si tu VM solicita unaStorageClasso una asignación de disco que el host no puede proporcionar, no se puede iniciar tu VM. Si la VM no está en un estadoRunning, verifica los manifiestos de recursosVirtualMachineyVirtualMachineDisky la compatibilidad de almacenamiento del host.Consulta información detallada sobre una VM mediante
kubectl describe gvm:kubectl describe gvm VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que editaste.En el siguiente resultado de ejemplo, se muestra la información resumida de una VM, con un cambio en los discos conectados aplicado de forma correcta:
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 ...
Si deseas obtener más información, consulta cómo crear y administrar discos.
Edita recursos de red
A medida que tu infraestructura cambia, es posible que desees cambiar la configuración de red para una VM. Por ejemplo, es posible que desees conectar la VM a una red virtual diferente o asignar una dirección IP de forma manual. Para editar la configuración de red de una VM, completa los siguientes pasos:
Detén la VM que deseas editar:
kubectl virt stop VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que deseas detener.Usa
kubectlpara editar la VM:kubectl edit gvm VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que deseas editar.En tu editor, actualiza los parámetros de configuración de red que deseas cambiar.
Por ejemplo, en el siguiente manifiesto de muestra
VirtualMachine, la VM se conecta a una red llamadabackend-vlan100y usa DHCP, ya que no se define ninguna dirección IP:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: backend-vlan100 default: true ...Si deseas cambiar la red a la que se conecta la VM o asignar una dirección IP manual, actualiza la configuración de red en tu editor, como se muestra en el siguiente ejemplo:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: vm1 spec: ... interfaces: - name: eth0 networkName: NETWORK_NAME ipAddresses: - IP_ADDRESS default: true ...Reemplaza
NETWORK_NAMEpor el nombre de la red a la que deseas conectarte o agrega la secciónipAddressesy especifica laIP_ADDRESSque usará tu VM.Guarda y cierra el manifiesto de la VM.
Inicia la VM que editaste:
kubectl virt start VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que editaste.Verifica el
STATUSde tu VM:kubectl get gvm VM_NAMEAsegúrate de que tu VM esté en estado
Running. Si tu VM solicita una conexión de red que el host no puede proporcionar, tu VM no se puede iniciar. Si la VM no está en un estadoRunning, verifica el manifiesto de recursosVirtualMachiney la compatibilidad de red del host.Consulta información detallada sobre una VM mediante
kubectl describe gvm:kubectl describe gvm VM_NAMEReemplaza
VM_NAMEpor el nombre de la VM que editaste.En el siguiente resultado de ejemplo, se muestra la información resumida de una VM, con un cambio en la configuración de la red y de dirección IP aplicado correctamente:
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 obtener más información, consulta cómo crear y administrar redes virtuales.
Configura tu VM para que se reinicie automáticamente
Muchos cambios en la configuración de la VM, como los cambios en la configuración de compute,
requieren que la VM se detenga y se reinicie para que los cambios se sincronicen
con la instancia de VM correspondiente (VirtualMachineInstance). Las VMs que se ejecutan en
clústeres de la versión 1.13.0 o superior se pueden configurar para que se reinicien
automáticamente cada vez que realices cambios en su configuración. Cuando
configuras una VM para usar esta función, no es necesario que la detengas y reinicies cuando
edites su recurso personalizado. El entorno de ejecución de VM en GDC supervisa la VM y, si
detecta un cambio de configuración, la reinicia de forma automática para sincronizar los
cambios.
Si usas el Sincronizador de configuración para administrar tus archivos de configuración YAML, esta función es especialmente útil. Sin esta función, debes detener la VM de forma manual antes de realizar cambios en el recurso personalizado VirtualMachine y, luego, iniciar la VM de forma manual después de completar los cambios.
Para habilitar los reinicios automáticos, sigue estos pasos:
Usa
kubectlpara editar la VM:kubectl edit gvm VM_NAMEEn el editor, agrega el campo
autoRestartOnConfigurationChangey configúralo comotrue.Puedes realizar cambios adicionales en tu VM, como actualizar el valor de
vcpus. Si editas la configuración decompute, el entorno de ejecución de VM en GDC reinicia la VM de forma automática cuando guardas los cambios.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 ...Guarda y cierra el manifiesto de la VM.
Si realizaste algún otro cambio en la VM que deba sincronizarse con la instancia de VM correspondiente, el entorno de ejecución de VM en GDC reinicia la VM. Si solo realizaste el cambio para habilitar los reinicios automáticos, no es necesario reiniciar la VM.
Verifica el
statusde tu VM:kubectl get gvm VM_NAMESegún la rapidez con la que obtengas la VM, es posible que veas
state: Startingmientras se reinicia. Cuando la VM se haya reiniciado correctamente, verásstate: Running. Los cambios de configuración posteriores en el recurso personalizadoVirtualMachineno requieren que detengas y, luego, inicies la VM de forma manual. Los cambios posteriores en el recurso personalizado se reflejan en la instancia de VM de manera coherente.
Ten en cuenta el siguiente comportamiento de las funciones situacionales:
Si detienes una VM de forma manual antes de editar el recurso personalizado
VirtualMachine, el cambio de configuración no activa un reinicio. El estado detenido de la VM antes de que se conserve el cambio de configuración.Si realizaste cambios en la etiqueta o la programación de la VM antes de habilitar la función de reinicio automático, agregar
autoRestartOnConfigurationChangeahora sin ningún otro cambio no activará un reinicio. Idealmente, esta función mantiene la instancia de VM coherente con la configuración de la VM. Sin embargo, el entorno de ejecución de VM en GDC no puede detectar inconsistencias anteriores.
Soluciona problemas relacionados con las ediciones de VMs
Si tus ediciones en el recurso VirtualMachine contienen errores cuando los guardas, los cambios se rechazan y ves una notificación. Corrige los errores e intenta guardar el recurso VirtualMachine nuevamente. Si tu VM no se inicia después de realizar cambios, usa el comando kubectl describe gvm VM_NAME para ver la información de solución de problemas y corregir los errores.