Cette page explique comment gérer les machines virtuelles sur les racks Google Distributed Cloud connectés exécutant VM Runtime sur Google Distributed Cloud. Avant de suivre les étapes de cette page, vous devez connaître VM Runtime sur GDC. Pour obtenir la liste des systèmes d'exploitation invités compatibles, consultez Systèmes d'exploitation invités validés pour l'environnement d'exécution de VM sur GDC.
Pour découvrir comment les machines virtuelles constituent un élément essentiel de la plate-forme connectée Distributed Cloud, consultez Étendre GKE Enterprise pour gérer les VM périphériques sur site.
Les clusters connectés Distributed Cloud sont compatibles avec les Webhooks de machine virtuelle. Cela permet à Distributed Cloud Connected de valider les requêtes utilisateur envoyées au serveur d'API Kubernetes local. Les demandes refusées génèrent des informations détaillées sur le motif du refus.
Activer la compatibilité avec l'environnement d'exécution de VM sur GDC sur Distributed Cloud connecté
Par défaut, la compatibilité avec les machines virtuelles de l'environnement d'exécution de VM sur GDC est désactivée sur Distributed Cloud Connected. Pour l'activer, suivez les étapes décrites dans cette section. Les instructions de cette section supposent que vous disposez d'un cluster Distributed Cloud connecté entièrement fonctionnel.
Modifiez la ressource personnalisée
VMRuntimeavec le contenu suivant et appliquez-la à votre cluster :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
Ne modifiez pas la valeur du paramètre
vmImageFormat. Distributed Cloud Connected n'est compatible avec aucun autre format de disque virtuel.Cette opération prend généralement plusieurs minutes.
Ne modifiez pas la valeur du paramètre
vmImageFormat. Distributed Cloud Connected n'est compatible avec aucun autre format de disque virtuel.Cette opération prend généralement plusieurs minutes.
Exécutez la commande suivante pour vérifier que la ressource personnalisée
VMRuntimea été appliquée à votre cluster :kubectl get vmruntime -o yaml
La commande renvoie un résultat semblable à l'exemple suivant :
- apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: name: vmruntime ... spec: enabled: true vmImageFormat: raw status: ... ready: true ...Exécutez la commande suivante pour vérifier que la compatibilité avec les machines virtuelles VM Runtime sur GDC a été activée sur votre cluster :
kubectl get pods -n vm-system
La commande renvoie un résultat indiquant les pods du sous-système VM Runtime sur GDC en cours d'exécution sur votre cluster, semblable à l'exemple suivant :
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
Installer l'outil de gestion virtctl
Vous avez besoin de l'outil client virtctl pour gérer les machines virtuelles sur votre cluster connecté Distributed Cloud. Pour installer l'outil, procédez comme suit :
Installer l'outil de client
virtctlen tant que plug-inkubectl: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 -
Vérifiez que le plug-in
virtest installé :kubectl plugin list
Si le plug-in a été installé, le résultat de la commande liste
kubectl-virtcomme l'un des plug-ins.
Provisionner une machine virtuelle sur Distributed Cloud connected
Cette section fournit des exemples de configuration qui illustrent comment provisionner une machine virtuelle Linux et une machine virtuelle Windows sur un cluster connecté Distributed Cloud avec la couche d'abstraction Symcloud Storage.
Notez que vous ne pouvez pas créer de machine virtuelle sur un cluster connecté Distributed Cloud directement à l'aide de la commande kubectl virt, car Distributed Cloud Connected ne fournit pas de stockage de système de fichiers aux machines virtuelles.
Avant de suivre les étapes de cette section, vous devez d'abord suivre celles de la section Configurer Distributed Cloud connected pour Symcloud Storage. Si vous désactivez ultérieurement Symcloud Storage sur le cluster, les machines virtuelles configurées pour utiliser Symcloud Storage échoueront.
Provisionner une machine virtuelle Linux sur Distributed Cloud connecté
L'exemple suivant montre comment provisionner une machine virtuelle Linux avec Symcloud Storage exécutant Ubuntu Server 22.04. La source d'installation est l'image disque ISO Ubuntu Server 22.04.
Créez une ressource
VirtualMachineDiskavec le contenu suivant pour l'image de disque d'installation Ubuntu Server, puis appliquez-la à votre cluster :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
Créez une ressource
VirtualMachineDiskavec le contenu suivant pour le disque dur virtuel de la machine virtuelle, puis appliquez-la à votre cluster :apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: "ubuntu-main-disk" spec: size: 200Gi storageClassName: robin
Créez une ressource
VirtualMachineTypeavec le contenu suivant qui spécifie la configuration de la machine virtuelle, puis appliquez-la à votre cluster :apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Créez une ressource
VirtualMachineavec le contenu suivant, qui instancie et démarre la machine virtuelle sur le cluster, puis appliquez-la à votre cluster :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
Vous devez également configurer les fonctionnalités suivantes sur votre cluster :
Installez Ubuntu Server sur la machine virtuelle :
- Attendez que le pod
importertélécharge l'image disque d'installation d'Ubuntu Server. Vérifiez l'état de la machine virtuelle :
kubectl get gvm VM_NAME
Remplacez
VM_NAMEpar le nom de la machine virtuelle (ubu-vmdans cet exemple).Connectez-vous à la machine virtuelle à l'aide de SSH ou du Bureau à distance.
Suivez la procédure d'installation d'Ubuntu Linux.
- Attendez que le pod
Effectuer un nettoyage :
Arrêtez la machine virtuelle :
kubectl virt stop VM_NAME
Remplacez
VM_NAMEpar le nom de la machine virtuelle (ubu-vmdans cet exemple).Modifiez le fichier YAML de la machine virtuelle pour supprimer la référence à l'image disque d'installation :
kubectl edit gvm VM_NAME
Remplacez
VM_NAMEpar le nom de la machine virtuelle (ubu-vmdans cet exemple).Démarrez la machine virtuelle :
kubectl virt start VM_NAME
Remplacez
VM_NAMEpar le nom de la machine virtuelle (ubu-vmdans cet exemple).Supprimez la ressource
VirtualMachineDiskpour l'image disque d'installation :kubectl delete virtualmachinedisk ubuntu-iso-disk
Provisionner une machine virtuelle Windows sur Distributed Cloud connecté
L'exemple suivant montre comment provisionner une machine virtuelle Windows avec Symcloud Storage. Les étapes sont semblables à celles du provisionnement d'une machine virtuelle Linux, avec l'ajout de l'image de disque de pilote virtio, qui est requise pour installer Windows.
Obtenez une copie sous licence de Windows et de son image de support d'installation.
Créez une ressource
VirtualMachineDiskavec le contenu suivant pour l'image de disque d'installation Windows, puis appliquez-la à votre cluster :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
Remplacez
NAT_GATEWAYpar l'URL complète de l'image disque ISO d'installation de Windows cible.Créez une ressource
VirtualMachineDiskavec le contenu suivant pour le pilotevirtio, puis appliquez-la à votre cluster :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
Créez une ressource
VirtualMachineDiskavec le contenu suivant pour le disque dur virtuel de la machine virtuelle, puis appliquez-la à votre cluster :apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-main-disk namespace: default spec: size: 15Gi storageClassName: robin
Créez une ressource
VirtualMachineTypeavec le contenu suivant qui spécifie la configuration de la machine virtuelle, puis appliquez-la à votre cluster :apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineType metadata: name: small-2-20 spec: cpu: vcpus: 2 memory: capacity: 20Gi
Créez une ressource
VirtualMachineavec le contenu suivant, qui instancie et démarre la machine virtuelle sur le cluster, puis appliquez-la à votre cluster :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
Vous devez également configurer les fonctionnalités suivantes sur votre cluster :
Installez Windows sur la machine virtuelle :
- Attendez que le pod
importertélécharge l'image disque d'installation de Windows. Vérifiez l'état de la machine virtuelle :
kubectl get gvm VM_NAME
Remplacez
VM_NAMEpar le nom de la machine virtuelle (win-vmdans cet exemple).Terminez l'installation de Windows en suivant les étapes décrites dans Se connecter à une VM Windows et terminer l'installation de l'OS.
- Attendez que le pod
Effectuer un nettoyage :
Arrêtez la machine virtuelle :
kubectl virt stop VM_NAME
Remplacez
VM_NAMEpar le nom de la machine virtuelle (win-vmdans cet exemple).Suivez la procédure décrite dans Détacher l'image ISO et le disque de pilotes.
Gérer les machines virtuelles exécutées sur Distributed Cloud connecté
Pour obtenir des instructions sur la gestion des machines virtuelles exécutées sur Distributed Cloud connecté, consultez la documentation suivante sur l'environnement d'exécution de VM sur GDC :
- Se connecter à des VM
- Répertorier et afficher les VM
- Gérer l'état d'alimentation
- Modifier une VM
- Supprimer une VM
- Afficher les journaux de la console de VM
Pour gérer les machines virtuelles exécutées sur Distributed Cloud connecté, vous devez d'abord configurer la connectivité kubectl.
Désactiver l'environnement d'exécution de VM sur GDC sur Distributed Cloud connecté
Suivez les étapes de cette section pour désactiver VM Runtime sur GDC sur Distributed Cloud connecté. Avant de pouvoir désactiver l'environnement d'exécution de VM sur GDC sur Distributed Cloud connecté, vous devez arrêter et supprimer toutes les machines virtuelles de votre cluster Distributed Cloud connecté, comme décrit dans Supprimer une VM.
Pour désactiver VM Runtime sur GDC sur Distributed Cloud Connected, modifiez la ressource personnalisée VMRuntime en définissant le paramètre de spécification enabled sur false comme suit, puis appliquez-le à votre cluster :
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"
Afficher les journaux d'audit du bac à sable AppArmor
Distributed Cloud connecte automatiquement les charges de travail des machines virtuelles aux bacs à sable avec des règles AppArmor dans audit-mode. Toute infraction aux règles génère une entrée de journal'audit.
Exemple :
{
"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"
...
...
Étapes suivantes
- Gérer les machines virtuelles sur les serveurs connectés Distributed Cloud
- Déployer des charges de travail sur Distributed Cloud connecté
- Gérer les charges de travail GPU
- Gérer les zones
- Gérer les machines
- Gérer les clusters
- Gérer les pools de nœuds