En esta página, se describe cómo administrar máquinas virtuales en racks conectados de Google Distributed Cloud que ejecutan el entorno de ejecución de VM en Google Distributed Cloud. Antes de completar los pasos de esta página, debes conocer el entorno de ejecución de VM en GDC. Para obtener una lista de los sistemas operativos invitados compatibles, consulta Sistemas operativos invitados verificados para el entorno de ejecución de VM en GDC.
Para obtener información sobre cómo las máquinas virtuales son un componente esencial de la plataforma conectada de Distributed Cloud, consulta Extiende GKE Enterprise para administrar VMs perimetrales locales.
Los clústeres conectados de Distributed Cloud admiten webhooks de máquina virtual. Esto permite que Distributed Cloud Connected valide las solicitudes de los usuarios realizadas al servidor de la API de Kubernetes local. Las solicitudes rechazadas generan información detallada sobre el motivo del rechazo.
Habilita la compatibilidad con el entorno de ejecución de VM en GDC en Distributed Cloud Connected
De forma predeterminada, la compatibilidad con máquina virtual del entorno de ejecución de VM en GDC está inhabilitada en Distributed Cloud Connected. Para habilitarlo, completa los pasos de esta sección. En las instrucciones de esta sección, se supone que tienes un clúster de Distributed Cloud conectado que funciona correctamente.
Modifica el recurso personalizado
VMRuntimecon el siguiente contenido y aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Enable Anthos VM Runtime support enabled: true # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw" # Set node grace period to 55 seconds; haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
No cambies el valor del parámetro
vmImageFormat. Distributed Cloud Connected no admite ningún otro formato de disco virtual.Este proceso suele tardar varios minutos en completarse.
No cambies el valor del parámetro
vmImageFormat. Distributed Cloud Connected no admite ningún otro formato de disco virtual.Este proceso suele tardar varios minutos en completarse.
Usa el siguiente comando para verificar que el recurso personalizado
VMRuntimese haya aplicado a tu clúster:kubectl get vmruntime -o yaml
El comando muestra un resultado similar al siguiente ejemplo:
- apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime ... spec: enabled: true vmImageFormat: raw status: ... ready: true ...Usa el siguiente comando para verificar que se haya habilitado la compatibilidad con máquina virtual del entorno de ejecución de VM en GDC en tu clúster:
kubectl get pods -n vm-system
El comando devuelve un resultado que muestra los Pods del subsistema de VM Runtime en GDC que se ejecutan en tu clúster, similar al siguiente ejemplo:
NAME READY STATUS RESTARTS AGE cdi-apiserver-6c76c6cf7b-n68wn 1/1 Running 0 132m cdi-deployment-f78fd599-vj7tv 1/1 Running 0 132m cdi-operator-65c4df9647-fcb9d 1/1 Running 0 134m cdi-uploadproxy-7765ffb694-6j7bf 1/1 Running 0 132m macvtap-fjfjr 1/1 Running 0 134m virt-api-77dd99dbbb-bs2fb 1/1 Running 0 132m virt-api-77dd99dbbb-pqc27 1/1 Running 0 132m virt-controller-5b44dbbbd7-hc222 1/1 Running 0 132m virt-controller-5b44dbbbd7-p8xkk 1/1 Running 0 132m virt-handler-n76fs 1/1 Running 0 132m virt-operator-86565697d9-fpxqh 2/2 Running 0 134m virt-operator-86565697d9-jnbt7 2/2 Running 0 134m vm-controller-controller-manager-7844d5fb7b-72d8m 2/2 Running 0 134m vmruntime-controller-manager-845649c847-m78r9 2/2 Running 0 175m
Instala la herramienta de administración de virtctl
Necesitas la herramienta de cliente virtctl para administrar máquinas virtuales en tu clúster conectado a Distributed Cloud. Para instalar la herramienta, completa los siguientes pasos:
Instala la herramienta de cliente
virtctlcomo un complementokubectl:export VERSION=v0.59.0-anthos1.28-gke.8 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl /usr/local/bin/virtctl cd /usr/local/bin sudo ln -s virtctl kubectl-virt sudo chmod a+x virtctl cd -
Verifica que el complemento
virtesté instalado:kubectl plugin list
Si el complemento se instaló correctamente, el resultado del comando mostrará
kubectl-virtcomo uno de los complementos.
Aprovisiona una máquina virtual en Distributed Cloud conectado
En esta sección, se proporcionan ejemplos de configuración que ilustran cómo aprovisionar una máquina virtual de Linux y una máquina virtual de Windows en un clúster conectado de Distributed Cloud con la capa de abstracción de Symcloud Storage.
Ten en cuenta que no puedes crear una máquina virtual en un clúster conectado de Distributed Cloud directamente con el comando kubectl virt, ya que Distributed Cloud Connected no proporciona almacenamiento del sistema de archivos a las máquinas virtuales.
Antes de completar los pasos de esta sección, primero debes completar los pasos en Configura Distributed Cloud Connected para Symcloud Storage. Si más adelante inhabilitas Symcloud Storage en el clúster, fallarán las máquinas virtuales configuradas para usar Symcloud Storage.
Aprovisiona una máquina virtual de Linux en Distributed Cloud conectado
En el siguiente ejemplo, se muestra cómo aprovisionar una máquina virtual de Linux con Symcloud Storage que ejecuta Ubuntu Server 22.04. La fuente de instalación es la imagen ISO del disco de Ubuntu Server 22.04.
Crea un recurso
VirtualMachineDiskcon el siguiente contenido para la imagen de disco de instalación de Ubuntu Server y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: ubuntu-iso-disk spec: size: 20Gi storageClassName: robin diskType: cdrom source: http: url: https://releases.ubuntu.com/jammy/ubuntu-22.04.3-live-server-amd64.iso
Crea un recurso
VirtualMachineDiskcon el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: "ubuntu-main-disk" spec: size: 200Gi storageClassName: robin
Crea un recurso
VirtualMachineTypecon el siguiente contenido que especifica la configuración de la máquina virtual y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Crea un recurso
VirtualMachinecon el siguiente contenido que crea una instancia de la máquina virtual y la inicia en el clúster, y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: ubu-vm name: ubu-vm # Propagate the virtual machine name to the VMI spec: osType: Linux compute: virtualMachineTypeName: small-2-20 interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: ubuntu-main-disk boot: true - virtualMachineDiskName: ubuntu-iso-disk
También debes configurar las siguientes funciones en tu clúster:
Instala Ubuntu Server en la máquina virtual:
- Espera a que el Pod
importerdescargue la imagen de disco de instalación de Ubuntu Server. Verifica el estado de la máquina virtual:
kubectl get gvm VM_NAME
Reemplaza
VM_NAMEpor el nombre de la máquina virtual,ubu-vmen este ejemplo.Accede a la máquina virtual con SSH o Escritorio remoto.
Completa los pasos de instalación de Ubuntu Linux.
- Espera a que el Pod
Limpieza:
Detén la máquina virtual:
kubectl virt stop VM_NAME
Reemplaza
VM_NAMEpor el nombre de la máquina virtual,ubu-vmen este ejemplo.Edita el archivo YAML de la máquina virtual para quitar la referencia a la imagen del disco de instalación:
kubectl edit gvm VM_NAME
Reemplaza
VM_NAMEpor el nombre de la máquina virtual,ubu-vmen este ejemplo.Inicia la máquina virtual:
kubectl virt start VM_NAME
Reemplaza
VM_NAMEpor el nombre de la máquina virtual,ubu-vmen este ejemplo.Borra el recurso
VirtualMachineDiskde la imagen del disco de instalación:kubectl delete virtualmachinedisk ubuntu-iso-disk
Aprovisiona una máquina virtual de Windows en Distributed Cloud conectado
En el siguiente ejemplo, se ilustra cómo aprovisionar una máquina virtual de Windows con Symcloud Storage. Los pasos son similares a los del aprovisionamiento de una máquina virtual de Linux, con la adición de la imagen de disco del controlador virtio, que se requiere para instalar Windows.
Obtén una copia con licencia de Windows y su imagen de medios de instalación.
Crea un recurso
VirtualMachineDiskcon el siguiente contenido para la imagen de disco de instalación de Windows y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso-disk namespace: default spec: size: 5Gi storageClassName: robin diskType: cdrom source: http: url: WINDOWS_ISO_URL
Reemplaza
NAT_GATEWAYpor la URL completa de la imagen ISO del disco de instalación de Windows de destino.Crea un recurso
VirtualMachineDiskcon el siguiente contenido para el controladorvirtioy, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-virtio-driver namespace: default spec: size: 1Gi storageClassName: robin diskType: cdrom source: http: url: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
Crea un recurso
VirtualMachineDiskcon el siguiente contenido para el disco duro virtual de la máquina virtual y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-main-disk namespace: default spec: size: 15Gi storageClassName: robin
Crea un recurso
VirtualMachineTypecon el siguiente contenido que especifica la configuración de la máquina virtual y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Crea un recurso
VirtualMachinecon el siguiente contenido que instancia y, luego, inicia la máquina virtual en el clúster, y, luego, aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: win-vm name: win-vm # Propagate the virtual machine name to the VMI spec: osType: Windows compute: virtualMachineTypeName: my-vmt interfaces: - name: eth0 networkName: my-network default: true disks: - virtualMachineDiskName: windows-main-disk boot: true - virtualMachineDiskName: windows-iso-disk - virtualMachineDiskName: win-virtio-driver
También debes configurar las siguientes funciones en tu clúster:
Instala Windows en la máquina virtual:
- Espera a que el Pod
importerdescargue la imagen del disco de instalación de Windows. Verifica el estado de la máquina virtual:
kubectl get gvm VM_NAME
Reemplaza
VM_NAMEpor el nombre de la máquina virtual,win-vmen este ejemplo.Completa la instalación de Windows siguiendo los pasos que se indican en Conéctate a la VM de Windows y completa la instalación del SO.
- Espera a que el Pod
Limpieza:
Detén la máquina virtual:
kubectl virt stop VM_NAME
Reemplaza
VM_NAMEpor el nombre de la máquina virtual,win-vmen este ejemplo.Completa los pasos en Desconecta la imagen ISO y el disco de controladores.
Administra máquinas virtuales que se ejecutan en Distributed Cloud connected
Si deseas obtener instrucciones para administrar máquinas virtuales que se ejecutan en Distributed Cloud conectado, consulta la siguiente documentación del entorno de ejecución de VM en GDC:
- Conéctate a las VMs
- Enumera y visualiza las VMs
- Administrar el estado de energía
- Edita una VM
- Borra una VM
- Visualiza los registros de la consola de VM
Para administrar las máquinas virtuales que se ejecutan en Distributed Cloud conectado, primero debes configurar la conectividad de kubectl.
Inhabilita el entorno de ejecución de VM en GDC en Distributed Cloud Connected
Sigue los pasos de esta sección para inhabilitar el entorno de ejecución de VM en GDC en Distributed Cloud Connected. Antes de inhabilitar el entorno de ejecución de VMs en GDC en Distributed Cloud conectado, debes detener y borrar todas las máquinas virtuales en tu clúster de Distributed Cloud conectado, como se describe en Borra una VM.
Para inhabilitar el entorno de ejecución de VM en GDC en Distributed Cloud Connected, modifica el recurso personalizado VMRuntime configurando el parámetro de especificación enabled en false de la siguiente manera y, luego, aplícalo a tu clúster:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: # Disable Anthos VM Runtime enabled: false # vmImageFormat defaults to "raw" if not set vmImageFormat: "raw"
Visualiza los registros de auditoría de la zona de pruebas de AppArmor
Distributed Cloud conectado automáticamente aísla en un entorno de pruebas las cargas de trabajo de máquina virtual con políticas de AppArmor en audit-mode. Cuando se produce un incumplimiento de política, se emite una entrada de registro de auditoría.
Por ejemplo:
{
"jsonPayload": {
"_SOURCE_REALTIME_TIMESTAMP": "1734596844149104",
"SYSLOG_TIMESTAMP": "Dec 19 08:27:24 ",
"MESSAGE": "type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"",
"PRIORITY": "6",
...
"SYSLOG_RAW": "<14>Dec 19 08:27:24 audisp-syslog: type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"\n",
"SYSLOG_IDENTIFIER": "audisp-syslog",
"_GID": "0",
},
"timestamp": "2024-12-19T08:27:24.149109Z",
"labels": {
"gke.googleapis.com/log_type": "system"
},
"receiveTimestamp": "2024-12-19T08:27:24.721842807Z"
...
...
¿Qué sigue?
- Administra máquinas virtuales en servidores conectados a Distributed Cloud
- Implementa cargas de trabajo en Distributed Cloud conectado
- Administra cargas de trabajo de GPU
- Administrar zonas
- Administrar máquinas
- Administrar clústeres
- Administra grupos de nodos