De adoptie van cloud-native architecturen en containerisatie transformeert de manier waarop we applicaties ontwikkelen, implementeren en beheren. Containers bieden snelheid, wendbaarheid en schaalbaarheid, wat leidt tot een aanzienlijke verschuiving in IT-strategieën. De realiteit voor veel organisaties is echter dat virtuele machines (VM’s) een cruciale rol blijven spelen, vooral als het gaat om legacy- of stateful applicaties. Zelfs toonaangevende financiële instellingen zoals Goldman Sachs erkennen de waarde van VM’s naast containerized workloads en verkennen manieren om ze efficiënt te beheren.
Dit creëert een potentiële kloof: de voordelen van containerisatie aan de ene kant en de blijvende behoefte aan VM’s aan de andere kant. KubeVirt overbrugt deze kloof door de kracht van Kubernetes uit te breiden naar het beheer van virtuele machines, waardoor je in staat bent om je infrastructuur te verenigen en een soepelere overgang naar cloud-native technologieën mogelijk te maken.
In dit artikel onderzoeken we waarom KubeVirt een aantrekkelijke oplossing is voor organisaties die IT-operaties willen stroomlijnen en flexibiliteit willen krijgen in een hybride infrastructuuromgeving.
Wat is KubeVirt precies?
KubeVirt is een open-source project dat Kubernetes transformeert in een krachtig platform dat zowel containers als virtuele machines kan beheren. Simpel gezegd, KubeVirt maakt van Kubernetes een enkele controlelaag voor je gehele infrastructuur.
Hier is hoe het werkt:
- KubeVirt als een extensie: KubeVirt voegt aangepaste resource-definities (CRD’s) toe aan Kubernetes, waarbij een nieuw objecttype wordt geïntroduceerd dat virtuele machines vertegenwoordigt.
- Virtuele machines als “pods”: Met KubeVirt draait elke VM binnen een gespecialiseerde pod, die VMs nauw integreert in het Kubernetes-ecosysteem.
- Vereenvoudigd VM-beheer met Kubernetes: U kunt nu dezelfde Kubernetes-tools (
kubectl
en de Kubernetes API) en best practices gebruiken om VMs te maken, starten, stoppen, migreren en te monitoren naast uw containerized workloads.
Beschouw KubeVirt als een middel waarmee Kubernetes de taal van virtualisatie spreekt, wat een wereld van mogelijkheden opent voor uw infrastructuurbeheer.
De zakelijke impact van KubeVirt
KubeVirt levert tastbare voordelen die verder gaan dan technische elegantie. Door KubeVirt te adopteren, kan uw organisatie de volgende voordelen behalen:
- Naadloos workloadbeheer: Doorbreek de muren tussen uw VM-gebaseerde applicaties en uw containerized workloads. Beheer alles vanuit één enkel platform met dezelfde tools en processen, wat de operaties aanzienlijk vereenvoudigt en de complexiteit vermindert.
- Verbeterde resource-efficiëntie: KubeVirt stelt u in staat om zowel traditionele VMs als containers op dezelfde onderliggende clusterhardware uit te voeren. Optimaliseer het resourcegebruik, verbeter de infrastructuur-dichtheid en realiseer mogelijk aanzienlijke kostenbesparingen.
- Versnelde modernisering: Legacy-toepassingen gekoppeld aan VM’s hoeven geen obstakel te vormen voor innovatie. KubeVirt biedt een geleidelijk pad naar het moderniseren van toepassingen op uw eigen tempo. U kunt componenten containeriseren en migreren in dezelfde Kubernetes-omgeving, waardoor verstoring tot een minimum wordt beperkt.
- Toekomstbestendige infrastructuur: Door te investeren in KubeVirt, stemt u af op cloud-native principes en positioneert u Kubernetes als de ruggengraat van uw technologiestack. Dit bevordert flexibiliteit en wendbaarheid, waardoor u snel kunt inspelen op veranderende zakelijke vereisten.
Waarom zou uw organisatie dit belangrijk moeten vinden?
KubeVirt levert aanzienlijke waarde, vooral op deze gebieden:
- IT-teams en DevOps: KubeVirt vereenvoudigt operaties door een eenduidig controleplatform te bieden voor al uw workloads. Het stelt u in staat workflows te stroomlijnen, gereedschapsoverhead te verminderen en de algehele efficiëntie van het team te verbeteren.
- Leidinggevenden: Verkrijg operationele flexibiliteit en bereik kostenverlagingen en een gestroomlijnd pad naar infrastructuurmodernisering. KubeVirt stemt technologie-investeringen af op langetermijnsucces van het bedrijf.
- Gemengde workloads: Als u zowel legacy VM-gebaseerde toepassingen beheert als moderne gecontaineriseerde implementaties, is KubeVirt essentieel. Het stelt u in staat vendor lock-in te vermijden, complexiteit te minimaliseren en volledige controle te behouden over uw infrastructuurkeuzes.
Hier zijn enkele specifieke pijnpunten die KubeVirt aanpakt:
- Geërgerd door het beheren van afzonderlijke omgevingen voor VM’s en containers? KubeVirt brengt ze samen, waardoor het beheer veel eenvoudiger wordt.
- Op zoek naar flexibiliteit zonder concessies te doen aan bestaande investeringen? KubeVirt stelt u in staat om gebruik te maken van uw VM-infrastructuur terwijl u moderniseert.
- Wilt u de kostenefficiëntie en het gebruik van resources verbeteren? KubeVirt helpt bij het consolideren van workloads voor een beter gebruik.
- Heeft u moeite met complexe migraties van legacy-applicaties? Moderniseer stapsgewijs en beheer uw tempo met KubeVirt.
Aan de slag: Implementatie en Uitvoering
Het implementeren van KubeVirt vereist een goed voorbereide Kubernetes-omgeving. Dit gedeelte biedt een gedetailleerde handleiding om u te helpen KubeVirt in uw infrastructuur op te zetten en te implementeren.
Vereisten
Voordat u begint, zorg ervoor dat aan de volgende vereisten is voldaan:
1. Kubernetes-cluster
U heeft een Kubernetes-cluster nodig (of een afgeleide zoals OpenShift) gebaseerd op een van de drie meest recente Kubernetes-releases die beschikbaar zijn op het moment van de KubeVirt-release.
2. Configuratie van Kubernetes API-server
De Kubernetes API-server moet geconfigureerd zijn met --allow-privileged=true
om de bevoorrechte DaemonSet van KubeVirt te kunnen uitvoeren.
3. Kubectl hulpprogramma
Zorg ervoor dat u het kubectl
client-hulpprogramma geïnstalleerd heeft en geconfigureerd om te communiceren met uw cluster.
4. Ondersteuning voor Container Runtime
KubeVirt wordt ondersteund op de volgende container runtimes:
Containerd
crio
(metrunv
)
Andere container runtimes zouden ook moeten werken, maar de genoemde zijn de belangrijkste doelen.
5. Hardware Virtualisatie
Aanbevolen wordt hardware met virtualisatiesupport te gebruiken. U kunt virt-host-validate
gebruiken om ervoor te zorgen dat uw hosts in staat zijn om virtualisatiewerklasten uit te voeren:
$ virt-host-validate qemu
Netwerk- en beveiligingsoverwegingen
-
Netwerkconfiguratie: Plan hoe uw VM’s verbinding zullen maken en communiceren met externe netwerken en de rest van uw Kubernetes-omgeving.
-
AppArmor-integratie: Op systemen met ingeschakelde AppArmor moet u mogelijk de AppArmor-profielen aanpassen om de uitvoering van KubeVirt-privileged containers toe te staan. Bijvoorbeeld:
# vim /etc/apparmor.d/usr.sbin.libvirtd
/usr/libexec/qemu-kvm PUx,
# apparmor_parser -r /etc/apparmor.d/usr.sbin.libvirtd
KubeVirt-installatie
Volg deze stappen om KubeVirt te installeren:
1. Installeer de KubeVirt-operator
De KubeVirt-operator vereenvoudigt de installatie en het beheer van KubeVirt-componenten. Voer de volgende commando’s uit om de nieuwste KubeVirt-release te implementeren:
# 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. Configuratie voor niet-hardwarevirtualisatie
Als hardwarevirtualisatie niet beschikbaar is, schakel dan software-emulatie in door useEmulation op true in te stellen in de KubeVirt CR:
$ kubectl edit -n kubevirt kubevirt kubevirt
# Add the following to the kubevirt.yaml file
spec
configuration
developerConfiguration
useEmulationtrue
Beste implementatiepraktijken
Om het meeste uit KubeVirt te halen, volg deze beste praktijken:
1. Voer een werklastbeoordeling uit
Geef prioriteit aan VM’s die geschikt zijn voor containerisatie. Begin met minder missiekritieke toepassingen om praktijkervaring op te doen.
2. Beoordeel Netwerken en Opslag
Plan hoe je VM-netwerken kunt koppelen aan je bestaande Kubernetes-netwerken en integreer opslagoplossingen voor persistente gegevens met behulp van Container Storage Interface (CSI) plug-ins.
3. Benadruk Monitoring en Beheer
Gebruik Kubernetes-monitoringtools of verken KubeVirt-specifieke oplossingen om inzicht te krijgen in de prestaties van VM’s naast je containers.
4. Live Migratie
Activeer en configureer live migratie om draaiende VM’s naar andere rekenknooppunten te verplaatsen zonder downtime. Dit omvat het instellen van “feature gates” en het configureren van migratiespecifieke parameters in de KubeVirt CR:
apiVersion kubevirt.io/v1
kind KubeVirt
metadata
name kubevirt
namespace kubevirt
spec
configuration
developerConfiguration
featureGates
LiveMigration
migrations
parallelMigrationsPerCluster5
parallelOutboundMigrationsPerNode2
bandwidthPerMigration 64Mi
completionTimeoutPerGiB800
progressTimeout150
Voorbeeldinstallatie op OpenShift (OKD)
Als je OKD gebruikt, omvatten aanvullende stappen het configureren van Security Context Constraints (SCC):
$ oc adm policy add-scc-to-user privileged -n kubevirt -z kubevirt-operator
Voorbeeldinstallatie op k3OS
Voor k3OS, zorg ervoor dat je de vereiste modules op alle knooppunten laadt voordat je KubeVirt implementeert:
k3os
modules
kvm
vhost_net
Herstart de knooppunten met deze configuratie en implementeer vervolgens KubeVirt zoals hierboven beschreven.
Installatie van Dagelijkse Ontwikkelaarsversies
Voor de nieuwste ontwikkelaarsversies, voer uit:
$ 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
Implementatie Van Bron
Door deze stappen en beste praktijken te volgen, kunt u zorgen voor een soepele en succesvolle KubeVirt-implementatie, die een uniforme infrastructuurbeheersoplossing biedt die zowel virtuele machines als containers benut.
Implementatie Beste Praktijken
Volg deze beste praktijken om het meeste uit KubeVirt te halen:
- Voer een workloadbeoordeling uit: Niet elke applicatie is meteen geschikt voor KubeVirt. Geef prioriteit aan VM’s met een goed potentieel voor containerisatie. Minder kritische applicaties kunnen een geweldige manier zijn om praktische ervaring op te doen terwijl het risico wordt geminimaliseerd.
- Beoordeel netwerken en opslag: Overweeg zorgvuldig hoe u VM-netwerken kunt koppelen aan uw bestaande Kubernetes-netwerken. Plan opslagintegratie voor persistente gegevens met oplossingen zoals Container Storage Interface (CSI) plugins.
- Benadruk monitoring en beheer: Pas uw bestaande Kubernetes-monitoringtools aan of verken KubeVirt-specifieke oplossingen om inzicht te krijgen in de prestaties van VM’s naast uw containers.
Conclusie
KubeVirt biedt een overtuigend pad voor organisaties die de voordelen van cloud-native technologieën willen benutten terwijl ze de waarde van bestaande investeringen in virtuele machines maximaliseren. Het verhoogt de operationele efficiëntie, bevordert flexibiliteit en versnelt uw moderniseringsreis.
Source:
https://dzone.com/articles/kubevirt-implementation-who-needs-it-and-why