Close

Kubernetes vs. Docker

De belangrijkste verschillen tussen Kubernetes en Docker en hoe ze passen in containerisatie

Foto van Josh Campbell
Josh Campbell

Productmanager

Redactionele bijdrage: Chandler Harris

Docker is een containerplatform en runtime en Kubernetes is een platform voor het uitvoeren en beheren van containers vanuit vele containerruntimes. Kubernetes ondersteunt talloze containerruntimes, waaronder Docker.

Docker werd in 2013 gelanceerd en was het begin van het moderne containertijdperk. Tegelijk luidde het een computermodel in op basis van microservices. Omdat containers niet afhankelijk zijn van hun eigen besturingssysteem, maken ze het makkelijker om los gekoppelde en schaalbare microservices te ontwikkelen doordat teams een toepassing met bijbehorende afhankelijkheden en configuratie declaratief samen kunnen verpakken als containerimage.

Maar naarmate applicaties steeds complexer werden en containers op verschillende servers bevatten, ontstonden uitdagingen zoals: het coördineren en plannen van meerdere containers, het inschakelen van communicatie tussen containers, het schalen van containerinstallaties, en nog veel meer. Kubernetes werd gelanceerd als een manier om deze uitdagingen op te lossen.

Als het gaat om containertechnologie, zijn Docker en Kubernetes de eerste namen waar men aan denkt. Je kunt je afvragen: welke is beter? Maar vaak is het niet of/of, maar hoe je ze allebei kunt gebruiken.

Compass-logo.

Compass gratis uitproberen

Verbeter je ontwikkelaarservaring, catalogiseer alle services en verbeter de gezondheid van je software.

Wat is Docker?


Docker is een commercieel containerplatform en runtime waarmee ontwikkelaars containers kunnen maken implementeren en uitvoeren. Het maakt gebruik van een client-serverarchitectuur met eenvoudige opdrachten en automatisering via één API.

Docker bevat ook een toolkit die vaak wordt gebruikt om toepassingen in onveranderlijke containerimages te verpakken door een Dockerfile te schrijven en vervolgens de juiste opdrachten uit te voeren om de image te maken met behulp van de Docker-server. Ontwikkelaars kunnen containers maken zonder Docker, maar met het Docker-platform is dit veel eenovudiger. Deze containerimages kunnen vervolgens worden geïmplementeerd en uitgevoerd op elk platform dat containers ondersteunt, zoals Kubernetes, Docker Swarm, Mesos of HashiCorp Nomad.

Docker biedt een efficiënte manier om containertoepassingen te verpakken en te distribueren, maar het is een uitdaging om containers op schaal uit te voeren en te beheren met alleen Docker. Het coördineren en plannen van containers in meerdere servers/clusters, het upgraden of implementeren van toepassingen zonder downtime en het bewaken van de status van containers zijn slechts enkele van de punten waar je aan moet denken.

Om deze problemen op te lossen, werden oplossingen voor het coördineren van containers ontwikkeld: Kubernetes, Docker Swarm, Mesos, HashiCorp Nomad en nog veel meer. Hiermee kunnen organisaties een groot aantal containers en gebruikers beheren, workloads efficiënt in evenwicht brengen, authenticatie en beveiliging bieden, implementaties uitvoeren op meerdere platforms en nog veel meer.

pictogram code-store
gerelateerd materiaal

Microservices vs. monolithische architectuur

Pictogram van drie ringen
Oplossing bekijken

Verbeter je DevEx met Compass

Wat is Kubernetes?


Kubernetes (ook wel K8s genoemd) is een populair open source-platform dat containerruntime-systemen orkestreert in een cluster van netwerkresources. Kubernetes kan met of zonder Docker worden gebruikt.

