Redactie - 20 september 2018

Kubernetes en Docker systemen

Kubernetes en Docker systemen image

Uw data zijn uw nieuwe familiejuwelen, ofwel Data is het nieuwe goud, zoals u wilt. Dat de orkestratie van uw dataomgeving goed geregeld moet zijn is duidelijk. Nieuwe en oude technologieën worden gebundeld om tot een veilige data infrastructuur te komen met een hoge beschikbaarheid.

Deze keer iets meer over opslagsystemen die gebruik maken van Containertechnologie.

De opslag van data en de Containertechnologie heeft de laatste jaren een flinke groei doorgemaakt hetgeen zeer logisch klinkt aangezien container georiënteerde platformen uitermate beheersbaar en schaalbaar zijn.

Van een afstand, lijken Docker en Kubernetes  soortgelijke technologieën te zijn, namelijk beiden delen applicaties binnen linux-containers. Als je van dichtbij kijkt, zou je kunnen vinden dat beide technologieën op verschillende lagen van de stack werken, en zelfs samen gebruikt worden kunnen.

Uiteraard is het essentieel inzicht te krijgen op beide technologieën indien men applicaties wilt toepassen op basis van Docker én Kubernetes binnen een moderne Cloud-infrastructuur. We leggen uit hoe beiden technologieën passen in de wereld van linux containers, en hoe u ze kunt gebruiken binnen de architectuur van uw eigen toepassingen.

Linux containers

Een container bevat de applicatie en alle afhankelijkheden die de software nodig heeft om te kunnen werken: libaries, binaries en configuratie files. De verschillen in versies van het operating system en infrastructuur hebben binnen containerisatie geen invloed meer op de werking van de software, door het applicatieplatform, de applicatie en al haar ondergeschikte functionaliteiten te containeriseren.

Containers zijn in hun meest elementaire kern een verpakking voor software. Wat deze elementen zo bijzonder maakt is het feit dat wanneer een applicatie werkzaam is binnen deze containers u de gedragingen voorspelbaar zijn. De inhoud vastligt en onaantastbaar is. En er geen onverwachte fouten te verwachten zijn wanneer u ze verplaatst over andere omgevingen en/of hardware. Verder worden alle bij toepassing horende applicatiecode, libraries meta details en configuratie worden samen ingepakt in de container als een niet aan te tasten artefact. Denk hierbij aan het gebruik van een container en de inzet van een virtuele machine, zonder daarbij direct het gehele besturingssysteem te gebruiken. De benodigde opstarttijd van een container in verhouding tot een virtual machine is een zeer groot voordeel. Containers hebben nagenoeg geen opstarttijd en zijn daarmee geschikt om snel op- en afschalen mogelijk te maken. Zo kan het gebruik van infrastructuur en het kosteneffect verder geoptimaliseerd worden. In alle gevallen leidt het binnen een ‘pay per use’ Cloud infrastructuur tot significante besparingen.

Op basis van bovenstaande kenmerken worden containers en het gebruik ervan tot meest essentiële bouwstenen in moderne innovatieve Cloudomgevingen. De industrie bouwt nog immer op basis van microservice architectuur en dit terwijl een container een veel kleinere omvang dan het door het in de microservice gehanteerde alternatief, de virtual machine. Denk aan een omvang van megabytes voor een container en gigabytes voor een virtual machine. Daarmee maken containers veel efficiënter, en dus goedkoper, gebruik van (cloud) infrastructuur.

Containers en Docker:

