Kontakt os

Som vores tidligere blogindlæg forklarede, når nogen henviser til Docker k Kubernetes, hvad de virkelig mener er (mest sandsynligt) Docker Swarm k Kubernetes, hvilket giver meget mere mening, da de begge er containerorkestreringsteknologier.
Således vil denne artikel sammenligne, hvilken teknologi der skal vælges, mens de overvejer deres vigtigste forskelle med hensyn til popularitet, installation, implementering, skalerbarhed, netværk og andre aspekter. Nysgerrig efter at finde ud af det?
Kubernetes er en open source containerorkestreringsplatform. Disse platforme giver mulighed for automatisering af containeriseringsprocesser, såsom implementering, administration af containere og skalering af containeriserede applikationer. Kubernetes, som også kan kaldes „Kube“ eller k8s, blev oprindeligt udviklet af Google i 2014. I øjeblikket vedligeholdes platformen af Cloud Native Computing Foundation (CNCF), og det er skrevet i Gå.
Docker Swarm er også et containerorkestreringsværktøj. Det er hjemmehørende i Docker-platformen, og blev oprettet for at sikre, at applikationer kan køre problemfrit på tværs af forskellige noder, der deler de samme containere. Således tillader Swarm udviklere eller DevOps-ingeniører til effektivt at implementere, administrere og skalere klynger af noder på Docker. Docker-platformen er også skrevet i Go.
Som vi kan se, blev både Docker Swarm og Kubernetes oprettet for at opfylde det samme formål. Fortsæt med at læse for at finde ud af, hvordan de adskiller sig, og hvilken du skal vælge.
Med hensyn til popularitet, Kubernetes har en klar fordel, som vi kan observere i henhold til Google Trends -diagrammet. Plus, ved at se på Github, kan vi konkludere, at mens Kubernetes har 81,1k stjerner, har Docker Swarm kun 5,8 k stjerner. Det er en stor forskel og giver ikke meget plads til tvivl. Kubernetes er bestemt en mere populær løsning end Docker Swarm, når det kommer til containerorkestreringsteknologier.

