Kubernetes versus Docker
Ontwikkel, lever en schaal apps sneller met containertechnologieën die beter samenwerken.
De vraag: Kubernetes of Docker
De discussie over de vergelijking tussen Kubernetes en Docker wordt vaak erg zwart-wit gesteld ('of-of'): moet ik Kubernetes of Docker gebruiken? Dit is alsof je appels met appeltaart vergelijkt; het is een gangbare misvatting dat je of de ene of de andere oplossing moet kiezen.
Het verschil tussen Kubernetes en Docker is gemakkelijker uit te leggen aan de hand van een 'zowel-als'-vraag. Het feit is dat je niet hoeft te kiezen: Kubernetes en Docker zijn twee wezenlijk verschillende technologieën die goed samen kunnen worden gebruikt voor het ontwikkelen, leveren en schalen van gecontaineriseerde apps.
Docker and the rise of containerization
Docker is opensource-technologie en een containerbestandsindeling voor het automatiseren van de implementatie van toepassingen als draagbare, zelfstandige containers die in de cloud of on-premises kunnen worden uitgevoerd. Docker, Inc. deelt weliswaar een vergelijkbare naam, maar is een van de bedrijven die de opensource-Docker-technologie ontwikkelt voor uitvoering in Linux en Windows, in samenwerking met cloudproviders zoals Microsoft.
Hoewel het idee achter het isoleren van omgevingen niet nieuw is en er geen andere typen containersoftware bestaan, is Docker de laatste jaren uitgegroeid tot de standaardcontainerindeling. Docker is voorzien van de runtime-omgeving Docker Engine. Het biedt je de mogelijkheid om containers op elke ontwikkelingscomputer te bouwen en uit te voeren; vervolgens kun je installatiekopieën van containers opslaan of delen via een containerregister zoals Docker Hub of Azure Container Registry.
Wanneer toepassingen meerdere containers omvatten die worden geïmplementeerd op meerdere servers, neemt de operationele complexiteit toe. Docker biedt weliswaar een open standaard voor het verpakken en distribueren van apps in containers, maar de mogelijke complexiteit kan snel oplopen. Hoe kun je veel containers coördineren en plannen? Hoe communiceren alle verschillende containers in je app met elkaar? Hoe pas je de schaal aan voor veel containerinstanties? Hier kan Kubernetes je bij helpen.
Indeling van Kubernetes en containers
Kubernetes is opensource-indelingssoftware die je een API biedt waarmee je kunt beheren hoe en wanneer die containers worden uitgevoerd. Hiermee kun je je Docker-containers en workloads uitvoeren en een aantal operationele complexiteiten aanpakken wanneer je de schaal van meerdere containers gaat aanpassen die op meerdere servers zijn geïmplementeerd.
Je kunt met Kubernetes een cluster virtuele machines organiseren en op basis van de beschikbare rekenresources en de vereisten voor elke container de containers plannen die op de virtuele machines moeten worden uitgevoerd. Containers worden gegroepeerd in pods, de operationele basiseenheid voor Kubernetes. Je kunt de schaal van deze containers en pods aanpassen naar de gewenste status en hun levenscyclus beheren om je apps actief en werkend te houden.
Wat is het verschil tussen Kubernetes en Docker?
Kubernetes is opensource-indelingssoftware die je een API biedt waarmee je kunt beheren hoe en wanneer die containers worden uitgevoerd. Hiermee kun je je Docker-containers en workloads uitvoeren en een aantal operationele complexiteiten aanpakken wanneer je de schaal van meerdere containers gaat aanpassen die op meerdere servers zijn geïmplementeerd.
Je kunt met Kubernetes een cluster virtuele machines organiseren en op basis van de beschikbare rekenresources en de vereisten voor elke container de containers plannen die op de virtuele machines moeten worden uitgevoerd. Containers worden gegroepeerd in pods, de operationele basiseenheid voor Kubernetes. Je kunt de schaal van deze containers en pods aanpassen naar de gewenste status en hun levenscyclus beheren om je apps actief en werkend te houden.
Kubernetes en Docker: samen beter
Hoewel ervan wordt uitgegaan dat met containers code maar eenmalig hoeft te worden geschreven om vervolgens overal te kunnen worden uitgevoerd, biedt Kubernetes de optie om al je containerresources vanaf één besturingsvlak in te delen en te beheren. Je kunt dit gebruiken voor netwerken, load balancing, beveiliging en het aanpassen van de schaal voor alle Kubernetes-knooppunten die op je containers worden uitgevoerd. Kubernetes beschikt daarnaast over ingebouwde isolatiemechanismen, zoals naamruimten, waarmee je containerresources kunt groeperen op basis van toegangsrechten, faseringsomgevingen en meer. Door deze constructies kan de IT-afdeling ontwikkelaars gemakkelijker toegang tot resources bieden op basis van selfservice en ontwikkelaars laten samenwerken aan zelfs de meest complexe microservicearchitectuur, zonder de hele toepassing aan te passen in hun ontwikkelomgeving. Door DevOps-bewerkingen nog verder met containers en Kubernetes te combineren, wordt een basislijn van microservicearchitectuur ingeschakeld voor een snelle levering en schaalbare indeling van cloudeigen toepassingen.
Kortom: gebruik Kubernetes in combinatie met Docker voor het volgende:
- Je infrastructuur robuuster maken en de hoge beschikbaarheid van je app verbeteren. Je app blijft online, zelfs als een aantal knooppunten offline gaat.
- Je toepassing schaalbaarder maken. Als je app steeds zwaarder wordt belast en moet worden uitgebreid om een betere gebruikerservaring te bieden, kun je eenvoudig meer containers inschakelen of meer knooppunten aan je Kubernetes-cluster toevoegen.
Kubernetes en Docker werken samen. Docker biedt een open standaard voor het verpakken en distribueren van toepassingen in containers. Met Docker kun je containers bouwen en uitvoeren en containerinstallatiekopieën opslaan en delen. Je kunt eenvoudig een Docker-build op een Kubernetes-cluster uitvoeren, maar Kubernetes zelf is geen complete oplossing. Als je Kubernetes wilt optimaliseren in productie, implementeer je extra tools en services voor het beheren van beveiliging, governance, identiteit en toegang, naast werkstromen voor continue integratie/continue implementatie (CI/CD) en andere DevOps-bewerkingen.
Kubernetes- en Docker-oplossingsarchitecturen in productie
Microservices met AKS
Gebruik AKS om het implementeren en beheren van architecturen op basis van microservices te vereenvoudigen. Met AKS kun je eenvoudiger horizontaal schalen, zelfherstel en taakverdeling uitvoeren en geheimen beheren.
Veilige DevOps voor AKS
DevOps en Kubernetes werken samen beter. Wanneer je het beveiligde DevOps in combinatie met Kubernetes in Azure implementeert, bereik je de perfecte balans tussen snelheid en beveiliging, en kun je code sneller op schaal leveren.
Vul de kracht van Kubernetes aan met Azure
Dankzij de Azure Kubernetes Service (AKS) wordt het implementeren en beheren van je toepassingen in containers eenvoudig. AKS biedt serverloze Kubernetes, een geïntegreerde CI/CD-ervaring en beveiliging en governance op bedrijfsniveau. Verenig je ontwikkelingsteam en operationele team op één platform om snel en met vertrouwen toepassingen te ontwikkelen, te leveren en te schalen.
Informatiebronnen
Video's, webinars, demo's, technische sessies
Opensource-community
Ontmoet andere AKS-gebruikers op Github, op KubeCon of bij een Kubernetes Meetup bij jou in de buurt.