Kubernetes vs. Docker?
Et spørgsmål, der ofte stilles. I realiteten er retningen på spørgsmålet dog ude af rette kurs. Det er nemlig misvisende at sætte Kubernetes og Docker op imod hinanden. De er ikke konkurrenter, men nærmere allierede.
Docker er en virtualiseringsteknologi og platform, der muliggør containerisering af applikationer. Kubernetes, derimod, er en teknologi, som orkestrerer og automatiserer håndteringen af containere.
Det betyder, at Kubernetes og Docker arbejder sammen, og ikke imod hinanden.
Et velkendt scenarie
I dagens virtualiserede og cloud-baserede digitale verden, er det blevet normalt at ”pakke” sin software i containere. Docker er et af de mest populære værktøjer til formålet. Og det er der gode grunde til.
Før vi dykker ned i, hvorfor Docker er så smart, og senere hen Kubernetes, tager vi et kig på følgende scenarie:
En udvikler arbejder på en applikation.
Udvikleren skriver sin kode på sin egen lokale maskine – sit udviklingsmiljø.
Indtil videre ingen problemer. Koden kører fejlfrit i udviklerens eget miljø.
Udvikleren er tilfreds med sit arbejde, og sender koden til test i produktionsmiljøet, hvor applikationen skal køres officielt.
Produktionsmiljøet kører måske på et andet styresystem, og med andre konfigurationer, dependencies og libraries end udviklerens.
Det er her, problemerne opstår.
Nu virker koden ikke i produktionsmiljøet, selvom den kørte fint i udviklerens eget miljø.
Det er her Docker kommer udvikleren til undsætning.
Byg containere med Docker
Docker er en virtualiseringsteknologi og et værktøj til at bygge og deployere containere, som dine applikationer kan køre i.
Når din applikation er pakket i en container, indeholder den alt den skal bruge for at køre i et nyt miljø - containeren indeholder alle nødvendige dependencies.
En container - helt overordnet
Forestil dig en container i bogstavelig forstand; sådan én, som du ser på havnen.
Du pakker din software i containeren og lukker lågerne. Containeren indeholder nu softwaren, og alt den kræver for at køre. Containeren kan nu sendes og flyttes rundt til forskellige destinationer – udviklingsmiljøer - og du kan pakke og sende ligeså mange du vil.
Det er smart i en virtualiseringskontekst, fordi du kan have flere applikationer kørende på samme hardware, selvom de bruger forskellige frameworks, og har forskellige dependencies.
I Docker laver man en container ud fra et "Docker Image".
Man kan se det som en plantegning med instruktioner for, hvordan containeren skal bygges, så applikationen bliver pakket med det, den kræver for at køre. Med et færdigt Docker Image kan du sende din applikation rundt i forskellige miljøer uden problemer. Containeren sørger for, at den har hvad den skal bruge.
Virtualisering - Virtuelle maskiner og Docker
Virtuelle maskiner (VM’er) har deres eget gæste-operativsystem, hvor den underliggende hardware er virtualiseret. Det sker gennem et mellemliggende stykke software kaldet ”Hypervisor”.
Containere, derimod, virtualiserer i stedet selve den underliggende hardwares operativsystem. Det betyder, at en container i Docker efterlader et mindre ressourcemæssigt fodaftryk.
Docker er et fantastisk værktøj til at lave og deployere containere. Men administrationen af dem er en anden sag. Med mange containere vokser arbejdsbyrden i at håndtere og overvåge dem.
Og her kan vi vende blikket mod Kubernetes som vores kaptajn bag roret.
Kubernetes holder overblikket
Kubernetes er et orkestrerings- og automatiseringsværktøj til containeriserede applikationer. Og containerne kommer højst sandsynligt fra Docker.
Kubernetes orkestrerer (koordinerer) og overvåger dine containere ud fra dine egne instrukser.
Dine containere "lever" i isolerede Clusters. Hver Cluster styres af en Master (også kendt som Control Plane), der sørger for at dine containere kører som de skal.
Har du behov for en mere dybdegående teknisk beskrivelse af Kubernetes, så læs med fordel dette blogindlæg.
Du er også velkommen til at kontakte os direkte på tlf: 75 53 35 00 eller mail: support@scannet.dk.
Kubernetes hjælper dig med en lang række opgaver, såsom:
- At du altid har det antal containere kørende, som du har specificeret.
- Holder øje med containernes helbred, og indsætter nye, hvis containere fejler.
- Sørger for load balancing for optimal ydeevne
- Skalering af ressourcer alt efter arbejdsbyrden
En af de største fordele ved Kubernetes er automatisering, som mindsker arbejdsbyrden i forhold til vedligeholdelse. Samtidig er automatisering lig med færre menneskelige fejl, og dermed optimering af ressourcer - både for dine udviklere, og din forretning.
Kubernetes vs. og Docker
Nu står det forhåbentligt klart, at Kubernetes og Docker arbejder sammen, og ikke imod hinanden.
Docker leverer containerne, og Kubernetes automatiserer og håndterer administrationen af dem.
Sammen er de en del af virtualiseringsbølgen inden for IT-verdenen, og de hjælper hinanden, og dig, til at håndtere dine containeriserede applikationer, og optimere din forretning.