En este documento, se muestra cómo habilitar o inhabilitar el entorno de ejecución de VM en Google Distributed Cloud mediante la actualización del recurso personalizado VMRuntime
o la ejecución de los comandos de bmctl
.
Antes de comenzar
Para habilitar o inhabilitar el entorno de ejecución de VM en GDC, necesitas acceso a los siguientes recursos y herramientas:
- Acceso al clúster de GKE en Bare Metal versión 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o superior. Puedes usar cualquier tipo de clúster capaz de ejecutar cargas de trabajo. Si es necesario, prueba GKE en Bare Metal en Compute Engine o consulta la descripción general de la creación de clústeres. - La herramienta de línea de comandos de
bmctl
Para obtener más información, consulta Descarga e instala la herramienta debmctl
.
Habilita el entorno de ejecución de la VM en GDC
El entorno de ejecución de VM en GDC se instala de forma automática en GKE en Bare Metal versión 1.10 o superior, pero está inhabilitado de forma predeterminada. Antes de poder ejecutar los recursos de VM en GKE en Bare Metal, debes habilitar el entorno de ejecución de VM en GDC.
bmctl
Para habilitar el entorno de ejecución, usa la herramienta de
bmctl
:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
Proporciona la ruta de acceso al archivo kubeconfig del clúster. GKE en Bare Metal genera el archivo kubeconfig en la estación de trabajo de administrador cuando creas un clúster. De forma predeterminada, la ruta de acceso es
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
.Si el entorno de ejecución de VM en GDC ya está habilitado, el comando muestra un error.
Puedes editar ajustes adicionales en el recurso VMRuntime
, como la emulación o el formato de imagen.
Recurso personalizado
Para habilitar el entorno de ejecución, actualiza el recurso VMRuntime
personalizado. Este recurso personalizado se instala de forma predeterminada.
Edita el recurso personalizado
VMRuntime
:kubectl edit vmruntime
Establece
enabled:true
en la especificación:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime spec: enabled: true # useEmulation defaults to "false" if not set. useEmulation: true # vmImageFormat defaults to "qcow2" if not set. vmImageFormat: qcow2
En la sección
spec
anterior, se pueden establecer los siguientes valores:enabled
: Se establece como verdadero para habilitar el entorno de ejecución de la VM en GDC.useEmulation
: Si tu nodo no admite la virtualización de hardware, o no estás seguro, establece el valor en verdadero. Si está disponible, la virtualización de hardware proporciona un mejor rendimiento que la emulación de software. El campouseEmulation
se configura de forma predeterminada enfalse
, si no se especifica.vmImageFormat
: Admite dos valores de formato de imagen de disco:raw
yqcow2
. Si no configurasvmImageFormat
, el entorno de ejecución de VM en GDC usa el formato de imagen de discoraw
para crear VM. El formatoraw
puede proporcionar un rendimiento mejorado sobreqcow2
, una copia en formato de escritura, pero puede usar más capacidad de disco. Si deseas obtener más información sobre los formatos de imagen para tu VM, consulta Formatos de archivo de imagen de disco en la documentación de QEMU.
Guarda el recurso personalizado en tu editor.
Verifica que el recurso personalizado
VMRuntime
esté habilitado:kubectl describe vmruntime vmruntime
En los detalles del recurso personalizado
VMRuntime
, se incluye una secciónStatus
. El entorno de ejecución de VM en GDC está habilitado y funciona cuandoVMRuntime.Status.Ready
se muestra comotrue
.
Inhabilitar el entorno de ejecución de la VM en GDC
Cuando ya no necesites usar el entorno de ejecución de VM en GDC, puedes inhabilitar esta función.
bmctl
Para inhabilitar el entorno de ejecución, usa la herramienta de
bmctl
:bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=true
Proporciona la ruta de acceso al archivo kubeconfig del clúster y los valores para las siguientes opciones de configuración:
--force
: se establece entrue
para confirmar que deseas borrar los recursos de VM existentes. El valor predeterminado esfalse
.
Recurso personalizado
Para inhabilitar el entorno de ejecución, actualiza el recurso VMRuntime
personalizado:
Edita el recurso personalizado
VMRuntime
:kubectl edit vmruntime
Establece
enabled:false
en la especificación:apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2
Guarda la especificación de recursos personalizados actualizada en tu editor.
Para verificar que el recurso personalizado
VMRuntime
esté inhabilitado, visualiza los Pods que se ejecutan en el espacio de nombresvm-system
:kubectl get pods --namespace vm-system
El entorno de ejecución de VM en GDC se inhabilita cuando solo se ejecutan en el espacio de nombres los Pods que pertenecen a la implementación
vmruntime-controller-manager
.
Comprende el comportamiento de las VM en ejecución
La anotación baremetal.cluster.gke.io/vmrumtime-force-disable
se puede usar en el recurso del entorno de ejecución de VM en GDC para definir el comportamiento cuando el entorno de ejecución está inhabilitado mientras las VM se ejecutan en el clúster.
En el siguiente ejemplo, se muestra que el valor de esta anotación se establece en false
de forma predeterminada:
// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
annotations:
baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
name: vmruntime
[...]
Cuando esta anotación se establece como false
, el entorno de ejecución de VM en GDC intenta proteger las VM en ejecución. Borra todas las VMs en ejecución antes de inhabilitar el entorno de ejecución de VM en GDC o especifica el parámetro --force=true
con el comando bmctl disable vmruntime
, como se muestra en la sección anterior.
En la siguiente tabla, se explica qué sucede con la ejecución de VM cuando esta anotación se establece en true
o false
y si se especifica el parámetro --force=true
o no:
Estado del clúster | Parámetro --force | anotación vmruntime-force-disable | Comportamiento |
---|---|---|---|
No hay VM | No disponible | No disponible | Inhabilitar el entorno de ejecución de VM en GDC |
VM existentes | True | True | Borra todas las VM en ejecución y los recursos relacionados. Inhabilita el entorno de ejecución de VM en GDC. |
True | Falso | Borra todas las VM en ejecución y los recursos relacionados. Inhabilita el entorno de ejecución de VM en GDC. | |
Falso | True | Solicitud para borrar VMs en ejecución y recursos relacionados. Cuando se hayan borrado todas las VMs en ejecución, inhabilita el entorno de ejecución de la VM en GDC. | |
Falso | Falso | No borres las VM existentes que se estén ejecutando. No inhabilites el entorno de ejecución de la VM en GDC. El comando bmctl muestra un error. |
Verificación preliminar del entorno de ejecución de VM en GDC
La verificación previa del entorno de ejecución de VM en GDC valida un conjunto de requisitos previos en el entorno de la máquina antes de usar el entorno de ejecución de VM en GDC y las VM. La creación de VM se bloquea si falla la verificación preliminar del entorno de ejecución de VM en GDC. La verificación previa del entorno de ejecución de VM en GDC se ejecuta de forma automática cuando spec.enabled
se establece como verdadero.
kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH
La verificación previa del entorno de ejecución de VM en GDC se ejecuta cuando realizas cualquiera de las siguientes operaciones:
Habilita el entorno de ejecución de la VM en GDC
Habilita el entorno de ejecución de VM en las funciones de GDC, como useEmulation
Actualiza los clústeres
Quitar la etiqueta
kubevm.io/VM-SkipSchedule
de los nodosDe forma independiente, crea un entorno de ejecución de VM en el objeto de verificación previa de GDC mediante la ejecución del comando
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH
o la aplicación de un manifiesto YAML deVMRuntimePreflightCheck
.
Puedes iniciar las VM cuando se ejecute la verificación preliminar más reciente del entorno de ejecución de VM en GDC. Si falla la comprobación preliminar, se bloqueará la creación de la VM y obtendrás errores de la comprobación preliminar.
Verifica que la verificación preliminar se haya realizado correctamente
Para verificar si las comprobaciones preliminares se realizaron correctamente, ejecuta los siguientes comandos:
Busca las últimas comprobaciones preliminares realizadas:
kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATH
El resultado debería verse como el siguiente ejemplo:
NAME PASS AGE vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e false 42s vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 true 21s
Para encontrar el estado de una comprobación preliminar, ejecuta el siguiente comando:
kubectl get vmruntime vmruntime -o yaml --kubeconfig KUBECONFIG_PATH
... preflightCheckSummary: preflightCheckSummary: featureStatuses: CPU: passed: true KVM: passed: true preflightCheckName: vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 preflightCheckPassed: true ...
Depurar falla la comprobación preliminar
Si falla la comprobación preliminar, realiza los siguientes pasos para la depuración:
Busca las últimas comprobaciones preliminares realizadas.
kubectl get vmruntimepfc -n vm-system
Consulta el estado de esa comprobación preliminar para obtener más detalles.
kubectl get vmruntimepfc -n vm-system \ vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e -o yaml \ --kubeconfig KUBECONFIG_PATH
... status: checks: worker-0--52229ee15841099-22c41577139a7b8c.lab.anthos: passed: false results: - checkName: CPU passed: true - checkName: KVM message: | command terminated with exit code 1 ls: /mnt/dev/kvm: No such file or directory passed: false ...
Soluciona el problema y vuelve a ejecutar la verificación preliminar del entorno de ejecución de VM en GDC. A continuación, se muestra un ejemplo de manifiesto YAML de VMRuntimePreflightCheck:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntimePreflightCheck metadata: name: vmruntime-preflight-check-manual namespace: vm-system