Programmering

Kubernetes vs. Docker: Forstå containere og orkestrering

Hvis du har holdt trit med de nyeste tendenser inden for softwareudvikling, er der to udtryk, som du utvivlsomt er stødt på igen og igen: Docker og Kubernetes, som i det væsentlige er kortcontainere ogorkestrering.

Docker-containere har hjulpet med at strømline processen med at flytte applikationer gennem udvikling og test og til produktion, mens både Docker og Kubernetes har hjulpet med at genopfinde den måde, applikationer bygges og implementeres på - som samlinger af mikrotjenester i stedet for monolitiske stakke.

Hvorfor er Docker og Kubernetes vigtige, hvordan ændrer de softwareudvikling, og hvilken rolle spiller hver i processen? Jeg prøver at besvare disse spørgsmål nedenfor.

Docker og containere

Containere - understøttet i Linux, Windows og andre moderne operativsystemer - tillader software at køre i selvstændige mini-miljøer, der er isoleret fra resten af ​​systemet. Containere er blevet sammenlignet med VM'er, men de er ikke VM'er - de er langt slankere, hurtigere at starte og stoppe og meget mere fleksible og bærbare. Fordi containere kan spindes op eller ned eller skaleres ind eller ud på få sekunder, gør de det lettere at køre apps i elastiske miljøer som skyen.

Linux og andre operativsystemer har understøttet containeriserede apps i mange år, men det var ikke ligefrem brugervenligt at arbejde med containere. Docker er i både open source og kommercielle inkarnationer software, der gør containere til en brugervenlig og udviklervenlig vare. Docker leverer et fælles sæt værktøjer og metaforer til containere, så du kan pakke apps i containerbilleder, der let kan implementeres og genbruges i din egen organisation eller andre steder.

Kort sagt gør Docker det et øjeblik at oprette containerbilleder, versionere dem, dele dem, flytte dem rundt og distribuere dem til Docker-kompatible værter som kørende containere.

Hvornår bruger jeg Docker og containere?

Docker og containere er bedst egnet til, når du har at gøre med arbejdsbelastninger, der skal have en eller flere af følgende kvaliteter:

  • Elastisk skalerbarhed. Du ved ikke, hvor mange forekomster af en app du skal køre for at imødekomme efterspørgslen. En containeriseret app eller tjeneste kan skaleres ud for at imødekomme efterspørgslen ved at indsætte færre eller flere forekomster af dens containere.
  • Isolation. Du vil ikke have, at appen forstyrrer andre apps. Måske kører du flere versioner af appen side om side for at tilfredsstille forskellige versioner af en API. Eller måske vil du holde det underliggende system rent (altid en god idé).
  • Bærbarhed. Du skal køre denne app i en række miljøer, og du har brug for, at hver opsætning skal være reproducerbar. Containere giver dig mulighed for at pakke hele applikationens runtime-miljø, hvilket gør appen let at implementere overalt, hvor du finder en Docker-kompatibel vært - et udvikler-skrivebord, en QA-testmaskine, lokalt jern eller en fjernsky.

Lær mere om Docker og containere

  • Hvad er Docker? Gnisten til containerrevolutionen
  • Hvorfor skal du bruge Docker og containere
  • Kom godt i gang med Docker
  • De skjulte fordele ved Docker til QA
  • 12 open source-værktøjer, der gør Docker bedre
  • Flere Docker-nyheder, -analyse, vejledning, anmeldelser og rådgivning

Kubernetes og container orkestrering

Containere er hovedsageligt designet til at isolere processer eller applikationer fra hinanden og det underliggende system. Det er nemt at oprette og implementere individuelle containere. Men hvad nu hvis du vil samle flere containere - f.eks. En database, en webfront-end, en computational back-end - til en stor applikation, der kan administreres som en enhed uden at skulle bekymre dig om implementering, tilslutning, administration, og skalering af hver af disse containere separat? Du har brug for en måde atorkestrere alle delene til en funktionel helhed.

Det er det job, Kubernetes påtager sig. Hvis containere er passagerer på et krydstogt, er Kubernetes krydstogtsdirektør.

Kubernetes, baseret på projekter oprettet hos Google, giver en måde at automatisere implementering og styring af applikationer med flere containere på tværs af flere værter uden at skulle administrere hver container direkte. Udvikleren beskriver applikationens layout på tværs af flere containere, herunder detaljer som hvordan hver container bruger netværk og lagring. Kubernetes håndterer resten ved kørsel. Det håndterer også styringen af ​​fiddly detaljer som hemmeligheder og appkonfigurationer.

Kubernetes kræver en vis ekspertise for at bruge godt, selvom det er langt mere af en nøglefærdig løsning, end det plejede at være. Nogle af fremskridtene i brugervenlighed skyldes let tilgængelige opskrifter til almindelige applikationer (Helm charts); nogle skyldes et væld af Kubernetes-distributioner produceret af navnebrandsfirmaer (Red Hat, Canonical, Docker), der arbejder hånd i hånd med populære applikationsstakke og udviklingsrammer.

Hvornår bruger jeg Kubernetes og container orkestrering?

Enkle containeriserede apps, der tjener et lille antal brugere, kræver typisk ikke orkestrering, endsige Kubernetes. Men hvis en app har mere end et trivielt niveau af funktionalitet eller et trivielt antal brugere, bliver det svært ikke at genopfinde hjulet fra orkestrationssystemer. Her er nogle tommelfingerregler for at bestemme, hvornår orkestrering skal komme ind i billedet.

  • Dine apps er komplekse. Enhver applikation, der involverer mere end to containere, passer sandsynligvis til regningen. Når det er sagt, kan beskedne apps, der kun tjener et lille antal brugere, blive orkestreret gennem en mere minimal løsning som Docker-sværmtilstand snarere end Kubernetes.
  • Dine apps har høje krav til skalering og modstandsdygtighed. Kubernetes og andre orkestratorer lader dig afbalancere belastninger og spinde containere op for at imødekomme efterspørgslen på en erklærende måde ved at beskrive systemets ønskede tilstand i stedet for at kode reaktioner på skiftende forhold manuelt.
  • Du ønsker at få mest muligt ud af moderne CI / CD-teknikker. Orkestrationssystemer understøtter implementeringsmønstre for apps, der bruger blå / grøn implementering eller rullende opgraderinger.

Der kan komme en dag, hvor Docker og Kubernetes overskygges af endnu venligere abstraktioner og giver plads til mere elegante måder at oprette og administrere containere på. For nu er dog Docker og Kubernetes afgørende for at kende og forstå.

Lær mere om Kubernetes og orkestrering

  • Hvad er Kubernetes? Din næste applikationsplatform
  • 4 grunde til at du skal bruge Kubernetes
  • 10 Kubernetes distributioner, der fører containerrevolutionen
  • Managed Kubernetes: AWS vs. Azure vs. Google Cloud
  • Hej MicroK8s: En enklere Kubernetes
  • Hvad er nyt i Kubernetes
  • Flere nyheder, vejledninger, anmeldelser, rådgivning og analyse fra Kubernetes