Ce document explique comment activer ou désactiver l'environnement d'exécution des VM sur Google Distributed Cloud en mettant à jour la ressource personnalisée VMRuntime
ou en exécutant des commandes bmctl
.
Avant de commencer
Pour activer ou désactiver l'environnement d'exécution des VM sur GDC, vous devez accéder aux ressources et outils suivants:
- Accès au cluster Google Distributed Cloud version 1.12.0 (
anthosBareMetalVersion: 1.12.0
) ou ultérieure. Vous pouvez utiliser n'importe quel type de cluster capable d'exécuter des charges de travail. Si nécessaire, essayez Google Distributed Cloud sur Compute Engine ou consultez la présentation de la création de clusters. - Outil de ligne de commande
bmctl
Pour en savoir plus, consultez la page Télécharger et installer l'outilbmctl
.
Activer l'environnement d'exécution des VM sur GDC
L'environnement d'exécution de VM sur GDC est automatiquement installé dans Google Distributed Cloud version 1.10 ou ultérieure, mais il est désactivé par défaut. Avant de pouvoir exécuter des ressources de VM dans votre Google Distributed Cloud, vous devez activer l'environnement d'exécution des VM sur GDC.
bmctl
Pour activer l'environnement d'exécution, utilisez l'outil
bmctl
:bmctl enable vmruntime --kubeconfig KUBECONFIG_PATH
Indiquez le chemin d'accès au fichier kubeconfig du cluster. Google Distributed Cloud génère le fichier kubeconfig sur le poste de travail administrateur lorsque vous créez un cluster. Par défaut, le chemin d'accès est
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
.Si l'environnement d'exécution de VM sur GDC est déjà activé, la commande renvoie une erreur.
Vous pouvez configurer des paramètres supplémentaires, tels que l'émulation ou le format d'image, en modifiant la ressource personnalisée VMRuntime
.
Ressource personnalisée
Pour activer l'environnement d'exécution, mettez à jour la ressource personnalisée VMRuntime
. Cette ressource personnalisée est installée par défaut.
Modifiez la ressource personnalisée
VMRuntime
:kubectl edit vmruntime
Définissez
enabled:true
dans la spécification :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
Dans la section
spec
précédente, les valeurs suivantes peuvent être définies :enabled
: définie sur "true" pour activer l'environnement d'exécution de la VM sur GDCuseEmulation
: si votre nœud n'est pas compatible avec la virtualisation matérielle, ou si vous n'êtes pas sûr, définissez la valeur sur "true". Si elle est disponible, la virtualisation matérielle offre de meilleures performances que l'émulation logicielle. Le champuseEmulation
est défini par défaut surfalse
s'il n'est pas spécifié.vmImageFormat
: accepte deux valeurs de format d'image disque :raw
etqcow2
. Si vous ne définissez pasvmImageFormat
, l'environnement d'exécution des VM sur GDC utilise le format d'image disqueraw
pour créer des VM. Le formatraw
peut améliorer les performances par rapport àqcow2
, un format qui utilise la copie sur écriture, mais peut utiliser plus d'espace disque. Pour en savoir plus sur les formats d'image de votre VM, consultez la section Formats de fichiers image disque dans la documentation QEMU.
Enregistrez la ressource personnalisée dans votre éditeur.
Vérifiez que la ressource personnalisée
VMRuntime
est activée :kubectl describe vmruntime vmruntime
Les détails de la ressource personnalisée
VMRuntime
incluent une sectionStatus
. L'environnement d'exécution des VM sur GDC est activé et fonctionne lorsqueVMRuntime.Status.Ready
s'affiche commetrue
.
Désactiver l'environnement d'exécution des VM sur GDC
Lorsque vous n'avez plus besoin d'utiliser l'environnement d'exécution de VM sur GDC, vous pouvez désactiver cette fonctionnalité.
bmctl
Pour désactiver l'environnement d'exécution, utilisez l'outil
bmctl
:bmctl disable vmruntime --kubeconfig KUBECONFIG_PATH \ --force=true
Indiquez le chemin d'accès au fichier kubeconfig de votre cluster et les valeurs à utiliser pour les options de configuration suivantes :
--force
: définissez la valeur surtrue
pour confirmer que vous souhaitez supprimer les ressources de VM existantes. La valeur par défaut estfalse
.
Ressource personnalisée
Pour désactiver l'environnement d'exécution, mettez à jour la ressource personnalisée VMRuntime
:
Modifiez la ressource personnalisée
VMRuntime
:kubectl edit vmruntime
Définissez
enabled:false
dans la spécification :apiVersion: vm.cluster.gke.io/v1` kind: VMRuntime metadata: name: vmruntime spec: enabled: false useEmulation: true vmImageFormat: qcow2
Enregistrez la spécification de ressource personnalisée mise à jour dans l'éditeur.
Pour vérifier que la ressource personnalisée
VMRuntime
est désactivée, affichez les pods qui s'exécutent dans l'espace de nomsvm-system
:kubectl get pods --namespace vm-system
L'environnement d'exécution des VM sur GDC est désactivé lorsque seuls les pods appartenant au déploiement
vmruntime-controller-manager
s'exécutent dans l'espace de noms.
Comprendre le comportement d'exécution des VM
L'annotation baremetal.cluster.gke.io/vmrumtime-force-disable
peut être utilisée sur l'environnement d'exécution de VM sur une ressource GDC pour définir le comportement lorsque l'environnement d'exécution est désactivé pendant que les VM sont en cours d'exécution dans le cluster.
L'exemple suivant montre que la valeur de cette annotation est définie sur false
par défaut :
// VM runtime yaml file
apiVersion: vm.cluster.gke.io/v1
kind: VMRuntime
metadata:
annotations:
baremetal.cluster.gke.io/vmrumtime-force-disable: "false"
name: vmruntime
[...]
Lorsque cette annotation est définie sur false
, l'environnement d'exécution de VM sur GDC tente de protéger les VM en cours d'exécution. Supprimez toutes les VM en cours d'exécution avant que l'environnement d'exécution des VM sur GDC ne soit désactivé ou spécifiez le paramètre --force=true
à l'aide de la commande bmctl disable vmruntime
, comme indiqué dans la section précédente.
Le tableau suivant explique ce qu'il advient des VM lorsque cette annotation est définie sur true
ou false
, et lorsque vous spécifiez ou non le paramètre --force=true
:
État du cluster | Paramètre --force | Annotation vmrumtime-force-disable | Comportement |
---|---|---|---|
Aucune VM | Non disponible | Non disponible | Désactiver l'environnement d'exécution des VM sur GDC |
VM existantes | Vrai | Vrai | Supprime toutes les VM en cours d'exécution et les ressources associées. Désactivez l'environnement d'exécution des VM sur GDC. |
Vrai | Faux | Supprime toutes les VM en cours d'exécution et les ressources associées. Désactivez l'environnement d'exécution des VM sur GDC. | |
Faux | Vrai | Invite à supprimer les VM en cours d'exécution et les ressources associées. Lorsque toutes les VM en cours d'exécution ont été supprimées, désactivez l'environnement d'exécution des VM sur GDC. | |
Faux | Faux | Ne supprime aucune VM en cours d'exécution. Ne désactivez pas l'environnement d'exécution des VM sur GDC. La commande bmctl renvoie une erreur. |
Vérification préliminaire de l'environnement d'exécution de la VM sur la GDC
La vérification préliminaire de l'environnement d'exécution de VM sur GDC valide un ensemble de conditions préalables dans l'environnement de la machine avant d'utiliser l'environnement d'exécution de VM sur GDC et les VM. La création de VM est bloquée si la vérification préliminaire de l'environnement d'exécution de VM sur GDC échoue. La vérification préliminaire de l'environnement d'exécution de la VM sur la GDC s'exécute automatiquement lorsque spec.enabled
est défini sur "true".
kubectl label nodes NODE_NAME "kubevm.io/VM-SkipSchedule"= --kubeconfig KUBECONFIG_PATH
La vérification préliminaire de l'environnement d'exécution de la VM sur GDC s'exécute lorsque vous effectuez l'une des opérations suivantes:
Activer l'environnement d'exécution des VM sur GDC
Activer l'environnement d'exécution des VM sur les fonctionnalités GDC, telles que useEmulation
Mettre à niveau les clusters
Supprimer l'étiquette
kubevm.io/VM-SkipSchedule
au niveau des nœudsCréez indépendamment un objet de vérification préliminaire de l'environnement d'exécution de VM sur la GDC en exécutant la commande
bmctl check vmruntimepfc --kubeconfig KUBECONFIG_PATH
ou en appliquant un fichier manifeste YAMLVMRuntimePreflightCheck
.
Vous pouvez lancer des VM lorsque la dernière vérification préliminaire de l'environnement d'exécution de VM sur GDC aboutit. Si la vérification préliminaire échoue, la création de la VM est bloquée et des erreurs s'affichent.
Vérifier le succès de la vérification préliminaire
Pour vérifier si les vérifications préliminaires ont réussi, exécutez les commandes suivantes:
Recherchez les dernières vérifications préliminaires effectuées:
kubectl get vmruntimepfc -n vm-system --kubeconfig KUBECONFIG_PATH
Le résultat doit ressembler à l'exemple suivant:
NAME PASS AGE vmruntime-preflight-check-6ee61513-ea5d-4340-9374-90396cac129e false 42s vmruntime-preflight-check-f8d71751-a01c-471e-bab5-3370fc2addd5 true 21s
Pour connaître l'état d'une vérification préliminaire, exécutez la commande suivante:
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 ...
Échec de la vérification préliminaire du débogage
Si la vérification préliminaire échoue, procédez comme suit pour procéder au débogage:
Recherchez les dernières vérifications préliminaires effectuées.
kubectl get vmruntimepfc -n vm-system
Pour en savoir plus, vérifiez l'état de cette vérification préliminaire.
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 ...
Résolvez le problème et exécutez à nouveau la vérification préliminaire de l'environnement d'exécution de VM lors de la GDC. Voici un exemple de fichier manifeste YAML VMRuntimePreflightCheck:
apiVersion: vm.cluster.gke.io/v1 kind: VMRuntimePreflightCheck metadata: name: vmruntime-preflight-check-manual namespace: vm-system