Kubernetes is oorspronkelijk ontwikkeld door Google, die een nieuwe manier nodig had om miljarden containers per week op schaal te laten draaien. Kubernetes werd in 2014 door Google uitgebracht als open source en wordt nu algemeen beschouwd als de marktleider en industriestandaard orkestratietool voor containers en gedistribueerde implementatie van toepassingen. Volgens Google is het 'belangrijkste ontwerpdoel van Kubernetes het eenvoudig kunnen implementeren en beheren van complexe gedistribueerde systemen, terwijl je tegelijk profiteert van het verbeterde gebruik dat containers bieden.'

Kubernetes bundelt een set containers in een groep en beheert deze op dezelfde machine. Zo wordt de netwerkoverhead verminderd en de efficiëntie van het gebruik van resources verhoogd. Een voorbeeld van een containerset is een app-server, een redis-cache en een sql-database. Docker-containers bevatten één proces per container.

Kubernetes is vooral handig voor DevOps-teams omdat het servicedetectie, taakverdeling binnen het cluster, geautomatiseerde rollouts en rollbacks, zelfherstel van defecte containers en configuratiebeheer biedt. Bovendien is Kubernetes een cruciale tool voor het bouwen van robuuste DevOps CI/CD-pipelines.

Kubernetes is echter geen compleet platform as a service (PaaS). Er zijn een aantal dingen waar je aan moet denken bij het bouwen en beheren van Kubernetes-clusters. Het complexe beheer van Kubernetes is een belangrijke reden waarom veel klanten kiezen voor beheerde Kubernetes-services van cloudleveranciers.

Voordelen van Kubernetes


Kubernetes wordt vaak de 'Linux van de cloud' genoemd en is niet voor niets het populairste containerorkestratieplatform. Hier zijn een paar van de belangrijkste redenen:

Geautomatiseerde uitvoering

Kubernetes bevat een krachtige API- en opdrachtregeltool die kubectl heet en het containerbeheer een stuk eenvoudiger maakt doordat je hiermee je activiteiten kunt automatiseren. Het controllerpatroon in Kubernetes zorgt ervoor dat toepassingen/containers precies werken zoals je hebt gespecificeerd.

Abstractie van infrastructuur

Kubernetes beheert voor jou de resources die beschikbaar zijn. Hierdoor kunnen ontwikkelaars zich bezighouden met het schrijven van toepassingscode en niet op de onderliggende computer-, netwerk- of opslaginfrastructuur.

Gezondheidsmonitor

Kubernetes bewaakt de runomgeving en vergelijkt deze met de gewenste status. Het voert geautomatiseerde gezondheidscontroles uit op services en start containers opnieuw op die zijn vastgelopen of gestopt. Kubernetes maakt services alleen beschikbaar als ze actief en gereed zijn.

Kubernetes vs. Docker


Afbeelding Kubernetes vs. Docker

Docker is een containerruntime, maar Kubernetes is een platform voor het uitvoeren en beheren van containers vanuit vele containerruntimes. Kubernetes ondersteunt tal van containerruntimes, waaronder Docker, containerd, CRI-O en elke implementatie van de Kubernetes CRI (Container Runtime Interface). Je kunt Kubernetes zien als een besturingssysteem en Docker-containers als apps die je op het besturingssysteem installeert.

Op zichzelf is Docker zeer nuttig voor het ontwikkelen van moderne toepassingen. Het lost het aloude probleem op van 'werkt wel op mijn apparaat maar nergens anders'. De containerorkestratietool Docker Swarm kan de implementatie van een paar containerworkloads verwerken. Wanneer een systeem groeit en er veel containers die aan elkaar zijn gekoppeld in een netwerk moeten worden toegevoegd, dan kun je met een standalone Docker wat problemen tegenkomen die je kunt oplossen met Kubernetes.

Als je de twee met elkaar vergelijkt, dan kun je beter Kubernetes en Docker Swarm naast elkaar zetten. Docker Swarm, of Docker-zwermmodus, is net als Kubernetes een containerorkestratietool. Dit betekent dat je hiermee meerdere containers kunt beheren die zijn geïmplementeerd op meerdere hosts waarop de Docker-server wordt uitgevoerd. De zwermmodus is standaard uitgeschakeld. Je DevOps-team moet dit dus zelf instellen en configureren.

