L’adoption d’architectures cloud-native et de la conteneurisation transforme notre façon de développer, déployer et gérer des applications. Les conteneurs offrent vitesse, agilité et évolutivité, entraînant un changement significatif dans les stratégies informatiques. Cependant, la réalité pour de nombreuses organisations est que les machines virtuelles (VM) continuent de jouer un rôle critique, surtout en ce qui concerne les applications héritées ou à état. Même des institutions financières de premier plan comme Goldman Sachs reconnaissent la valeur des VM aux côtés des charges de travail conteneurisées et explorent des moyens de les gérer efficacement.
Cela crée un potentiel fossé : les avantages de la conteneurisation d’un côté et le besoin persistant de VM de l’autre. KubeVirt comble cette lacune en étendant la puissance de Kubernetes à la gestion des machines virtuelles, vous donnant la capacité d’unifier votre infrastructure tout en facilitant une transition plus fluide vers les technologies cloud-native.
Dans cet article, nous explorons pourquoi KubeVirt est une solution convaincante pour les organisations cherchant à rationaliser les opérations informatiques et à gagner en flexibilité dans un environnement d’infrastructure hybride.
Qu’est-ce que KubeVirt exactement ?
KubeVirt est un projet open-source qui transforme Kubernetes en une plateforme puissante capable de gérer à la fois des conteneurs et des machines virtuelles. En termes simples, KubeVirt transforme Kubernetes en un plan de contrôle unique pour l’ensemble de votre infrastructure.
Voici comment cela fonctionne :
- KubeVirt en tant qu’extension : KubeVirt ajoute des définitions de ressources personnalisées (CRD) à Kubernetes, introduisant un nouveau type d’objet représentant des machines virtuelles.
- Machines virtuelles en tant que « pods » : Grâce à KubeVirt, chaque machine virtuelle s’exécute dans un pod spécialisé, intégrant étroitement les machines virtuelles dans l’écosystème Kubernetes.
- Gestion simplifiée des machines virtuelles avec Kubernetes : Vous pouvez désormais tirer parti des mêmes outils Kubernetes (
kubectl
et l’API Kubernetes) et des meilleures pratiques pour créer, démarrer, arrêter, migrer et surveiller les machines virtuelles aux côtés de vos charges de travail conteneurisées.
Considérez KubeVirt comme permettant à Kubernetes de parler le langage de la virtualisation, ouvrant un monde de possibilités pour la gestion de votre infrastructure.
L’impact commercial de KubeVirt
KubeVirt offre des avantages tangibles qui vont au-delà de l’élégance technique. En adoptant KubeVirt, votre organisation peut bénéficier des éléments suivants :
- Gestion fluide des charges de travail : Brisez les barrières entre vos applications basées sur des machines virtuelles et vos charges de travail conteneurisées. Gérez tout depuis une plateforme unique en utilisant les mêmes outils et processus, simplifiant considérablement les opérations et réduisant la complexité.
- Efficacité des ressources améliorée : KubeVirt vous permet d’exécuter à la fois des machines virtuelles traditionnelles et des conteneurs sur le même matériel de cluster sous-jacent. Optimisez l’utilisation des ressources, améliorez la densité de l’infrastructure et réalisez potentiellement des économies de coûts significatives.
- Modernisation accélérée : Les applications héritées liées aux VM ne doivent pas être un obstacle à l’innovation. KubeVirt offre un chemin progressif pour moderniser les applications à votre propre rythme. Vous pouvez containeriser et migrer des composants au fil du temps, le tout dans le même environnement Kubernetes, minimisant ainsi les perturbations.
- Infrastructure pérenne : En investissant dans KubeVirt, vous vous alignez sur les principes cloud-native et positionnez Kubernetes comme la colonne vertébrale de votre pile technologique. Cela favorise la flexibilité et l’agilité, vous permettant de vous adapter facilement aux exigences commerciales évolutives.
Pourquoi votre organisation devrait-elle s’en soucier ?
KubeVirt offre une valeur convaincante, en particulier dans ces domaines :
- Équipes IT et DevOps : KubeVirt simplifie les opérations en fournissant un plan de contrôle unifié pour tous vos workloads. Il vous permet de rationaliser les flux de travail, de réduire les coûts d’outils et d’améliorer l’efficacité globale de l’équipe.
- Dirigeants : Obtenez une flexibilité opérationnelle et réalisez des réductions de coûts ainsi qu’un chemin simplifié vers la modernisation de l’infrastructure. KubeVirt aligne les investissements technologiques avec le succès commercial à long terme.
- Charges de travail mixtes : Si vous gérez à la fois des applications héritées basées sur des VM et des déploiements modernes containerisés, KubeVirt est essentiel. Il vous permet d’éviter le verrouillage par un fournisseur, de minimiser la complexité et de maintenir un contrôle total sur vos choix d’infrastructure.
Voici quelques points de douleur spécifiques que KubeVirt aborde :
- Frustré de gérer des environnements séparés pour les VM et les conteneurs ? KubeVirt les regroupe, rendant la gestion beaucoup plus facile.
- Vous cherchez de la flexibilité sans compromettre vos investissements existants ? KubeVirt vous permet de tirer parti de votre infrastructure VM tout en la modernisant.
- Vous souhaitez améliorer l’efficacité des coûts et l’utilisation des ressources ? KubeVirt vous aide à consolider les charges de travail pour une meilleure utilisation.
- Vous avez du mal avec les migrations complexes d’applications héritées ? Modernisez de manière progressive et contrôlez votre rythme avec KubeVirt.
Commencer : Déploiement et Implémentation
Le déploiement de KubeVirt nécessite un environnement Kubernetes bien préparé. Cette section fournit un guide détaillé pour vous aider à configurer et mettre en œuvre KubeVirt dans votre infrastructure.
Prérequis
Avant de commencer, assurez-vous que les exigences suivantes sont satisfaites :
1. Cluster Kubernetes
Vous avez besoin d’un cluster Kubernetes (ou dérivé tel qu’OpenShift) basé sur l’une des trois dernières versions de Kubernetes disponibles au moment de la sortie de KubeVirt.
2. Configuration du Serveur API Kubernetes
Le serveur API Kubernetes doit être configuré avec --allow-privileged=true
pour exécuter le DaemonSet privilégié de KubeVirt.
3. Utilitaire Kubectl
Assurez-vous d’avoir l’utilitaire client kubectl
installé et configuré pour interagir avec votre cluster.
4. Prise en charge du Runtime de Conteneur
KubeVirt est pris en charge sur les runtimes de conteneurs suivants :
Containerd
crio
(avecrunv
)
D’autres runtimes de conteneurs devraient également fonctionner, mais ceux mentionnés sont les cibles principales.
5. Virtualisation matérielle
Il est recommandé d’utiliser du matériel avec prise en charge de la virtualisation. Vous pouvez utiliser virt-host-validate
pour vous assurer que vos hôtes sont capables d’exécuter des charges de travail de virtualisation :
$ virt-host-validate qemu
Considérations en matière de réseau et de sécurité
-
Configuration du réseau : Planifiez comment vos machines virtuelles se connecteront et interagiront avec les réseaux externes et le reste de votre environnement Kubernetes.
-
Intégration d’AppArmor : Sur les systèmes avec AppArmor activé, vous pourriez avoir besoin de modifier les profils AppArmor pour permettre l’exécution de conteneurs privilégiés de KubeVirt. Par exemple :
# vim /etc/apparmor.d/usr.sbin.libvirtd
/usr/libexec/qemu-kvm PUx,
# apparmor_parser -r /etc/apparmor.d/usr.sbin.libvirtd
Installation de KubeVirt
Pour installer KubeVirt, suivez ces étapes :
1. Installer l’opérateur KubeVirt
L’opérateur KubeVirt simplifie l’installation et la gestion des composants de KubeVirt. Exécutez les commandes suivantes pour déployer la dernière version de KubeVirt :
# Point at latest release
$ export RELEASE=$(curl https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
# Deploy the KubeVirt operator
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-operator.yaml
# Create the KubeVirt CR (instance deployment request) which triggers the actual installation
$ kubectl apply -f https://github.com/kubevirt/kubevirt/releases/download/$ RELEASE /kubevirt-cr.yaml
# Wait until all KubeVirt components are up
$ kubectl -n kubevirt wait kv kubevirt --for condition=Available
2. Configuration pour la virtualisation sans matériel
Si la virtualisation matérielle n’est pas disponible, activez l’émulation logicielle en définissant useEmulation sur true dans le CR de KubeVirt :
$ kubectl edit -n kubevirt kubevirt kubevirt
# Add the following to the kubevirt.yaml file
spec
configuration
developerConfiguration
useEmulationtrue
Pratiques exemplaires d’implémentation
Pour tirer le meilleur parti de KubeVirt, suivez ces bonnes pratiques :
1. Effectuer une évaluation de la charge de travail
Priorisez les VMs qui sont adaptées à la conteneurisation. Commencez par des applications moins critiques pour acquérir une expérience pratique.
2. Évaluez le Réseau et le Stockage
Planifiez comment relier le réseau des VMs avec votre réseau Kubernetes existant et intégrez des solutions de stockage pour des données persistantes en utilisant les plugins Container Storage Interface (CSI).
3. Mettez l’accent sur la Surveillance et la Gestion
Utilisez des outils de surveillance Kubernetes ou explorez des solutions spécifiques à KubeVirt pour obtenir de la visibilité sur les performances des VMs aux côtés de vos conteneurs.
4. Migration à Chaud
Activez et configurez la migration à chaud pour déplacer des VMs en cours d’exécution vers d’autres nœuds de calcul sans temps d’arrêt. Cela implique de définir des portes de fonctionnalités et de configurer des paramètres spécifiques à la migration dans le CR de KubeVirt :
apiVersion kubevirt.io/v1
kind KubeVirt
metadata
name kubevirt
namespace kubevirt
spec
configuration
developerConfiguration
featureGates
LiveMigration
migrations
parallelMigrationsPerCluster5
parallelOutboundMigrationsPerNode2
bandwidthPerMigration 64Mi
completionTimeoutPerGiB800
progressTimeout150
Exemple d’Installation sur OpenShift (OKD)
Si vous utilisez OKD, des étapes supplémentaires incluent la configuration des Security Context Constraints (SCC) :
$ oc adm policy add-scc-to-user privileged -n kubevirt -z kubevirt-operator
Exemple d’Installation sur k3OS
Pour k3OS, assurez-vous de charger les modules requis sur tous les nœuds avant de déployer KubeVirt :
k3os
modules
kvm
vhost_net
Redémarrez les nœuds avec cette configuration, puis déployez KubeVirt comme décrit ci-dessus.
Installation des Versions Quotidiennes pour Développeurs
Pour les dernières versions pour développeurs, exécutez :
$ LATEST=$(curl -L https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/latest)
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-operator.yaml
$ kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/$ LATEST /kubevirt-cr.yaml
Déploiement à partir de la Source
En suivant ces étapes et meilleures pratiques, vous pouvez garantir une mise en œuvre de KubeVirt fluide et réussie, offrant une solution de gestion d’infrastructure unifiée qui exploite à la fois des machines virtuelles et des conteneurs.
Meilleures Pratiques de Mise en Œuvre
Suivez ces meilleures pratiques pour tirer le meilleur parti de KubeVirt :
- Réalisez une évaluation des charges de travail : Toutes les applications ne sont pas immédiatement adaptées à KubeVirt. Priorisez les VM avec un bon potentiel de conteneurisation. Les applications moins critiques peuvent être un excellent moyen d’acquérir une expérience pratique tout en minimisant les risques.
- Évaluez le réseau et le stockage : Considérez soigneusement comment relier le réseau des VM à votre réseau Kubernetes existant. Planifiez l’intégration du stockage pour les données persistantes en utilisant des solutions comme les plugins Container Storage Interface (CSI).
- Mettez l’accent sur la surveillance et la gestion : Adaptez vos outils de surveillance Kubernetes existants ou explorez des solutions spécifiques à KubeVirt pour obtenir une visibilité sur les performances des VM aux côtés de vos conteneurs.
Conclusion
KubeVirt offre un chemin convaincant pour les organisations cherchant à tirer parti des technologies cloud-native tout en maximisant la valeur des investissements en machines virtuelles existants. Il améliore l’efficacité opérationnelle, favorise la flexibilité et accélère votre parcours de modernisation.
Source:
https://dzone.com/articles/kubevirt-implementation-who-needs-it-and-why