Kubernetes en Docker: een gouden combinatie?

Wie geïnteresseerd is in de mogelijkheden van cloud-native en containertechnologie, heeft in de wandelgangen vast al eens de begrippen Kubernetes en Docker voorbij horen komen. Ze hebben beide betrekking op containers, een technologie die vooral populair is voor organisaties die graag agile werken, het beste willen halen uit cloudcomputing en de DevOps-methode gebruiken voor het ontwikkelen en beheren van applicaties. 

Maar misschien vraag je je af hoe Kubernetes en Docker zich ten opzichte van elkaar verhouden. Is het Kubernetes versus Docker of juist Kubernetes én Docker? Lees er alles over in dit artikel!

Wat is Kubernetes?

Kubernetes is een oorspronkelijk door Google ontwikkeld orkestratieplatform (open source). Het is speciaal ontwikkeld voor het op grote schaal en geautomatiseerd beheren en schalen van applicaties die in containers (compactere en lichtere versies van virtual machines) zijn ondergebracht. 

Met Kubernetes kun je onder meer:

  • Het aantal containers schalen op basis van actuele behoeften. Zo kun je kosten besparen in rustige tijden, maar tevens snel opschalen als je veel bandbreedte en rekenkracht nodig hebt.
  • Verschillende versies van containers beheren.
  • De werklast spreiden door containers automatisch over jouw hele cluster te spreiden voor een hogere uptime. Bovendien kun je pods specifiek toekennen aan enkele nodes die beschikken over geschikte hardware.
  • Automatisch en zonder veel manueel meerwerk controleren of jouw containers nog naar behoren werken. Als dat niet het geval is, vervangt Kubernetes slecht functionerende containers of maakt het platform nieuwe aan.

Wat is Docker?

Docker is een (open) softwareplatform waarmee je snel en relatief eenvoudig applicaties bouwt en implementeert. Het systeem verpakt de software in gestandaardiseerde eenheden, de zogenoemde Docker-containers. Die bevatten alle noodzakelijke elementen die een applicatie nodig heeft om naar behoren te kunnen draaien. Denk daarbij aan de code, bibliotheken, software en runtime. Omdat de containers geen volledige kopie van het besturingssysteem (OS) herbergen maar delen van het OS van het hostapparaat gebruiken, zijn ze een stuk lichter dan VM’s.

Docker heeft verschillende tools in huis die het bouwen, delen en orkestreren van gecontaineriseerde applicaties makkelijk maken. Met Docker Build creëer je bijvoorbeeld zogenoemde container images. Zo’n image is de blauwdruk voor een container en bevat alle elementen die nodig zijn om een applicatie te draaien.

Docker Compose is een handig stukje gereedschap dat je in staat stelt om multi-container applicaties te maken en draaien. Build en Compose zijn prima te integreren met code repositories als GitHub en CI/CD-tools als Jenkins, Bamboo en GitLab. Met Docker Engine kun je containers draaien in nagenoeg elke IT-omgeving: Mac, Windows, Linux, cloudplatforms en edge-omgevingen behoren allemaal tot de mogelijkheden. Met Docker Swarm beheer je een cluster (een swarm in Docker-terminologie) dat bestaat uit meerdere Docker Engines, meestal verdeeld over verschillende nodes. 

Docker versus Kubernetes: de belangrijkste verschillen

Hoewel Docker en Kubernetes dus allebei orkestratietools voor containers zijn, verschillen ze wel op een aantal punten van elkaar. Docker is eenvoudiger te installeren, in te richten en te gebruiken. Het is een goede keuze voor organisaties die beginnen met containertechnologie. Docker Swarm dekt in de praktijk veel behoeften met circa 20% van de complexiteit van Kubernetes.

Kubernetes is weliswaar complexer dan Docker, maar biedt meer functionaliteit en configuratiemogelijkheden. Denk bijvoorbeeld aan features als automatisch schalen, automatische load balancing en uitgebreidere frameworks op het gebied van beheer, monitoring en veiligheid. Een ander verschil is dat Kubernetes over een cluster draait, terwijl Docker draait op een enkel punt. Kubernetes heeft ook een groter marktaandeel en grotere gebruikersgemeenschap dan Docker Swarm. Het wordt nog altijd gezien als dé standaard in de wereld van containerorkestratie.   

Waarom je Docker en Kubernetes goed samen kunt gebruiken

Het mooie aan Docker en Kubernetes is dat beide platformen elkaar prima ondersteunen. Organisaties die met Kubernetes werken, gebruiken vaak zowel de Docker Engine als het image format (andere voorbeelden van engines en image formats die prima werken voor Kubernetes zijn CRI-O en containerd). ‘Of-of’ wordt in dit geval ‘en-en’. De reden? Beide technologieën hebben een andere scope en focus.

Waar de grote kracht van Docker vooral zit in het ontwikkelgedeelte (het bouwen van containers, het distribueren met CI/CD-pijplijnen, DockerHub voor het registreren van container images), zit de kracht van Kubernetes in operationele uitdagingen op het gebied van schalen, monitoren en netwerkbeheer. Zo is Kubernetes het geschikte platform voor het orkestreren van grote applicaties in een complexe omgeving. Denk bijvoorbeeld aan een IT-landschap met honderden met elkaar verbonden microservices en databases.

Wat levert de combinatie Docker en Kubernetes op?

Omdat ze prima integreerbaar en complementair zijn, kunnen we in het geval van Docker en Kubernetes gerust spreken van een gouden combinatie. Maar wat levert de kruisbestuiving tussen de twee concreet op? Het belangrijkste is dat je kunt profiteren van het beste van beide werelden: het gemak van een gebruiksvriendelijke ontwikkelomgeving voor gecontaineriseerde applicaties, gekoppeld aan de mogelijkheid om workloads te schalen en de operationele overhead te verminderen die om de hoek komt kijken bij het opschalen van applicaties. Het combineren van Docker en Kubernetes zorgt ook voor een robuuste infrastructuur en hoge beschikbaarheid van jouw applicaties.

Docker is een efficiënte tool voor het verpakken en distribueren van containertoepassingen. Maar het is een uitdaging om containers op schaal uit te voeren en te beheren met alleen Docker, zeker als een systeem snel groeit en je meer containers aan elkaar koppelt in een netwerk. Hier biedt Kubernetes een helpende hand. Het platform helpt je om zaken als detectie, taakverdeling, de toewijzing van bronnen, isolatie en het verticaal of horizontaal schalen van pods op grote schaal te automatiseren. 

Zo helpt SUE

Wil je ook profiteren van de voordelen van Kubernetes en Docker en het beste halen uit containertechnologie? En ben je op zoek naar ontzorging op het vlak van beheer en inrichting? Dan ben je bij SUE aan het juiste adres.

Wij beschikken over gecertificeerde kennis van, en ruime ervaring met, beide platformen. Met het SUE Cloud Native Adoption Platform (SCNAP) richten we bijvoorbeeld binnen een half uurtje een kant-en-klare, volledig werkende Kubernetes-omgeving voor je in. Het platform integreert naadloos met Docker en andere populaire opensource technieken. Bovendien zitten onze specialisten niet stil en houden ze zich voortdurend bezig met het doorontwikkelen van het platform.

Meer weten over containerisatie met Kubernetes en Docker, SCNAP of onze andere cloud-native diensten? Neem dan gerust vrijblijvend contact op door te bellen naar +31 345 656 666 of te mailen naar info@sue.nl. Je kunt ook het contactformulier op onze website invullen.