Programmering

Kubernetes vs. Docker: Forstå containere og orkestrering

Hvis du har fulgt med på de nyeste trendene innen programvareutvikling, er det to termer du utvilsomt har opplevd igjen og igjen: Docker og Kubernetes, som egentlig er stikkord forcontainere ogorkestrering.

Docker-containere har bidratt til å effektivisere prosessen med å flytte applikasjoner gjennom utvikling og testing og til produksjon, mens både Docker og Kubernetes har bidratt til å gjenoppfinne måten applikasjoner bygges og distribueres på - som samlinger av mikrotjenester i stedet for monolitiske stabler.

Hvorfor er Docker og Kubernetes viktige, hvordan endrer de programvareutvikling, og hvilken rolle spiller hver i prosessen? Jeg prøver å svare på spørsmålene nedenfor.

Docker og containere

Beholdere - støttet i Linux, Windows og andre moderne operativsystemer - lar programvare kjøre i selvstendige mini-miljøer som er isolert fra resten av systemet. Beholdere er blitt sammenlignet med virtuelle maskiner, men de er ikke virtuelle maskiner - de er langt slankere, raskere å starte og stoppe, og mye mer fleksible og bærbare. Fordi containere kan spinnes opp eller ned eller skaleres inn eller ut på sekunder, gjør de det lettere å kjøre apper i elastiske omgivelser som skyen.

Linux og andre operativsystemer har støttet apper i container i mange år, men å jobbe med containere var ikke akkurat brukervennlig. Docker, i både åpen kildekode og kommersielle inkarnasjoner, er programvare som gjør containere til en brukervennlig og utviklervennlig vare. Docker tilbyr et vanlig sett med verktøy og metaforer for containere, slik at du kan pakke apper i containerbilder som enkelt kan distribueres og brukes på nytt i din egen organisasjon eller andre steder.

Kort sagt, Docker gjør det enkelt å lage containerbilder, versjon dem, dele dem, flytte dem rundt og distribuere dem til Docker-kompatible verter som containere som kjører.

Når bruker jeg Docker og containere?

Docker og containere egner seg best når du arbeider med arbeidsbelastninger som må ha en eller flere av følgende egenskaper:

  • Elastisk skalerbarhet. Du vet ikke hvor mange forekomster av en app du må kjøre for å møte etterspørselen. En containerisert app eller tjeneste kan skaleres for å møte etterspørselen ved å distribuere færre eller flere forekomster av containerne.
  • Isolering. Du vil ikke at appen skal forstyrre andre apper. Kanskje du kjører flere versjoner av appen side om side for å tilfredsstille forskjellige revisjoner av et API. Eller kanskje du vil holde det underliggende systemet rent (alltid en god idé).
  • Bærbarhet. Du må kjøre denne appen i en rekke miljøer, og du trenger at hvert oppsett er reproduserbart. Beholdere lar deg pakke sammen hele kjøretidsmiljøet til applikasjonen din, noe som gjør appen enkel å distribuere hvor som helst du finner en Docker-kompatibel vert - et utvikler-skrivebord, en QA-testmaskin, lokalt jern eller ekstern sky.

Lær mer om Docker og containere

  • Hva er Docker? Gnisten for containerrevolusjonen
  • Hvorfor du bør bruke Docker og containere
  • Kom i gang med Docker
  • De skjulte fordelene med Docker for QA
  • 12 open source-verktøy som gjør Docker bedre
  • Flere nyheter om Docker, analyse, hvordan du gjør det, omtaler og råd

Kubernetes og container orkestrering

Beholdere er hovedsakelig designet for å isolere prosesser eller applikasjoner fra hverandre og det underliggende systemet. Det er enkelt å lage og distribuere individuelle containere. Men hva om du vil samle flere containere - si en database, en web-front-end, en beregnings-back-end-til et stort program som kan administreres som en enhet, uten å måtte bekymre deg for distribusjon, tilkobling, administrering, og skalere hver av disse containerne separat? Du trenger en måte åorkestrere alle delene til en funksjonell helhet.

Det er jobben Kubernetes tar på seg. Hvis containere er passasjerer på cruise, er Kubernetes cruisedirektør.

Kubernetes, basert på prosjekter opprettet hos Google, gir en måte å automatisere distribusjon og administrasjon av applikasjoner med flere containere på tvers av flere verter, uten å måtte administrere hver container direkte. Utvikleren beskriver applikasjonsoppsettet over flere containere, inkludert detaljer som hvordan hver container bruker nettverk og lagring. Kubernetes håndterer resten ved kjøretid. Den håndterer også håndtering av fiddly detaljer som hemmeligheter og app konfigurasjoner.

Kubernetes krever en viss kompetanse for å bruke godt, selv om det er mye mer en totalentreprise enn det pleide å være. Noe av fremgangen i brukervennlighet skyldes lett tilgjengelige oppskrifter for vanlige applikasjoner (Helm charts); noen skyldes et vell av Kubernetes-distribusjoner produsert av firmaer med merkevarer (Red Hat, Canonical, Docker) som fungerer hånd i hånd med populære applikasjonsstabler og utviklingsrammer.

Når bruker jeg Kubernetes og container orkestrering?

Enkle containeriserte apper som betjener et lite antall brukere krever vanligvis ikke orkestrering, enn si Kubernetes. Men hvis en app har mer enn et trivielt nivå av funksjonalitet eller et trivielt antall brukere, blir det vanskelig å ikke finne opp hjulet som tilbys av orkestrasjonssystemer. Her er noen tommelfingerregler for å bestemme når orkestrering skal komme inn i bildet.

  • Appene dine er komplekse. Enhver applikasjon som involverer mer enn to containere passer sannsynligvis til regningen. Når det er sagt, kan beskjedne apper som bare betjener et lite antall brukere, bli orkestrert gjennom en mer minimal løsning som Docker-svermmodus i stedet for Kubernetes.
  • Appene dine har høye krav til skalering og motstandskraft. Kubernetes og andre orkestratorer lar deg balansere belastninger og spinne opp containere for å møte etterspørselen deklarativt, ved å beskrive den ønskede tilstanden til systemet i stedet for å kode reaksjoner på endrede forhold for hånd.
  • Du vil få mest mulig ut av moderne CI / CD-teknikker. Orchestration-systemer støtter distribusjonsmønstre for apper som bruker blå / grønn distribusjon eller rullende oppgraderinger.

Det kan komme en dag da Docker og Kubernetes blir formørket av enda vennligere abstraksjoner, og gir vei til mer elegante måter å lage og administrere containere på. For nå er imidlertid Docker og Kubernetes avgjørende for å kjenne og forstå.

Lær mer om Kubernetes og orkestrering

  • Hva er Kubernetes? Din neste applikasjonsplattform
  • 4 grunner til at du bør bruke Kubernetes
  • 10 Kubernetes distribusjoner som leder containerrevolusjonen
  • Managed Kubernetes: AWS vs. Azure vs. Google Cloud
  • Hei MicroK8s: En enklere Kubernetes
  • Hva er nytt i Kubernetes
  • Flere nyheter, veiledninger, anmeldelser, råd og analyse fra Kubernetes
$config[zx-auto] not found$config[zx-overlay] not found