Modifier la configuration des VM dans l'environnement d'exécution de VM sur GDC

Ce document est destiné aux propriétaires d'applications qui utilisent l'environnement d'exécution de VM sur GDC pour exécuter des machines virtuelles (VM) dans GKE sur une solution Bare Metal. Ce document explique comment modifier des VM exécutées dans des clusters GKE sur des clusters Bare Metal. Par exemple, vous pouvez modifier l'allocation de ressources, telles que le processeur et la mémoire, ou modifier le réseau auquel une VM se connecte.

Vous pouvez modifier n'importe quel champ de la section spec d'une ressource VirtualMachine. Vous pouvez également modifier les libellés d'une VM. Les autres champs, par exemple le nom de la VM (metadata.name), ne peuvent pas être modifiés. Par défaut, votre VM doit être à l'état Stopped avant de modifier la ressource. Toutefois, à partir de la version 1.13.0 de GKE sur Bare Metal, vous pouvez configurer votre ressource VirtualMachine pour qu'elle redémarre automatiquement chaque fois que vous modifiez la configuration.

Si vos modifications apportées à la ressource VirtualMachine contiennent des erreurs lorsque vous les enregistrez, les modifications sont rejetées et une notification s'affiche. Corrigez les erreurs et essayez d'enregistrer à nouveau la ressource VirtualMachine. Si votre VM ne démarre pas après avoir effectué des modifications, utilisez la commande kubectl describe gvm VM_NAME pour afficher les informations de dépannage et corriger les erreurs.

Avant de commencer

Pour suivre les instructions de ce document, vous devez disposer des ressources suivantes :

Modifier les ressources de calcul

Si vos besoins en charge de travail de calcul évoluent, vous pouvez mettre à jour le nombre de processeurs virtuels et la quantité de mémoire virtuelle que vous attribuez à vos VM. Pour modifier vos charges de travail de calcul, procédez comme suit :

  1. Arrêtez la VM que vous souhaitez modifier :

    kubectl virt stop VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous souhaitez arrêter.

  2. Utilisez kubectl pour modifier la VM :

    kubectl edit gvm VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous souhaitez modifier.

  3. Dans votre éditeur, mettez à jour les valeurs de ressources de calcul que vous souhaitez modifier.

    Par exemple, l'exemple de fichier manifeste VirtualMachine suivant indique que 2 processeurs virtuels sont attribués à la ressource de VM :

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 2
    ...
    

    Si vous souhaitez mettre à jour le nombre de processeurs virtuels attribués, modifiez la valeur dans votre éditeur, comme indiqué dans l'exemple suivant :

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      compute:
        cpu:
          vcpus: 4
    ...
    
  4. Enregistrez et fermez le fichier manifeste de la VM.

  5. Démarrez la VM que vous avez modifiée :

    kubectl virt start VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous avez modifiée.

  6. Vérifiez le STATUS de votre VM :

    kubectl get gvm VM_NAME
    

    Vérifiez que votre VM est à l'état Running. Si votre VM demande plus de ressources de calcul que l'hôte ne peut en fournir, elle ne peut pas démarrer. Si la VM n'est pas à l'état Running, vérifiez le fichier manifeste de la ressource VirtualMachine et la disponibilité des ressources de calcul sur l'hôte.

    L'exemple de résultat suivant affiche la VM à l'état Running :

    NAME   STATUS    AGE   IP
    vm1    Running   1m    192.168.2.72
    
  7. Affichez des informations détaillées sur une VM en utilisant kubectl describe gvm :

    kubectl describe gvm VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous avez modifiée.

    L'exemple de résultat suivant affiche les informations condensées pour une VM, avec une modification du nombre de processeurs virtuels appliquée avec succès :

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
        Cpu:
          Vcpus:  4
    ...
    

Pour en savoir plus, découvrez comment créer des VM avec des configurations de processeur virtuel et de mémoire spécifiques.

Modifier les ressources de disque

Si vos besoins en stockage changent, vous pouvez ajouter ou supprimer des disques virtuels sur une VM. Pour modifier les disques associés à votre VM, procédez comme suit :

  1. Arrêtez la VM que vous souhaitez modifier :

    kubectl virt stop VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous souhaitez arrêter.

  2. Utilisez kubectl pour modifier la VM :

    kubectl edit gvm VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous souhaitez modifier.

  3. Dans votre éditeur, mettez à jour la section spec.disks pour associer ou dissocier des disques.

    Par exemple, l'exemple de fichier manifeste VirtualMachine suivant montre qu'un seul disque de démarrage est associé à la VM :

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
      ...
    

    Si vous souhaitez ajouter un disque vide existant, mettez à jour la configuration de disque dans votre éditeur, comme indiqué dans l'exemple suivant :

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      disks:
        - boot: true
          virtualMachineDiskName: vm1-boot-dv
        - virtualMachineDiskName: DISK_NAME
      ...
    

    Remplacez DISK_NAME par le nom du disque à associer.

  4. Enregistrez et fermez le fichier manifeste de la VM.

  5. Démarrez la VM que vous avez modifiée :

    kubectl virt start VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous avez modifiée.

  6. Vérifiez le STATUS de votre VM :

    kubectl get gvm VM_NAME
    

    Vérifiez que votre VM est à l'état Running. Si votre VM demande une StorageClass ou une attribution de disque que l'hôte ne peut pas fournir, votre VM ne peut pas démarrer. Si la VM n'est pas à l'état Running, vérifiez vos fichiers manifestes de ressources VirtualMachine et VirtualMachineDisk, ainsi que la compatibilité de l'espace de stockage de l'hôte.

  7. Affichez des informations détaillées sur une VM en utilisant kubectl describe gvm :

    kubectl describe gvm VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous avez modifiée.

    L'exemple de résultat suivant affiche les informations condensées pour une VM, avec une modification des disques associés appliquée avec succès :

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Disks:
        Name:  vm1-boot-dv
        Name:  data-disk-01
    ...
    

Pour en savoir plus, découvrez comment créer et gérer des disques.

Modifier les ressources réseau

À mesure que votre infrastructure évolue, vous pouvez modifier la configuration réseau d'une VM. Par exemple, vous pouvez connecter la VM à un autre réseau virtuel ou attribuer manuellement une adresse IP. Pour modifier la configuration réseau d'une VM, procédez comme suit :

  1. Arrêtez la VM que vous souhaitez modifier :

    kubectl virt stop VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous souhaitez arrêter.

  2. Utilisez kubectl pour modifier la VM :

    kubectl edit gvm VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous souhaitez modifier.

  3. Dans votre éditeur, mettez à jour les paramètres de configuration réseau que vous souhaitez modifier.

    Par exemple, l'exemple de fichier manifeste VirtualMachine suivant montre que la VM se connecte à un réseau nommé backend-vlan100 et utilise DHCP, car aucune adresse IP n'est définie :

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: backend-vlan100
          default: true
    ...
    

    Si vous souhaitez modifier le réseau auquel la VM se connecte ou attribuer une adresse IP manuelle, mettez à jour la configuration réseau dans votre éditeur, comme indiqué dans l'exemple suivant :

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      name: vm1
    spec:
      ...
      interfaces:
        - name: eth0
          networkName: NETWORK_NAME
            ipAddresses:
              - IP_ADDRESS
          default: true
    ...
    

    Remplacez NETWORK_NAME par le nom du réseau auquel vous connecter, ou ajoutez la section ipAddresses et spécifiez le IP_ADDRESS à utiliser pour votre VM.

  4. Enregistrez et fermez le fichier manifeste de la VM.

  5. Démarrez la VM que vous avez modifiée :

    kubectl virt start VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous avez modifiée.

  6. Vérifiez le STATUS de votre VM :

    kubectl get gvm VM_NAME
    

    Vérifiez que votre VM est à l'état Running. Si votre VM demande une connexion réseau que l'hôte ne peut pas fournir, elle ne peut pas démarrer. Si la VM n'est pas à l'état Running, vérifiez le fichier manifeste de la ressource VirtualMachine et la compatibilité du réseau hôte.

  7. Affichez des informations détaillées sur une VM en utilisant kubectl describe gvm :

    kubectl describe gvm VM_NAME
    

    Remplacez VM_NAME par le nom de la VM que vous avez modifiée.

    L'exemple de résultat suivant affiche les informations condensées pour une VM, avec une modification du fichier de configuration du réseau et des adresses IP appliquée avec succès :

    Name:         vm1
    Namespace:    default
    Labels:       <none>
    Annotations:  <none>
    API Version:  vm.cluster.gke.io/v1
    Kind:         VirtualMachine
    ...
    Spec:
      Compute:
      Interfaces:
        Name:          eth0
        Network Name:  backend-vlan200
    ...
    Status:
      ...
      Interfaces:
        Dns Config:
          Nameservers:
            8.8.8.8
        gateway4:  10.200.0.9
        Ip Addresses:
          10.200.0.22/24
        Mac Address:    22:b4:e3:d2:ef:fb
        Name:           eth0
        Resource Name:  vm1-eth0-f2468
    ...
    

