March 16, 2020

Containers 101: containers versus virtual machines

Containers en Kubernetes: het zijn twee begrippen die de laatste jaren veelvuldig de revue passeren binnen IT-kringen. Veel bedrijven werken echter nog steeds met virtuele machines (VM’s), en stellen zichzelf een tweetal vragen. Wat zijn de verschillen tussen containertechnologie en de virtuele machines? En wat zijn de voordelen van containers in combinatie met een orchestratieplatform als Kubernetes?

De eerste containers

De eerste containers ontstonden uit de behoefte om in Unix en Linux procesisolaties te configureren. Een voorbeeld hiervan waren de zones in Sun Microsystems Solaris. Maar de technologie kwam pas echt aan het rollen toen de techgiganten Google en Netflix op zoek gingen naar manieren om hun enorme behoefte aan flexible demand op te vangen.

Netflix was er vroeg bij en besloot al in 2008 om alle workloads te migreren naar clouddienst Amazon Web Services (AWS). Een gewaagde en revolutionaire zet, aangezien vrijwel alle workloads van het bedrijf toen nog draaiden op virtuele machines. De traditionele VM-structuur plaatste Netflix echter voor uitdagingen en problemen die vroegen om een alternatieve aanpak.

De beperkingen van VM’s

Als het aankomt op het verwerken van grote en flexibele workloads hebben virtuele machines serieuze beperkingen. Groeit de vraag naar een applicatie of toepassing die je in een VM hebt gestopt? Dan moet je elke nieuwe versie weer onderbrengen in een nieuwe VM, inclusief besturingssysteem en hardware.

Het resultaat laat zich raden: enorme hoeveelheden data die heen en weer geschoven worden. Door de minimumvereisten van de VM verbruikt zelfs een lichte app die is verpakt in een virtuele machine veel rekenkracht en serverruimte. VM’s herbergen vaak vele gigabytes aan capaciteit die je wel moet installeren, maar in de praktijk eigenlijk niet gebruikt. Het gevolg: beperkingen op het gebied van mobiliteit en dichtheid. Daarnaast is het vaak lastig om volledige functionaliteit te garanderen tussen de verschillende softwarebibliotheken binnen de ontwikkelings-, test-, QA- en productieomgevingen.

De voordelen van containers

Het werken met containers lost veel van de bovengenoemde problemen op en omzeilt de beperkingen van VM’s. Tijd om de belangrijkste voordelen van containers op een rij te zetten.

Meer workloads, minder ruimte

Containers gebruiken hetzelfde basisbesturingssysteem als de host, waardoor je niet steeds het hele besturingssysteem en de bijbehorende hardware van een toepassing in een nieuwe VM hoeft onder te brengen.

Met containers is het dus mogelijk om delen van applicaties op compacte wijze te isoleren. Je gebruikt alleen de resources die nodig zijn voor een specifieke functionaliteit of een bepaald (deel)proces. Een container bevat alleen de broodnodige onderdelen (dependencies) die nodig zijn om een applicatie goed en vlot te laten functioneren. Je hoeft dus niet langer meerdere kopieën van een besturingssysteem te laten draaien. De voordelen zijn evident: meer efficiëntie, flexibiliteit en schaalbaarheid omdat er minder servers en serverkracht nodig zijn voor het bereiken van hetzelfde resultaat.

Soepele workflow

Containers hebben ook een positieve uitwerking op de workflow bij het ontwikkelen van een applicatie of toepassing. In plaats van een verzameling bibliotheken en binaries die terechtkomen op een server, bouwt de ontwikkelaar gewoon een container. Die wordt weergegeven als containerafbeelding. De afbeelding wordt vervolgens geüpload naar een container-register.

Het goede nieuws voor de workflow is dat een containerafbeelding een stuk kleiner (10-20 MB) is dan een VM-afbeelding (10 tot 20 GB). Dit betekent dat je een applicatie, na een aantal tests, gelijk vanaf de laptop naar de productieomgeving door kunt zetten. Deze werkwijze past prima binnen het plaatje van continuous integration en moderne ontwikkelingspijplijnen. Ontwikkelen gaat snel en soepel door het afschalen en beter benutten van resources.

Wereldwijde toepassing

Een groot voordeel van container-registers is dat ze wereldwijd inzetbaar zijn. Ze draaien in de cloud, terwijl de beperkte grootte van containers het mogelijk maakt om de inhoud snel en gemakkelijk met meerdere mensen te delen. Afhankelijk van voorkeur en behoefte kun je kiezen voor een privaat of publiek register. AWS en Microsoft bieden beide opties aan op hun cloudplatforms.

Containertechnologie optimaliseren met Kubernetes

Kubernetes is helemaal geoptimaliseerd voor het beheren van grote groepen containers. Een van de belangrijkste functionaliteiten die het platform bezit is de mogelijkheid om pods (een pod is een omhulsel waarbinnen zich meerdere containers bevinden) automatisch te schalen op basis vooraf gedefinieerde resources. Denk bijvoorbeeld aan CPU-gebruik.


Deel deze post
Ronald Kers
Ronald behoort tot de harde kern die meer dan 10 jaar in dienst is bij ACC ICT. Als contentmarketeer schrijft Ronald graag over technologische ontwikkelingen binnen de IT-branche. Met een achtergrond als system administrator weet hij als geen ander complexe materie in begrijpelijke taal uit te leggen.