Kubernetes orkestreert clusters van machines om samen te werken en plant containers om op die machines te worden uitgevoerd op basis van de beschikbare bronnen. Containers worden, door middel van declaratieve definitie gegroepeerd in pods, de basiseenheid van Kubernetes. Kubernetes beheert automatisch zaken als servicedetectie, taakverdeling, toewijzing van bronnen, isolatie en verticaal of horizontaal schalen van je pods. Het wordt graag gebruikt door de open source-community en maakt nu deel uit van de Cloud Native Computing Foundation. Amazon, Microsoft en Google bieden allemaal beheerde Kubernetes-services aan op hun cloud computing-platforms. Dit verlaagt de operationele last van het runnen en onderhouden van Kubernetes-clusters en de bijbehorende containerworkloads aanzienlijk.

Docker of Kubernetes: Welke past bij jou?


Docker of Kubernetes: Welke past bij jou?

Dus als zowel Docker Swarm als Kubernetes platforms voor containerorkestratie zijn, welke kies je dan?

Voor Docker Swarm is meestal minder installatie en configuratie nodig dan voor Kubernetes als je je eigen infrastructuur maakt en beheert. Het biedt dezelfde voordelen als Kubernetes, zoals het implementeren van je toepassing via declaratieve YAML-bestanden, het automatisch schalen van services naar de gewenste staat, taakverdeling van containers binnen het cluster en beveiliging en toegangscontrole voor je services. Als je weinig workloads hebt, het niet erg vindt om je eigen infrastructuur te beheren of geen specifieke functie nodig hebt die Kubernetes biedt, dan is Docker Swarm waarschijnlijk een goede keuze.

Kubernetes is in het begin complexer om in te stellen, maar biedt meer flexibiliteit en functies. Ook profiteer je hierbij van de support van een actieve open source-community. Kubernetes ondersteunt meerdere implementatiestrategieën, kan je netwerkingangen beheren en biedt direct inzicht in je containers. Alle grote cloudleveranciers bieden beheerde Kubernetes-services waarmee je makkelijk aan de slag gaat en profiteert van cloudfuncties zoals automatisch schalen. Als je veel workloads uitvoert, cloudinteroperabiliteit nodig hebt en er veel teams zijn in je organisatie, waardoor er meer isolatie van services nodig is, dan is Kubernetes waarschijnlijk geschikter.

Compass- en containerorkestratie


Welke containerorkestratie-oplossing je ook kiest, het is belangrijk om een tool te gebruiken waarmee je de complexiteit van je gedistribueerde architectuur kunt beheren terwijl je schaalt. Atlassian Compass is een uitbreidbaar ontwikkelaarsplatform dat verspreide informatie over engineeringoutput en teamsamenwerking samenbrengt op één centrale, doorzoekbare locatie. Naast het beperken van de wildgroei aan microservices met de Component Catalog, helpt Compass je om best practices en de status van je software te bepalen met Scorecards. Ook biedt het gegevens en inzichten in je DevOps-toolchain met behulp van extensies die ontwikkeld zijn op het Atlassian Forge-platform.

Josh Campbell
Josh Campbell

Josh Campbell is a product manager for Atlassian and has worn many hats in his career. He enjoys working on things that make the job of an engineer easier and has deep customer empathy, especially when it comes to working with bad technology tools. In his spare time, Josh likes biking with his daughters, eating and drinking things that are bad for him, and playing with new technologies.


Deel dit artikel
Volgend onderwerp

Aanbevolen artikelen

Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.

Toelichting DevOps

Compass-community

illustratie obstakels overwinnen

Tutorial: Een component aanmaken

Afbeelding van kaart

Ga gratis aan de slag met Compass

Meld je aan voor onze DevOps-nieuwsbrief

Thank you for signing up