Docker Swarm er nemmere at installere end Kubernetes. I betragtning af at brugeren har Docker Engine installeret på en maskine, er de eneste to manglende ting at tildele IP-adresser til værter og yderligere åbne porte og protokoller mellem dem. Vær dog opmærksom på, at det også er vigtigt at etablere en managernode og arbejdernoder før initialisering af Swarm.
Tværtimod er Kubernetes ikke så ligetil. Den gode nyhed er, at det er muligt at installere det på næsten enhver platform. Den ikke så enkle nyhed er, at mens Docker Swarm kommer ud af kassen med den oprindelige installation, kræves en binær til at orkestrere Kubernetes-containere - Kubectl. Selvom det er lidt mere komplekst at installere end Swarm, er det heller ikke et stort puslespil, og der er masser af dokumentation om, hvordan man gør det.
I Docker Swarm kan brugerne bruge foruddefinerede markeringsfiler til at definere og implementere applikationer ved at erklære den ønskede tilstand. Mere præcist beskrives implementeringen ved hjælp af Docker Compose Specifikation i YAML (YAML er ikke et markeringssprog) filer. Disse filer, også kendt som Docker Compose Files, kan desuden specificere overlay-netværkskonfigurationerne, og hvilke tjenester der skal tildeles dem, hvilket muliggør sikkerhed og opdeling.
Endvidere kan en samling tjenester i Swarm implementeres ved hjælp af en enkelt docker-compose.yaml-fil, og der oprettes ofte ekstra filer for at ændre værdier for andre implementeringer (f.eks. test, produktion og iscenesættelse). Derfor tillader disse filer containere og tjenester at køre på flere netværk og maskiner.
Til sammenligning kan en applikation i Kubernetes implementeres ved ved hjælp af en kombination af udrulninger, pods og tjenester. Bælge er den grundlæggende enhed i Kubernetes, og hver består af en gruppe samlokaliserede containere. Grundlæggende kan en controller ved at beskrive Pods' ønskede tilstand ændre den aktuelle tilstand til den ønskede.
Kubernetes-implementeringer kan definere alle aspekter af et programs livscyklus, herunder antallet af pods, de billeder, der skal bruges, og hvordan pods kan opdateres. I Kubernetes kan implementeringer beskrives ved hjælp af YAML eller endda JSON (for dem, der foretrækker det) og er typisk mere detaljerede end Docker Swarm, da implementeringsspecifikationen kan være omfattende og kræver en øget konfigurerbarhed.
Sammenfattende giver begge teknologier brugerne mulighed for at anvende rullende opdateringer og også at rulle de samme opdateringer tilbage, når det er nødvendigt. I Swarm foretages en opdatering automatisk rullet tilbage til den tidligere version i tilfælde af at implementeringen mislykkes. Hvis installationen mislykkes i Kubernetes, mislykkes både de oprettede Pods og de originale Pods, og tilbagekaldelser skal udtrykkeligt anmodes om da der ikke er noget statusendepunkt. Derudover er det også muligt at udføre tørre løb i Kubernetes, hvis udviklere har brug for at forhåndsvise ændringerne uden faktisk at udføre dem.
Lad os dog huske på, at Kubernetes giver brugerne mulighed for at vælge Pods og Services i en implementering ved at bruge annoteringer og etiketter. Dette tillader udviklere eller DevOps-ingeniører til at udrulle en enkelt enhed og teste den i produktionsmiljøet, før de udfører en klyngeopdatering. Selvom det ikke er umuligt at gøre det i Swarm, er det ikke særlig ligetil og derfor ikke almindeligt gjort.
Når det kommer til skalerbarhed i Docker Swarm, kan tjenester skaleres gennem Docker Compose YAML-skabeloner. Samlet set giver Swarm brugerne mulighed for at implementere og skalere hurtigere og på en nemmere måde, i betragtning af at det muliggør skalering efter behov.
I Kubernetes en en-i-alt-ramme kan omfatte et komplekst system. Det er komplekst, fordi klyngetilstanden bruger et samlet sæt API'er (Application Programming Interfaces), der forhindrer udrulning og skalering af containere.
Derfor giver begge teknologier god skalerbarhed. Mens Docker Swarm prioriterer hastighed, tilbyder Kubernetes en en-i-alt-løsning.
Både Docker Swarm og Kubernetes tilbyder høj tilgængelighed, men de har forskellige måder at gøre det på.
På den ene side, når du bruger Swarm, er det tjenester kan replikeres mellem noder. Swarm manager er ansvarlig for hele klyngen og håndterer hver arbejdernodes ressourcer. Således opdateres hver Manager-node med hensyn til tilstandsoplysninger. Hvis Leader Manager fejler, kan en anden manager hurtigt tildeles og fortsætte rollen uden at gå på kompromis med programmets stabilitet og tilgængelighed.
På den anden side Kubernetes har Pods fordelt mellem noder. Dette giver god tolerance, hvis applikationen har en vis fejl. Load balanceringstjenester i Kubernetes er i stand til at identificere usunde Pods og nemt slippe af med dem, hvilket sikrer høj tilgængelighed.
I Docker Swarm kræver noderne en DNS (domænenavnsystem) element, der bruges til at distribuere indgående anmodninger mod et bestemt servicenavn. Disse tjenester kan køre på porte (angivet af brugerne) eller etableres automatisk.
I Kubernetes udføres belastningsbalancering når Pods eksponeres inden for en tjeneste, som igen kan bruges som en belastningsbalancerer i klyngen. Plus, en indgang bruges typisk til belastningsbalancering.
Sværm genererer To forskellige typer netværk for hver node, der slutter sig til en sværmklynge. Det ene netværk er ansvarligt for at skitsere en overlay af hver tjeneste inden for netværket, mens det andet netværk bygger en „host-only bridge“ for alle containere. Noder i sværmklyngens krypterede overlay kan styre og administrere trafik mellem dem. Men hvis det ønskes, kan brugerne også vælge at kryptere containerdatatrafik, når de selv bygger et overlay-netværk.
Til sammenligning skaber Kubernetes en peer-to-peer, flad forbindelse, der gør det muligt for alle pods at kommunikere med hinanden. Det flade netværk implementeres normalt som et overlay. Yderligere, for at definere undernet, har Kubernetes' netværksmodel brug for to CIDR'er (Klasseløse interdomæneroutere): den ene til Node IP-adressering og den anden til tjenester.
Kubernetes giver et dashboard der indeholder alt, hvad brugeren har brug for, såsom styring af ressourcer, implementering af containeriserede applikationer i en bestemt klynge, visning af fejllogfiler og så videre.
Tværtimod, Docker Swarm har ikke et indbygget dashboard. I stedet har den en anden GUI, som kræver integration med tredjepartsværktøjer eller platforme (f.eks. Swarmpit og Dockstation). Disse alternativer kan variere fra enkle og ligetil GUI'er til mere komplekse.
Først og fremmest tillader både Kubernetes og Docker Swarm teams at angiv den ønskede tilstand af et system, der kører flere containeriserede arbejdsbelastninger. Når den ønskede tilstand er etableret, vil begge teknologier få dem til at ske ved hjælpe brugerne med at administrere containerlivscyklusser og overvågning af deres beredskab og sundhed.
Desuden Swarm og Kubernetes kan løbe hvor som helst (ikke at være bundet til en enkelt leverandør eller cloud-platform) og brug flere værter at oprette en klynge, hvor belastningen kan fordeles.
Nu hvor vi har opsummeret deres ligheder, er det endnu sværere at vide hvordan man vælger Docker Swarm vs Kubernetes, men forhåbentlig kan vi hjælpe dig med at beslutte den mest passende løsning.
På den ene side bygger Docker Swarm på Docker og kan koordinere flere forekomster af Docker Engine. Plus, Swarm er ret let at installere. Enhver med Docker installeret har kun brug for et par Docker-kommandoer og kan straks begynde at bruge Swarm.
En anden stor fordel er, at dens læringskurven er ikke så stejl som Kubernetes. Derfor kan man generelt sige, at Swarm skiller sig ud for enkelhed!
På den anden side er Kubernetes meget fleksibel da det giver brugerne mulighed for at køre systemer i containere, som de har brug for det. Det kræver kun, at brugerne fortæller den ønskede tilstand af det containeriserede system, og det vil ikke kun få det til at ske, men også sikre, at det forbliver i den ønskede tilstand og fikser enhver hindring, der måtte opstå, på trods af dens kompleksitet. Faktisk er K8s i stand til at gøre så meget, at det næsten er svært at få fat i alt, hvad det tilbyder. Det omfatter desuden et stort udvalg af godkendelsesmuligheder og konfigurationer. Standardkonfigurationerne imødekommer de fleste behov, og det er muligt at udforske andre konfigurationsmuligheder for tilpasning og udvidelser.
I modsætning hertil er Swarm mere begrænset i denne henseende. Som forklaret kan tjenester i K8s også specificeres i henhold til belastningsbalancertyper, hvilket giver udviklere mulighed for at få mest muligt ud af flere platformes muligheder.
Derfor er det med Kubernetes muligt at gøre næsten alt (ikke så sige alt) vedrørende containeriseringsorkestrering. Den nøgle takeaway er, at flere løsninger indebærer større fleksibilitet end Swarm; det kommer dog på bekostning af ikke at være så let at lære og fuldt ud mestre.
Desuden har Kubernetes også eksisteret i længere tid end Swarm. Dette bidrog meget til dens fordel med hensyn til popularitet og resulterede følgelig i en omfattende fællesskab hvor brugerne nemt kan finde dokumentation og support.
Der er ingen præcis regel, når det kommer til at vælge den ene eller den anden teknologi, men generelt, hvis produktionsinstallationen er på Kubernetes, giver det mening at teste det også på Kubernetes. Plus, som vi kan skelne, forbliver Kubernetes mere Kraftfuld, fleksibel og tilpasselig løsning end Swarm.
Ikke desto mindre, når du håndterer andre mindre komplekse brugssager og med mindre arbejdsbelastninger, enkelheden ved Swarm kan være fordelagtig og lettere at starte.
Afslutningsvis er Kubernetes en fuldt udstyret orkestreringsteknologi, der kan håndtere tunge arbejdsbelastninger og komplekse brugssager. Til sammenligning er Docker Swarm meget praktisk og ligetil til mere begrænsede brugssager.
Hvis spørgsmålet er, Er den ene bedre end den anden? Godt, ja. Kubernetes er bedre. Det er det første valg for mange udviklere, DevOps og organisationer. Plus, alle større cloud-udbydere understøtter det.
Men betyder det, at Docker Swarm er dårlig? Nej, ikke rigtig. Swarm er en perfekt fin løsning til mindre arbejdsbelastninger. Det er ikke så fleksibelt og tilpassbart som Kubernetes, men det er meget nemt at bruge som en containerorkestreringsteknologi.


Marketing praktikant med særlig interesse for teknologi og forskning. I min fritid spiller jeg volleyball og forkæler min hund så meget som muligt.

Sikkerheds- og cloud-driftsekspert. Baggrund i offentlig transport, Finans, og regering. Handler normalt mønter på decentrale børser:)
People who read this post, also found these interesting: