Cette page explique comment gérer les machines virtuelles sur votre déploiement Google Distributed Cloud connecté exécutant VM Runtime sur Google Distributed Cloud. Vous devez connaître VM Runtime sur GDC avant de suivre les étapes de cette page. 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 de valider les requêtes utilisateur envoyées au serveur d'API Kubernetes local. Les requêtes refusées génèrent des informations détaillées sur la raison du refus.
Configurer le stockage Symcloud
Google Distributed Cloud connected utilise Rakuten Symcloud Storage comme solution de stockage. Symcloud Storage est une solution tierce qui sert de couche d'abstraction du stockage local sur chaque nœud connecté à Distributed Cloud et met son stockage local à la disposition des charges de travail s'exécutant sur d'autres nœuds connectés à Distributed Cloud.
Symcloud Storage est déployé depuis Google Cloud Marketplace et est soumis aux conditions qui y sont énoncées. Google fournit une assistance limitée pour l'utilisation de Symcloud Storage avec Distributed Cloud connecté et peut faire appel au fournisseur tiers pour obtenir de l'aide. Les mises à jour logicielles de Symcloud Storage sont incluses dans les mises à jour logicielles connectées Distributed Cloud.
Configurez votre cluster Google Distributed Cloud connecté comme suit pour activer Symcloud Storage pour les machines virtuelles. Pour en savoir plus, consultez Installer Symcloud Storage sur un nœud connecté Distributed Cloud.
Créez l'espace de noms
robin-adminà l'aide de la commande suivante :kubectl create ns robin-admin
Obtenez le fichier de licence Symcloud Storage et appliquez-le au cluster à l'aide de la commande suivante :
kubectl apply -f LICENSE_FILE
Remplacez
LICENSE_FILEpar le chemin d'accès au fichier de licence.Vérifiez que Symcloud Storage est opérationnel à l'aide de la commande suivante :
kubectl describe robincluster
La commande renvoie un résultat semblable à celui-ci :
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 …Créez la classe de stockage
robin-block-immediateen appliquant la configuration suivante au cluster :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
Créez la classe d'instantané de volume
robin-snapshotclassen appliquant la configuration suivante au cluster :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: DeleteModifiez le
storageprofilepour la classe de stockagerobin-block-immediateavec le contenu suivant et appliquez-le à votre cluster :apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: robin-block-immediate spec: claimPropertySets: – accessModes: – ReadWriteMany volumeMode: Block
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=v1.3.1-anthos1.35-gke.39 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl ./virtctl sudo mv ./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é avec succès, le résultat de la commande liste
kubectl-virtcomme l'un des plug-ins.
Créer un bucket Cloud Storage pour les images de VM
Suivez les étapes de cette section pour créer un bucket Cloud Storage pour vos images de machine virtuelle. Le bucket utilise la fédération d'identité de charge de travail pour lier un compte de service Kubernetes au compte de service Google Cloud correspondant afin d'accéder au bucket. En d'autres termes, le compte de service Kubernetes emprunte l'identité du compte de service Google Cloud. Si vous disposez déjà d'un dépôt d'images établi, ignorez cette section.
Pour réduire le risque d'identité identique dans un parc multicluster, suivez les consignes décrites dans les bonnes pratiques concernant la fédération d'identité de charge de travail pour un parc lorsque vous effectuez les étapes de cette section.
Suivez la procédure décrite dans Créer des buckets pour créer un bucket.
Créez un compte de service Google Cloud pour accéder au bucket :
export GSA_PROJECT_ID=GSA_PROJECT_ID export GSA_NAME=GSA_NAME gcloud iam service-accounts create ${GSA_NAME}
Remplacez les éléments suivants :
GSA_NAME: nom explicite pour ce compte de service Google Cloud .GSA_PROJECT_ID: ID du projet Google Cloud qui héberge le compte de serviceGoogle Cloud cible.
Accordez au compte de service Google Cloud les autorisations d'accès au bucket :
export BUCKET_PROJECT_ID=BUCKET_PROJECT_ID export GSA_NAME=GSA_NAME gcloud storage buckets add-iam-policy-binding gs://${BUCKET_PROJECT_ID}-vm-images \ --member="serviceAccount:${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer" \ --project=${BUCKET_PROJECT_ID}
Remplacez les éléments suivants :
GSA_NAME: nom du compte de service Google Cloud cible.BUCKET_PROJECT_ID: ID du projet Google Cloud qui héberge le bucket.GSA_PROJECT_ID: ID du projet Google Cloud qui héberge le compte de serviceGoogle Cloud cible.
Créez un compte de service Kubernetes dans l'espace de noms de la machine virtuelle cible pour l'associer à votre compte de service Google Cloud :
export GSA_PROJECT_ID=GSA_PROJECT_ID export VM_NAMESPACE=NAMESPACE export KSA_NAME=KSA_NAME export GSA_EMAIL=${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com kubectl create serviceaccount ${KSA_NAME} -n ${VM_NAMESPACE} kubectl annotate serviceaccount ${KSA_NAME} gsaEmail=${GSA_EMAIL} -n ${VM_NAMESPACE}
Remplacez les éléments suivants :
GSA_PROJECT_ID: ID du projet Google Cloud qui héberge le compte de serviceGoogle Cloud cible.NAMESPACE: espace de noms de la machine virtuelle cible.KSA_NAME: nom explicite pour ce compte de service Kubernetes.GSA_NAME: nom du compte de service Google Cloud correspondant.
Recherchez le nom du pool d'identités de charge de travail et du fournisseur d'identité de votre cluster :
gcloud container fleet memberships describe MEMBERSHIP_ID \ --project=FLEET_PROJECT_ID \ --format="table(authority.identityProvider,authority.workloadIdentityPool,name)"
Remplacez les éléments suivants :
MEMBERSHIP_ID: nom de l'appartenance au parc du cluster. Il s'agit généralement du nom de votre cluster.FLEET_PROJECT_ID: ID du projet hôte Google Cloud du parc.
La commande renvoie un résultat semblable à celui-ci :
IDENTITY_PROVIDER: IDENTITY_PROVIDER WORKLOAD_IDENTITY_POOL: WORKLOAD_IDENTITY_POOLDans le résultat, notez les valeurs suivantes :
IDENTITY_PROVIDER: fournisseur d'identité pour ce cluster.WORKLOAD_IDENTITY_POOL: nom du pool d'identités de charge de travail associé à votre parc. Le nom est au formatFLEET_PROJECT_ID.svc.id.goog. Pour en savoir plus sur la commande de cette étape, consultez Utiliser la fédération d'identité de charge de travail de parc dans les applications.
Associez le compte de service Kubernetes au compte de service Google Cloud pour configurer l'emprunt d'identité :
export GSA_PROJECT_ID=GSA_PROJECT_ID export GSA_NAME=GSA_NAME export KSA_NAME=KSA_NAME export VM_NAMESPACE=NAMESPACE export WI_POOL=WORKLOAD_IDENTITY_POOL gcloud iam service-accounts add-iam-policy-binding ${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com \ --project=${GSA_PROJECT_ID} \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${WI_POOL}[${VM_NAMESPACE}/${KSA_NAME}]" --condition="IAM_CONDITION" --condition-from-file="IAM_CONDITION_FILE"
Remplacez les éléments suivants :
GSA_PROJECT_ID: ID du projet Google Cloud qui héberge le compte de serviceGoogle Cloud cible.GSA_NAME: nom du compte de service Google Cloud correspondant.KSA_NAME: nom du compte de service Kubernetes cible.NAMESPACE: espace de noms de la machine virtuelle cible.WORKLOAD_IDENTITY_POOL: nom du pool d'identités de charge de travail de votre cluster.IAM_CONDITION: facultatif. Spécifie les conditions IAM à utiliser pour limiter l'accès à des clusters spécifiques du parc. Si cette valeur est omise ou définie surNone, aucune condition IAM ne s'applique.IAM_CONDITION_FILE: facultatif. Spécifie le fichier contenant les conditions IAM à utiliser pour limiter l'accès à des clusters spécifiques du parc. Si elle est omise, aucune condition IAM ne s'applique, sauf si l'indicateur--conditionest spécifié et défini sur une valeur autre queNone.
Stockez vos images dans le bucket.
Vous pouvez également utiliser l'ancienne méthode avec un secret généré à partir de la clé active de votre compte de service Google. Pour en savoir plus, consultez Créer un bucket Cloud Storage pour les images de machines virtuelles.
Restreindre l'accès au bucket avec des conditions IAM
Les conditions IAM vous permettent de spécifier les clusters du parc qui peuvent accéder au bucket. Si aucune condition IAM n'est spécifiée, tous les clusters du parc ayant le même compte de service Kubernetes dans le même espace de noms peuvent accéder au bucket, ce qui présente un risque d'uniformité des identités. Si vous ne spécifiez pas de conditions IAM, vous pouvez également revenir à l'ancien mécanisme d'accès qui utilise un secret généré à partir de la clé active d'un compte de service Google. Voici un exemple de configuration et d'application des conditions IAM pour limiter l'accès à votre bucket :
Créez le fichier de condition IAM :
cat <<EOF > iam_condition.yaml > expression: request.auth.claims.google.providerId == '$IDENTITY_PROVIDER' title: allow_only_this_cluster > EOF
Appliquez le fichier de conditions IAM lorsque vous associez le compte de service Google Cloud au compte de service Kubernetes. Exécutez la commande suivante dans votre projet Google Cloud de compte de service Google Cloud :
gcloud iam service-accounts add-iam-policy-binding "${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com" \ --project="${GSA_PROJECT_ID}" \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${WI_POOL}[${VM_NAMESPACE}/${KSA_NAME}]" \ --condition-from-file=iam_condition.yaml
Créer un disque de machine virtuelle à partir d'une image de machine virtuelle
Suivez les étapes de cette section pour créer un disque de machine virtuelle à partir d'une image de machine virtuelle.
Créer un disque à partir d'une image stockée dans Cloud Storage
Créez un disque de machine virtuelle à partir d'une machine virtuelle stockée dans votre bucket Cloud Storage en appliquant la configuration suivante à votre cluster :
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: gcs: url: gs://${BUCKET_PROJECT_ID}-vm-images/IMAGE_FILE_PATH serviceAccount: KSA_NAME size: DISK_SIZE storageClassName: robin-block-immediate
Remplacez les éléments suivants :
DISK_NAME: nom de ce disque de machine virtuelle.NAMESPACE: espace de noms de la machine virtuelle cible.IMAGE_FILE_PATH: chemin d'accès complet et nom du fichier image de la machine virtuelle. Effectuez un clic droit sur l'image dans la console Google Cloud , puis sélectionnez Copier l'URI gsutil pour obtenir ce chemin d'accès.KSA_NAME: compte de service Kubernetes pour télécharger les images de machine virtuelle que vous avez créées précédemment.DISK_SIZE: taille du disque cible. Cette valeur doit être supérieure à la valeurvirtual-sizedu fichier image de la machine virtuelle. Vous pouvez trouver cette valeur avec la commandeqemu-img info DISK_SIZE.
Si vous ne spécifiez pas de valeur storageClassName, la valeur par défaut spécifiée dans la ressource VMRuntime est utilisée.
Créer un disque à partir d'une image stockée sur un service tiers
Vous pouvez également utiliser http, https, S3 ou un registre d'images pour stocker vos images de machines virtuelles. Si votre service de stockage nécessite des identifiants pour l'accès, convertissez-les en secret et spécifiez ce secret à l'aide du champ secretRef.
Exemple :
source: http/s3/registry: url: secretRef: "SECRET_NAME" # optional
Remplacez SECRET_NAME par le nom de votre secret.
Pour en savoir plus, consultez Source HTTP/S3/GCS/Registry.
Créer un disque vide
Créez un disque de machine virtuelle vide en appliquant la configuration suivante à votre cluster :
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: size: DISK_SIZE storageClassName: robin-block-immediate
Remplacez les éléments suivants :
DISK_NAME: nom de ce disque de machine virtuelle.NAMESPACE: espace de noms cible.DISK_SIZE: taille du disque souhaitée en gibioctets. Cette valeur doit être supérieure à la valeurvirtual-sizedu fichier image de la machine virtuelle. Vous pouvez trouver cette valeur avec la commandeqemu-img info DISK_SIZE.
Si vous ne spécifiez pas de valeur storageClassName, la valeur par défaut spécifiée dans la ressource VMRuntime est utilisée.
Configurer la mise en réseau virtuelle
Suivez la procédure décrite dans Mise en réseau pour configurer la mise en réseau virtuelle de vos machines virtuelles.
Créer une machine virtuelle
Suivez les étapes de cette section pour créer une machine virtuelle sur votre déploiement de serveur connecté Distributed Cloud. Les instructions de cette section sont des exemples destinés à illustrer des configurations pour différents scénarios. Pour en savoir plus sur la configuration des machines virtuelles, consultez Créer une VM avec des ressources de processeur et de mémoire spécifiques en utilisant l'environnement d'exécution des VM sur GDC.
L'allocation de ressources pour les VM est limitée par les profils matériels de votre déploiement Distributed Cloud connecté, tels que le matériel G1 ou G2. Vous ne pouvez pas dimensionner une seule VM au-delà de la taille de la machine physique Distributed Cloud connectée sur laquelle elle s'exécute.
Créer une machine virtuelle à l'aide de la console Google Cloud
Pour créer une machine virtuelle à l'aide de la console Google Cloud , procédez comme suit :
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez le projet cible Google Cloud .
(Facultatif) Si vous ne l'avez pas déjà fait, connectez-vous au cluster cible :
Dans le volet de navigation de gauche, cliquez sur Clusters.
Dans la liste Clusters gérés par Anthos, cliquez sur le cluster cible.
Dans le volet d'informations sur la droite, cliquez sur SE CONNECTER.
Dans la boîte de dialogue pop-up qui s'affiche, sélectionnez votre méthode d'authentification préférée, saisissez vos identifiants, puis cliquez sur SE CONNECTER.
Accédez à la page Machines virtuelles.
Cliquez sur CRÉER.
Dans la section Informations de base, procédez comme suit :
Dans le champ Nom, saisissez un nom explicite pour la machine virtuelle.
Dans le champ Sélectionner un cluster, sélectionnez le cluster cible pour la machine virtuelle.
Dans le champ Espace de noms, sélectionnez l'espace de noms cible.
Dans le champ Type d'OS, sélectionnez le système d'exploitation cible.
(Facultatif) Si vous souhaitez ajouter un ou plusieurs libellés à la configuration de cette machine virtuelle, cliquez sur AJOUTER UN LIBELLÉ.
Dans la section Configuration de la machine, effectuez l'une des opérations suivantes :
Si vous souhaitez spécifier le nombre de processeurs virtuels et la quantité de mémoire pour cette machine virtuelle, sélectionnez Configuration personnalisée, saisissez les valeurs cibles, puis cliquez sur SUIVANT.
Si vous souhaitez utiliser un nombre prédéterminé de processeurs virtuels et une quantité de mémoire pour cette machine virtuelle, sélectionnez Configuration standard, puis une configuration de machine dans la liste déroulante Type de machine, puis cliquez sur SUIVANT.
Dans la section Stockage, effectuez l'une des opérations suivantes :
Si vous souhaitez créer un disque virtuel pour cette machine virtuelle, sélectionnez Ajouter un disque, puis saisissez un nom explicite dans le champ Nom, une taille en gigaoctets dans le champ Go et une URL dans le champ Image.
Si vous souhaitez utiliser un disque virtuel existant pour cette machine virtuelle, sélectionnez Sélectionner un disque existant, puis sélectionnez l'image disque cible dans la liste déroulante Sélectionner un disque.
Indiquez si vous souhaitez que le disque soit en lecture seule et s'il sera automatiquement supprimé lorsque cette machine virtuelle sera supprimée, à l'aide des cases à cocher Lecture seule et Suppression automatique.
Spécifiez un pilote de disque virtuel dans la liste déroulante Pilote.
Pour ajouter un autre disque à cette machine virtuelle, cliquez sur AJOUTER UN DISQUE dans la section Disques supplémentaires.
Cliquez sur SUIVANT.
Dans la section Réseau, procédez comme suit :
Dans la sous-section Interface réseau par défaut, spécifiez le nom de l'interface réseau principale de cette machine virtuelle dans le champ Nom de l'interface.
Sélectionnez le type de réseau correspondant dans la liste déroulante Type de réseau.
Indiquez si vous souhaitez autoriser l'accès externe à cette interface réseau à l'aide de la case à cocher Autoriser l'accès externe. Si vous activez cette option, vous devez saisir une liste de ports à exposer en externe, séparés par une virgule, dans le champ Ports exposés.
Si vous souhaitez ajouter une ou plusieurs interfaces réseau secondaires à cette machine virtuelle, cliquez sur AJOUTER UNE INTERFACE RÉSEAU.
Cliquez sur SUIVANT.
Dans la section Options avancées, cochez la case Redémarrage automatique lors de la mise à jour pour indiquer si cette machine virtuelle doit redémarrer après la mise à jour du logiciel connecté Distributed Cloud sur le cluster cible.
Dans la section Firmware, procédez comme suit :
Sélectionnez le type de micrologiciel cible dans le champ Type de bootloader. Si vous sélectionnez le micrologiciel UEFI, vous pouvez activer le démarrage sécurisé en cochant la case Démarrage sécurisé.
Spécifiez un numéro de série pour cette machine virtuelle dans le champ Numéro de série.
Spécifiez un identifiant unique universel (UUID) pour cette machine virtuelle dans le champ UUID.
Dans la section Cloud-init, procédez comme suit :
Spécifiez une valeur de secret des données réseau dans le champ Secret des données réseau.
Spécifiez une valeur secrète pour les données utilisateur dans le champ Secret des données utilisateur.
Cliquez sur CRÉER UNE VM pour créer la machine virtuelle.
Créer une machine virtuelle à partir d'un fichier YAML
Pour créer une machine virtuelle à partir d'un fichier de configuration YAML, procédez comme suit :
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez le projet cible Google Cloud .
(Facultatif) Si vous ne l'avez pas déjà fait, connectez-vous au cluster cible :
Dans le volet de navigation de gauche, cliquez sur Clusters.
Dans la liste Clusters gérés par Anthos, cliquez sur le cluster cible.
Dans le volet d'informations sur la droite, cliquez sur SE CONNECTER.
Dans la boîte de dialogue pop-up qui s'affiche, sélectionnez votre méthode d'authentification préférée, saisissez vos identifiants, puis cliquez sur SE CONNECTER.
Accédez à la page Machines virtuelles.
Cliquez sur CRÉER AVEC YAML.
Dans le champ Sélectionner un cluster, sélectionnez le cluster cible pour la machine virtuelle.
Collez la configuration de la machine virtuelle au format YAML dans le champ YAML.
Cliquez sur CRÉER.
Créer une machine virtuelle à partir d'une image disque bootable
Pour créer une machine virtuelle à partir d'une image de disque amorçable, appliquez la configuration suivante à votre cluster :
kind: VirtualMachine metadata: name: my-virtual-machine namespace: NAMESPACE spec: osType: Linux/Windows guestEnvironment: {} // comment out this line to enable guest environment for access management priorityClassName: PRIORITY_CLASS compute: cpu: vcpus: 6 memory: capacity: 8Gi interfaces: - name: eth0 networkName: network-410 ipAddresses: - 10.223.237.10/25 disks: - virtualMachineDiskName: DISK_NAME boot: true - virtualMachineDiskName: DISK_NAME
Remplacez les éléments suivants :
NAMESPACE: espace de noms cible.PRIORITY_CLASS: classe de priorité de cette machine virtuelle. Une classe de priorité est une plage de valeurs de priorité. Utilisezkubectl get priorityclasspour obtenir la liste des classes de priorité acceptées. Nous vous recommandons d'attribuer une classe de priorité correspondant à une valeur de priorité comprise entre5,001,000et1,000,000,000. Des valeurs de priorité plus élevées réduisent le risque d'éviction de la machine virtuelle lorsque le système est surchargé. Si elle est omise, la machine virtuelle reçoit la valeur de priorité la plus basse par défaut.DISK_NAME: noms des disques de cette machine virtuelle.vcpus: nombre de processeurs virtuels à attribuer à la VM.capacity: quantité de mémoire à attribuer à la VM. Par exemple,4Giou8Gi.ipAddresses: facultatif, permet d'attribuer une adresse IP statique à la machine virtuelle. Si le réseau L2 sous-jacent est compatible avec le serveur DHCP externe, vous pouvez omettreipAddressespour autoriser l'allocation dynamique.
Utiliser l'API cloud-init pour initialiser les VM
L'API cloud-init est une méthode standard pour initialiser une VM cloud. Utilisez cloud-init pour configurer les fichiers, les utilisateurs et d'autres aspects de votre VM.
Pour garantir la compatibilité, validez vos routines de démarrage cloud-init, en particulier les données réseau, par rapport à la configuration réseau connectée de votre Distributed Cloud. Avant d'utiliser la configuration en production, appliquez-la à une VM de test pour vous assurer qu'elle s'initialise correctement et configure le réseau de manière appropriée.
Les exemples suivants sont génériques et doivent être testés dans votre environnement.
Automatiser la configuration des VM avec les données utilisateur cloud-init
L'environnement d'exécution de VM sur GDC est compatible avec les données utilisateur cloud-init pour les VM Linux.
Vous pouvez spécifier les données utilisateur sous forme de chaîne en texte brut, de chaîne encodée en base64 ou en référençant un secret Kubernetes.
Pour vous assurer que votre VM s'initialise correctement, validez toutes les configurations de données utilisateur avant de les déployer dans un environnement de production.
L'exemple suivant montre un fichier manifeste VirtualMachine qui inclut des données utilisateur cloud-init en texte clair pour exécuter une commande au démarrage de la VM :
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: compute: cpu: vcpus: 2 memory: capacity: 4Gi osType: Linux cloudInit: noCloud: userData: | #cloud-config runcmd: - echo "Hello World" > /tmp/hello.txt
Remplacez VM_NAME par le nom de la machine virtuelle.
Pour créer la VM avec les données cloud-init, enregistrez le fichier manifeste sous le nom vm-cloud-init.yaml et appliquez-le à votre cluster en exécutant la commande kubectl apply :
kubectl apply -f vm-cloud-init.yaml
Résoudre les problèmes liés à cloud-init
Si vous rencontrez des problèmes avec cloud-init, vérifiez les journaux dans la VM. Vous pouvez généralement trouver les journaux dans les répertoires suivants :
/var/log/cloud-init.log/var/log/cloud-init-output.log
Si cloud-init échoue avant le démarrage de la VM, peut-être en raison d'un secret Kubernetes manquant ou d'une pièce jointe de volume mal formée, l'OS invité ne démarre pas. Pour résoudre le problème, commencez par inspecter l'état de la ressource de VM avec la commande kubectl describe virtualmachine VM_NAME, puis inspectez les événements de montage de volume de pod avec la commande kubectl describe pod -l kubevirt.io/vm=VM_NAME.
Créer une machine virtuelle à partir d'une image de disque optique ISO
Vous pouvez créer une machine virtuelle (VM) Windows qui démarre à partir d'une image ISO à l'aide de l'environnement d'exécution de VM sur GDC. Cette fonctionnalité vous permet de migrer des applications d'entreprise Windows anciennes, des logiciels tiers spécialisés ou des systèmes de point de vente personnalisés directement vers vos clusters connectés Distributed Cloud.
Les images utilisées pour les disques de VM sont importées à partir d'un bucket d'images connecté à Distributed Cloud. Avant de créer les fichiers manifestes, vous devez télécharger l'ISO d'installation de Windows et l'ISO des pilotes virtio de KubeVirt, puis les importer dans votre bucket d'images. Nous vous recommandons de conserver une copie validée de l'ISO des pilotes dans un dépôt interne ou de la préconfigurer dans Cloud Storage pour garantir des builds de machines virtuelles fiables et reproductibles.
Créer les fichiers manifestes
Pour démarrer à partir d'une image ISO Windows, vous avez besoin des fichiers manifestes suivants :
VirtualMachineDiskcontenant l'ISO Windows.- Un
VirtualMachineDiskcontenant les pilotesvirtioKubeVirt pour Windows. - Un
VirtualMachineDiskvide qui servira de disque de démarrage sur lequel Windows sera installé.
Les exemples suivants montrent les fichiers manifestes VirtualMachineDisk pour les trois disques requis.
Dans les fichiers manifestes, remplacez les éléments suivants :
BUCKET_PROJECT_ID: ID du projet dans lequel se trouve votre bucket d'images.KSA_NAME: compte de service Kubernetes disposant des autorisations nécessaires pour lire le contenu du bucket.
Le PVC size demandé dans les fichiers manifestes doit toujours être supérieur ou égal à la taille virtuelle exacte de l'ISO.
Disque ISO Windows
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso spec: size: 10Gi storageClassName: robin-block-immediate diskType: cdrom source: gcs: url: gs://BUCKET_PROJECT_ID-vm-images/windows.iso serviceAccount: KSA_NAME
Disque de pilotes VirtIO
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: virtio-driver spec: size: 1Gi storageClassName: robin-block-immediate diskType: cdrom source: gcs: url: gs://BUCKET_PROJECT_ID-vm-images/virtio-win.iso serviceAccount: KSA_NAME
Disque de démarrage vide
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-vm-boot-dv spec: size: 40Gi storageClassName: robin-block-immediate
Créer les disques
Pour créer ces disques, enregistrez les fichiers manifestes VirtualMachineDisk et appliquez-les à votre cluster en exécutant la commande kubectl apply :
kubectl apply -f windows-iso.yaml
kubectl apply -f virtio-driver.yaml
kubectl apply -f windows-vm-boot-dv.yaml
Créer une VM Windows
Pour créer une VM Windows, créez un fichier manifeste qui définit la VM et fait référence aux disques. La VM démarre à partir du disque ISO pour lancer l'installation.
L'exemple suivant illustre un fichier manifeste VirtualMachine :
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: windows-vm name: windows-vm spec: osType: Windows disks: - virtualMachineDiskName: windows-vm-boot-dv boot: true - virtualMachineDiskName: windows-iso - virtualMachineDiskName: virtio-driver compute: cpu: vcpus: 2 memory: capacity: 4Gi interfaces: - name: eth0 networkName: network-410 default: true ipAddresses: - 10.223.237.10/25
Pour créer la VM, enregistrez le fichier manifeste sous le nom windows-vm.yaml et appliquez-le à votre cluster en exécutant la commande kubectl apply :
kubectl apply -f windows-vm.yaml
Connecter et terminer l'installation
Pour vous connecter et terminer l'installation, procédez comme suit :
Pour vous connecter à la VM à l'aide de VNC, utilisez l'outil
virtctlou le plug-inkubectl virt:virtctl vnc windows-vmOu, si vous avez installé
virtctlen tant que plug-inkubectl:kubectl virt vnc windows-vmPour en savoir plus sur
virtctl, consultez la documentation KubeVirt.Suivez les instructions affichées par le programme d'installation de Windows. Lorsque vous y êtes invité, sélectionnez Installation personnalisée.
Lorsque vous y êtes invité, chargez les pilotes
virtiopour le stockage et le réseau en accédant au disquevirtio-driverassocié.Terminez l'installation.
Accès via le protocole RDP
Une fois que vous avez installé et activé le protocole RDP (Remote Desktop Protocol) dans l'OS invité, vous pouvez accéder à la VM via RDP.
Étant donné que la machine virtuelle est associée à un réseau L2, elle est directement accessible depuis l'extérieur du cluster à l'aide de son adresse IP attribuée (par exemple, 10.223.237.10). Connectez-vous à cette adresse IP sur le port 3389 à l'aide d'un client RDP. Assurez-vous que l'adresse IP interne L2 est accessible depuis votre machine cliente via votre pare-feu d'entreprise et vos règles de routage.
Créer une machine virtuelle compatible avec les GPU
Suivez les étapes décrites sur cette page pour créer une machine virtuelle configurée en fonction des besoins de votre entreprise, puis suivez les étapes décrites dans Configurer une machine virtuelle pour utiliser des ressources GPU.
Accéder à une machine virtuelle
Suivez les étapes de cette section pour accéder à une machine virtuelle exécutée sur votre déploiement de serveur connecté Distributed Cloud.
Obtenir des identifiants d'accès
Si vous ne disposez pas encore d'identifiants pour accéder à la machine virtuelle, suivez les étapes de cette section pour les obtenir à l'aide de la fonctionnalité d'environnement invité Linux.
Activez l'environnement invité Linux pour la machine virtuelle cible en appliquant la configuration suivante à votre cluster :
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux guestEnvironment: // enabled by default; disable with guestEnvironment: {} accessManagement: enable: true
Générez un fichier
id_rsa.pubcontenant une paire de clés SSH à l'aide de la commande suivante :ssh-keygen -t rsaCréez une ressource
VirtualMachineAccessRequesten appliquant la configuration suivante à votre cluster :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
Remplacez les éléments suivants :
RESOURCE_NAME: nom descriptif de cette ressource de demande d'accès à la machine virtuelle.NAMESPACE: espace de noms cible.VM_NAME: nom de la machine virtuelle cible.USER_NAME: nom de l'utilisateur auquel l'accès est accordé.RSA_KEY: contenu du fichierid_rsa.pubque vous avez généré à l'étape précédente.
Vérifiez l'état de la demande d'accès à l'aide de la commande suivante :
kubectl get vmar
Lorsque la commande renvoie un état
Configured, passez à l'étape suivante.Accédez à la machine virtuelle avec SSH ou le Bureau à distance :
- Si la machine virtuelle est connectée à votre réseau local, vous pouvez y accéder directement.
- Si la machine virtuelle est connectée au réseau de pods, vous devez créer un service d'équilibreur de charge pour accéder aux ports requis.
Démarrer, redémarrer ou arrêter une machine virtuelle
Utilisez les commandes suivantes pour démarrer, redémarrer ou arrêter une machine virtuelle :
- Démarrer une machine virtuelle :
kubectl virt start vmVM_NAME-nNAMESPACE - Redémarrer une machine virtuelle :
kubectl virt restart vmVM_NAME-nNAMESPACE - Arrêter une machine virtuelle :
kubectl virt stop vmVM_NAME-nNAMESPACE
Remplacez les éléments suivants :
VM_NAME: nom de la machine virtuelle cible.NAMESPACE: espace de noms cible.
Démarrer ou arrêter une machine virtuelle à l'aide de la console Google Cloud
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez le projet cible Google Cloud .
(Facultatif) Si vous ne l'avez pas déjà fait, connectez-vous au cluster cible :
Dans le volet de navigation de gauche, cliquez sur Clusters.
Dans la liste Clusters gérés par Anthos, cliquez sur le cluster cible.
Dans le volet d'informations sur la droite, cliquez sur SE CONNECTER.
Dans la boîte de dialogue qui s'affiche, sélectionnez votre méthode d'authentification préférée, saisissez vos identifiants, puis cliquez sur SE CONNECTER.
Accédez à la page Machines virtuelles.
Dans la liste des machines virtuelles, cochez la ou les cases correspondant aux machines virtuelles cibles.
En haut de la page, cliquez sur DÉMARRER ou ARRÊTER, selon le cas.
Afficher l'état d'une machine virtuelle à l'aide de la console Google Cloud
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez le projet cible Google Cloud .
(Facultatif) Si vous ne l'avez pas déjà fait, connectez-vous au cluster cible :
Dans le volet de navigation de gauche, cliquez sur Clusters.
Dans la liste Clusters gérés par Anthos, cliquez sur le cluster cible.
Dans le volet d'informations sur la droite, cliquez sur SE CONNECTER.
Dans la boîte de dialogue pop-up qui s'affiche, sélectionnez votre méthode d'authentification préférée, saisissez vos identifiants, puis cliquez sur SE CONNECTER.
Accédez à la page Machines virtuelles.
Cliquez sur la machine virtuelle cible.
Sur la page qui s'affiche, cliquez sur les onglets Détails, Événements et YAML pour afficher les informations correspondantes sur cette machine virtuelle.
Modifier une machine virtuelle
Pour modifier une machine virtuelle, vous devez la supprimer et la recréer avec la configuration mise à jour.
Supprimer une machine virtuelle à l'aide de la console Google Cloud
Dans la console Google Cloud , accédez à la page Clusters.
Sélectionnez le projet cible Google Cloud .
(Facultatif) Si vous ne l'avez pas déjà fait, connectez-vous au cluster cible :
Dans le volet de navigation de gauche, cliquez sur Clusters.
Dans la liste Clusters gérés par Anthos, cliquez sur le cluster cible.
Dans le volet d'informations sur la droite, cliquez sur SE CONNECTER.
Dans la boîte de dialogue qui s'affiche, sélectionnez votre méthode d'authentification préférée, saisissez vos identifiants, puis cliquez sur SE CONNECTER.
Accédez à la page Virtual Machines.
Dans la liste des machines virtuelles, cochez la case de la machine virtuelle cible.
En haut de la page, cliquez sur SUPPRIMER.
Dans la boîte de dialogue de confirmation qui s'affiche, saisissez le nom de la machine virtuelle, puis cliquez sur SUPPRIMER.
Étapes suivantes
- 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