Docker helpt u bij het maken en implementeren van software binnen containers. Platgeslagen is het een verzameling hulmiddelen waarmee men kan bouwen, transporteren en op basis van App`s overal in kunt zetten.

Binnen het gebruik van Docker maakt u een speciaal bestand aan de “Dockerfile”. Dockerfiles definiëren een bouwproces, dat, eenmaal aangeboden aan de Docker bouwopdracht, zal een onveranderlijke “docker image” produceert. U kunt dit beschouwen als een snapshot van uw toepassing, klaar voor gebruik. Een groot voordeel hierbij is het feit dat de overhead minimaal is aangezien de kernel en de standaard software in het besturingssysteem gedeeld wordt met alle andere containers. Je kunt dus heel veel applicaties op een kleine hoeveelheid hardware aanbieden. Zoals eerder beschreven biedt dit binnen het gebruik van Cloud diensten veel voordelen qua kosten. Je betaalt bij publieke Cloud aanbieders voor de tijd dat je resources gebruikt en door resources zo effectief mogelijk in te zetten met behulp van containers worden kosten beperkt.

Groot voordeel in het gebruik van Docker is ook het feit je in een container eenvoudig kan overzetten naar andere omgevingen. Denk hierbij aan een applicatie die snel van test omgeving via acceptatie naar productie kan. De onderliggende omgeving van de container blijft namelijk hetzelfde als je deze verplaatst naar een andere hardware. Er zijn ook beperkingen; een container die gestart is kun je niet verplaatsen naar een andere host. Sinds een aantal jaren is er ook een Docker variant op basis van Windows beschikbaar. Deze beid feitelijk de zelfde voordelen als de Linux variant. Je kunt ook eenvoudig applicaties naar de Cloud verplaatsen en indien nodig weer terug on-premise. Naast Linux en Windows kunnen Docker containers ook gebruikt worden in Cloud platformen van Google Compute Engine, Microsoft Azure Amazon en Rackspace.

Containers en Kubernetes:

Eenmaal aan het werk met containers zal de gebruiker erachter komen dat er binnen de beheersing nog wel wat aanvullingen zijn te maken zeker in het gebruik van meerdere containers op meerdere machines, zeker indien men binnen de omgeving gebruik maakt van microservices. Het uitvinden hoe containers met elkaar communiceren, storage geregeld wordt en errors binnen containers en hardware opgelost kan worden vraagt behoorlijk wat beheers capaciteit. Hier komt Kubernetes in beeld. Het open source container-orchestration Kubernetes is oorspronkelijk ontwikkeld door Google.

Kubernetes is een opensourceplatform waarmee u het implementeren, schalen en uitvoeren van applicatiecontainers kunt automatiseren. Met het gebruik van Kubernetes kunnen applicatiecontainers taken plannen en uitvoeren op computerclusters, maar kan ook de transportatie naar een containergerichte infrastructuur mogelijk maken. De geavanceerde implementatie- en packaging-methode wordt niet fysiek of virtueel uitgevoerd, maar vindt plaats met het gebruik van containers. Het gebruik van Kubernetes applicaties gaan gepaard met weinig downtime, leveren indrukwekkende prestaties en er is weinig behoefte aan support. Kubernetes werkt op basis van de master-slave architectuur. Afzonderlijke Kubernetes componenten kunnen worden onderverdeeld in componenten die een afzonderlijk node beheren en componenten die deelnemen aan het uitvoeren van het controle en beheersplan en het mogelijk maken om nieuwe containers te genereren op verschillende machines indien een opzet faalt. Classless Inter-Domain routing (CIDR) Het Kubernetes-netwerk is groot qua omvangen vlak qua dimensie waardoor alle pods in het systeem gemakkelijk met elkaar kunnen communiceren middels twee CIDR’s. In Docker Swarm creëert een speciale, aan een cluster verbonden node een bovenliggend netwerk van diensten dat alle hosts en een host-only-netwerk voor containers omvat.

Samen:

Kubernetes kan met de Docker-engine geïntegreerd worden om de planning en uitvoering van Docker-containers op Kubelets (deze staat voor het meest elementaire level binnen de Kubernetes hiërarchie) te coördineren.

Conclusie:

Gecombineerd gebruikt, zijn Docker als zowel Kubernetes geweldige hulpmiddelen voor de ontwikkeling van een moderne Cloud architectuur, maar ze zijn fundamenteel anders in hun kern. Het is belangrijk om de technologische verschillen tussen de beide tools te begrijpen bij het bouwen van uw solution.

Meer over deze storage vormen kunt u lezen op: https://dutchitchannel.nl/523200/zoekresultaten.html?zoek=harold+koenders&categorie=&dossier=

Door: Harold Koenders, Onafhankelijk Innovative Storage Strategist

Voor vragen kunt u terecht op: HaroldKoenders@outlook.com

+31 657702160

Wil jij dagelijkse updates?

Schrijf je dan in voor onze nieuwsbrief!