Pour plus d'informations, découvrez comment créer et gérer des réseaux virtuels.

Configurer la VM pour les redémarrages automatiques

De nombreuses modifications de configuration de VM, telles que les modifications apportées aux paramètres compute, nécessitent l'arrêt et le redémarrage de la VM pour que les modifications soient synchronisées avec l'instance de VM correspondante (VirtualMachineInstance). Les VM exécutées dans GKE sur une version Bare Metal 1.13.0 ou ultérieure peuvent être configurées pour redémarrer automatiquement chaque fois que vous modifiez leur configuration. Lorsque vous configurez une VM pour utiliser cette fonctionnalité, vous n'avez pas besoin d'arrêter et de redémarrer une VM lorsque vous modifiez sa ressource personnalisée. L'environnement d'exécution de VM sur GDC surveille la VM et, s'il détecte une modification de configuration, il la redémarre automatiquement pour synchroniser les modifications.

Si vous utilisez Config Sync pour gérer vos fichiers de configuration YAML, cette fonctionnalité est particulièrement utile. Sans cette fonctionnalité, vous devez arrêter la VM manuellement avant d'apporter des modifications à la ressource personnalisée VirtualMachine et démarrer la VM manuellement après avoir terminé vos modifications.

Pour activer les redémarrages automatiques, procédez comme suit :

  1. Utilisez kubectl pour modifier la VM :

    kubectl edit gvm VM_NAME
    
  2. Dans votre éditeur, ajoutez le champ autoRestartOnConfigurationChange et définissez-le sur true.

    Vous pouvez apporter des modifications supplémentaires à votre VM, telles que la mise à jour de la valeur vcpus. Si vous modifiez les paramètres compute, l'environnement d'exécution de VM sur GDC redémarre automatiquement votre VM lorsque vous enregistrez vos modifications.

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachine
    metadata:
      ...
      name: vm-sample-01
      namespace: default
      resourceVersion: "16711824"
      uid: ed623879-0cfa-52de-ad2c-b63308e6116c
    spec:
      autoRestartOnConfigurationChange: true
      compute:
        cpu:
          vcpus: 2
          ...
    
  3. Enregistrez et fermez le fichier manifeste de la VM.

    Si vous avez apporté d'autres modifications à la VM devant être synchronisées avec l'instance de VM correspondante, l'environnement d'exécution de VM sur GDC redémarre la VM. Si vous avez uniquement apporté la modification pour activer les redémarrages automatiques, aucun redémarrage de VM n'est nécessaire.

  4. Vérifiez le status de votre VM :

    kubectl get gvm VM_NAME
    

    Selon la vitesse à laquelle vous obtenez la VM, vous pouvez voir state: Starting lorsque la VM redémarre. Une fois la VM redémarrée, state: Running s'affiche. Les modifications de configuration ultérieures apportées à la ressource personnalisée VirtualMachine ne nécessitent pas d'arrêter et de démarrer la VM manuellement. Les modifications apportées ultérieurement à la ressource personnalisée sont reflétées de manière cohérente dans l'instance de VM.

Observez le comportement de la situation suivante :

  • Si vous arrêtez manuellement une VM avant de modifier la ressource personnalisée VirtualMachine, la modification de la configuration ne déclenche pas de redémarrage. L'état de l'arrêt de la VM avant la modification de la configuration est conservé.

  • Si vous avez effectué des changements de libellés ou de planification pour la VM avant l'activation de la fonctionnalité de redémarrage automatique, l'ajout à cette étape de autoRestartOnConfigurationChange sans aucune autre modification ne déclenche pas de redémarrage. Dans l'idéal, cette fonctionnalité permet de maintenir la cohérence de l'instance de VM avec la configuration de la VM. Toutefois, l'environnement d'exécution de VM sur GDC ne peut pas détecter les incohérences antérieures.

Étapes suivantes