En esta página, se describe cómo administrar máquinas virtuales en servidores conectados de Google Distributed Cloud que ejecutan VM Runtime 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.
Configura Symcloud Storage
Los servidores conectados de Google Distributed Cloud usan Rakuten Symcloud Storage como solución de almacenamiento. Symcloud Storage es una solución de terceros que actúa como una capa de abstracción de almacenamiento local en cada nodo conectado de Distributed Cloud y pone su almacenamiento local a disposición de las cargas de trabajo que se ejecutan en otros nodos conectados de Distributed Cloud.
Symcloud Storage se implementa desde Google Cloud Marketplace y está sujeto a las condiciones que se indican allí. Google proporciona asistencia limitada para usar Symcloud Storage con Distributed Cloud conectado y puede contratar al proveedor externo para obtener asistencia. Las actualizaciones de software de Symcloud Storage se incluyen en las actualizaciones de software conectadas de Distributed Cloud.
Configura tu clúster conectado de Google Distributed Cloud de la siguiente manera para habilitar Symcloud Storage para máquinas virtuales:
Crea el espacio de nombres
robiniocon el siguiente comando:kubectl create ns robinio
Obtén el archivo de licencia de Symcloud Storage y aplícalo al clúster con el siguiente comando:
kubectl apply LICENSE_FILE
Verifica que Symcloud Storage esté en funcionamiento con el siguiente comando:
kubectl apply LICENSE_FILE
El comando muestra un resultado similar al siguiente:
Name: robin Namespace: Labels: app.kubernetes.io/instance=robin app.kubernetes.io/managed-by=robin.io app.kubernetes.io/name=robin Annotations: <none> API Version: manage.robin.io/v1 Kind: RobinCluster Metadata: … Spec: … Status: … Phase: Ready …Aplica la siguiente configuración al clúster para crear la clase de almacenamiento
robin-block-immediate:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: robin-block-immediate parameters: faultdomain: host replication: "3" blocksize: "512" provisioner: robin reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true
Crea la clase de instantánea de volumen
robin-snapshotclassaplicando la siguiente configuración al clúster:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: robin-snapshotclass labels: app.kubernetes.io/instance: robin app.kubernetes.io/managed-by: robin.io app.kubernetes.io/name: robin annotations: snapshot.storage.kubernetes.io/is-default-class: "true" driver: robin deletionPolicy: Delete
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á habilitada en Distributed Cloud Connected. Si necesitas habilitarlo de forma manual, 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. Para inhabilitar la compatibilidad con máquina virtual de VM Runtime en tu clúster de GDC, deshace los cambios que se describen en esta sección.
Para habilitar el entorno de ejecución de VM en el subsistema de máquina virtual de GDC, completa los siguientes pasos:
Modifica el recurso personalizado
VMRuntimecon el siguiente contenido y aplícalo a tu clúster:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: annotations: baremetal.cluster.gke.io/vmrumtime-force-disable: "false" vm.cluster.gke.io/enable-vm-backup: "true" spec: enabled: true storage: defaultStorageClass: robin-block-immediate haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
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
El comando muestra un resultado similar al siguiente ejemplo:
NAME AGE ENABLED READY PREFLIGHTCHECK vmruntime 5m true true trueModifica el
storageprofilepara la clase de almacenamientorobin-block-immediatecon el siguiente contenido y aplícalo a tu clúster:apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: robin-block-immediate spec: claimPropertySets: accessModes: ReadWriteMany volumeMode: Block
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.
Crea un bucket de Cloud Storage para las imágenes de máquina virtual
Completa los pasos de esta sección para crear un bucket de Cloud Storage para las imágenes de tu máquina virtual. Si ya tienes un repositorio de imágenes establecido, omite esta sección.
Completa los pasos en Crea buckets para crear un bucket.
Configura una cuenta de servicio y una clave para acceder al bucket con los siguientes comandos:
export PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts create image-access gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:image-access@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer" \ gcloud iam service-accounts keys create ./image-access-gcr.json \ --iam-account="image-access@${PROJECT_ID}.iam.gserviceaccount.com"
Crea un secreto en el clúster para acceder al bucket. Si tu bucket es público, omite este paso. Este secreto debe existir en el mismo espacio de nombres que los discos de tu máquina virtual. Debes crear un secreto en cada espacio de nombres afectado.
kubectl create secret generic gcs-image-sa --from-file=creds-gcp.json=./image-access-gcr.json -n NAMESPACE
Reemplaza
CLUSTER_IDpor el nombre del espacio de nombres de destino.Almacena tus imágenes en el bucket.
Crea un disco de máquina virtual a partir de una imagen de máquina virtual
Completa los pasos de esta sección para crear un disco de máquina virtual a partir de una imagen de máquina virtual.
Crea un disco a partir de una imagen almacenada en Cloud Storage
Crea un disco de máquina virtual a partir de una máquina virtual almacenada en tu bucket de Cloud Storage aplicando la siguiente configuración a tu clúster:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: gcs: url: gs://{PROJECT_ID}-vm-images/IMAGE_FILE secretRef: gcs-image-sa size: DISK_SIZE storageClassName: robin-block-immediate
Reemplaza lo siguiente:
DISK_NAME: Es el nombre de este disco de máquina virtual.NAMESPACE: Es el espacio de nombres de destino.IMAGE_FILE: Es el nombre del archivo de imagen de la máquina virtual.DISK_SIZE: Es el tamaño de disco deseado. Este valor debe ser mayor que el valorvirtual-sizedel archivo de imagen de la máquina virtual. Puedes encontrar este valor con el comandoqemu-img info DISK_SIZE.
Si no especificas un valor de storageClassName, se usa el valor predeterminado especificado en el recurso VMRuntime.
Crea un disco a partir de una imagen de disco existente
Sigue estos pasos para crear un disco de máquina virtual a partir de un disco o archivo de imagen de máquina virtual existente en tu clúster.
Aplica la siguiente configuración a tu clúster para crear el disco de destino:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: IMAGE_DISK_NAME namespace: NAMESPACE spec: source: virtualMachineDisk: name: EXISTING_DISK_NAME size: DISK_SIZE storageClassName: robin-block-immediate
Reemplaza lo siguiente:
IMAGE_DISK_NAME: Es el nombre de este disco de máquina virtual.NAMESPACE: Es el espacio de nombres de destino.EXISTING_DISK_NAME: Es el nombre del disco de máquina virtual existente.DISK_SIZE: Es el tamaño de disco deseado. Este valor debe ser igual o mayor que el tamaño del disco o archivo de imagen existente.
Puedes obtener el tamaño de tu disco o archivo de imagen existente con la herramienta
qemu-imgde la siguiente manera:qemu-img info EXISTING_DISK_NAME
Si no especificas un valor de
storageClassName, se usa el valor predeterminado especificado en el recursoVMRuntime.Crea un disco nuevo a partir de tu archivo de imagen existente aplicando la siguiente configuración a tu clúster:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: virtualMachineDisk: name: IMAGE_DISK_NAME size: DISK_SIZE storageClassName: robin-block-immediate
Reemplaza lo siguiente:
IMAGE_DISK_NAME: Es el nombre del disco de la máquina virtual que creaste en el paso anterior.NAMESPACE: Es el espacio de nombres de destino.DISK_SIZE: Es el tamaño de disco deseado. Debe ser igual al tamaño del disco de la máquina virtual que creaste en el paso anterior.
Cambia el tamaño del disco de destino al tamaño deseado con el siguiente comando:
kubectl edit gdisk DISK_NAME -n NAMESPACE
Reemplaza lo siguiente:
DISK_NAME: Es el nombre del disco de la máquina virtual que creaste en el paso anterior.NAMESPACE: Es el espacio de nombres de destino.
Modifica el valor de
spec.sizeen la configuración del disco y aplícalo a tu clúster.
Crea un disco vacío
Aplica la siguiente configuración a tu clúster para crear un disco de máquina virtual vacío:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: size: DISK_SIZE storageClassName: robin-block-immediate
Reemplaza lo siguiente:
DISK_NAME: Es el nombre de este disco de máquina virtual.NAMESPACE: Es el espacio de nombres de destino.DISK_SIZE: Es el tamaño de disco deseado en gibibytes. Este valor debe ser mayor que el valorvirtual-sizedel archivo de imagen de la máquina virtual. Puedes encontrar este valor con el comandoqemu-img info DISK_SIZE.
Si no especificas un valor de storageClassName, se usa el valor predeterminado especificado en el recurso VMRuntime.
Configura redes virtuales
Sigue los pasos que se indican en Networking para configurar las redes virtuales de tus máquinas virtuales.
Crea una máquina virtual
Completa los pasos de esta sección para crear una máquina virtual en la implementación del servidor conectado de Distributed Cloud. Las instrucciones de esta sección son ejemplos destinados a ilustrar configuraciones para diferentes situaciones. Para obtener información detallada sobre la configuración de máquinas virtuales, consulta Crea una VM con recursos de CPU y memoria específicos usando el entorno de ejecución de VM en GDC.
Crea una máquina virtual a partir de una imagen de disco de arranque
Para crear una máquina virtual a partir de una imagen de disco de arranque, aplica la siguiente configuración a tu clúster:
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux/Windows guestEnvironment: {} // comment out this line to enable guest environment for access management autoRestartOnConfigurationChange: true compute: cpu: vcpus: 6 memory: capacity: 8Gi interfaces: - name: eth0 networkName: network-410 ipAddresses: - 10.223.237.10/25 disks: - virtualMachineDiskName: my-boot-disk boot: true - virtualMachineDiskName: my-data-disk
Reemplaza lo siguiente:
DISK_NAME: Es el nombre de este disco de máquina virtual.NAMESPACE: Es el espacio de nombres de destino.
Crea una máquina virtual a partir de una imagen de disco óptico ISO
Para crear una máquina virtual a partir de una imagen de disco óptico ISO, completa los pasos que se indican en Crea una VM de Windows a partir de una imagen ISO en Google Distributed Cloud.
Crea una máquina virtual con asistencia de GPU
Completa los pasos que se describen en esta página para crear una máquina virtual configurada de acuerdo con los requisitos de tu empresa y, luego, completa los pasos que se indican en Configura una máquina virtual para usar recursos de GPU.
Accede a una máquina virtual
Completa los pasos de esta sección para acceder a una máquina virtual que se ejecuta en la implementación del servidor conectado de Distributed Cloud.
Obtén credenciales de acceso
Completa los pasos de esta sección para obtener las credenciales necesarias para acceder a tu máquina virtual con la función de entorno invitado de Linux.
Aplica la siguiente configuración a tu clúster para habilitar el entorno invitado de Linux en la máquina virtual de destino:
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux guestEnvironment: {} autoRestartOnConfigurationChange: true
Genera un archivo
id_rsa.pubque contenga un par de claves SSH con el siguiente comando:ssh-keygen -t rsaCrea un recurso
VirtualMachineAccessRequestaplicando la siguiente configuración a tu clúster:apiVersion: vm.cluster.gke.io/v1alpha1 kind: VirtualMachineAccessRequest metadata: name: RESOURCE_NAME namespace: NAMESPACE spec: vm: VM_NAME user: USER_NAME ssh: key: RSA_KEY ttl: 2h
Reemplaza lo siguiente:
RESOURCE_NAME: Es un nombre descriptivo para este recurso de solicitud de acceso a la máquina virtual.NAMESPACE: Es el espacio de nombres de destino.VM_NAME: Es el nombre de la máquina virtual de destino.USER_NAME: Es el nombre del usuario al que se le otorga acceso.RSA_KEY: Es el contenido del archivoid_rsa.pubque generaste en el paso anterior.
Verifica el estado de la solicitud de acceso con el siguiente comando:
kubectl get vmar
Cuando el comando muestre el estado
Configured, continúa con el siguiente paso.Accede a la máquina virtual con SSH o Escritorio remoto:
- Si la máquina virtual está conectada a tu red local, puedes acceder a ella directamente.
- Si la máquina virtual está conectada a la red de Pods, debes crear un servicio de balanceador de cargas para acceder a los puertos requeridos.
Cómo iniciar, reiniciar o detener una máquina virtual
Usa los siguientes comandos para iniciar, reiniciar o detener una máquina virtual:
- Inicia una máquina virtual:
kubectl virt start vmVM_NAME-nNAMESPACE - Reinicia una máquina virtual:
kubectl virt restart vmVM_NAME-nNAMESPACE - Detén una máquina virtual:
kubectl virt stop vmVM_NAME-nNAMESPACE
Reemplaza lo siguiente:
VM_NAME: Es el nombre de la máquina virtual de destino.NAMESPACE: Es el espacio de nombres de destino.
¿Qué sigue?
- Administra máquinas virtuales en bastidores de Distributed Cloud Connected
- 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