Hva er Kubernetes?
Kubernetes er en orkestreringsplattform som holder containere i gang i produksjon: Den restarter det som krasjer, skalerer opp ved høy last og ruller ut nye versjoner på en kontrollert måte. Er containeren en byggestein, er Kubernetes dirigenten som får mange av dem til å spille sammen. For små systemer er det ofte i overkant, og enklere drift er nok.
Kubernetes nevnes nesten alltid i samme åndedrag som containere og moderne drift, men hva det faktisk gjør, forblir uklart for mange beslutningstakere. Navnet hjelper ikke. Her ser vi på hva Kubernetes er, bildet som gjør det forståelig, og det ærlige spørsmålet om dere virkelig trenger det.
Dirigenten oppå containerne
For å forstå Kubernetes må man først forstå containeren: en app pakket sammen med hele miljøet sitt slik at den kjører likt overalt. En container er en byggestein. Men et fullverdig system består sjelden av én eneste container. Det kan være dusinvis eller hundrevis, som skal starte, snakke sammen, holdes i live og skaleres.
Det er her Kubernetes kommer inn. Hvis hver container er en musiker, er Kubernetes dirigenten som får hele orkesteret til å spille sammen. Den bestemmer hvor mange containere som skal kjøre, hvor de skal kjøre, hvordan de finner hverandre, og hva som skjer når en av dem faller fra. Alene kan hver container gjøre jobben sin; Kubernetes får mange til å fungere som en helhet.
Hva Kubernetes gir deg
Konkret løser plattformen tre ting som ellers krever konstant manuell oppfølging:
- Self-healing (selvreparasjon). Krasjer en container, starter Kubernetes automatisk en ny i stedet. Går en hel maskin ned, flyttes arbeidet til en annen. Systemet vender av seg selv tilbake til tilstanden du har beskrevet, uten at noen trenger å vekkes midt på natten.
- Skalering. Når lasten øker, kan Kubernetes starte flere kopier av en tjeneste for å møte trykket, og avvikle dem igjen når det roer seg. Kapasiteten følger behovet i stedet for å gjettes på forhånd.
- Kontrollerte utrullinger. Nye versjoner kan rulles ut trinnvis og stoppes eller rulles tilbake hvis noe ser feil ut. Slik unngår man at én oppdatering tar ned hele tjenesten på én gang.
Dette er funksjoner som store tjenester med høye krav til oppetid trenger, og som er tungvinte å bygge og håndtere manuelt.
Et konkret scenario
Tenk deg en nettbutikk som får en kraftig trafikktopp under en kampanje. Uten orkestrering må noen gjette på forhånd hvor mye kapasitet som trengs, holde den i gang døgnet rundt og gripe inn manuelt hvis en server krasjer midt i rushet. Med Kubernetes startes flere kopier automatisk når trafikken øker, krasjede deler erstattes av seg selv, og når kampanjen er over, skaleres alt ned igjen. Driftsteamet beskriver hva som skal gjelde, og plattformen sørger for at det forblir slik.
Den ærlige tommelfingerregelen: ofte i overkant
Her er det viktigste poenget, som sjelden sies rett ut: For de fleste små systemer er Kubernetes unødvendig. Med kraften følger betydelig kompleksitet: mange bevegelige deler, en bratt læringskurve og et vedlikehold som er et håndverk i seg selv.
Har du én enkelt app eller noen få tjenester med jevn trafikk, er enklere drift som regel mer enn nok: en vanlig server eller en administrert plattform der leverandøren tar seg av det tunge. Å innføre Kubernetes «fordi alle andre gjør det» er en vanlig måte å skaffe seg unødvendige problemer på. Plattformen begynner først å lønne seg når dere har mange tjenester, varierende last og behov for å rulle ut nye versjoner og skalere ofte.
Den skjulte kostnaden er sjelden lisenser eller servere, men kompetanse og tid. Kubernetes krever folk som forstår det og kan feilsøke det når det krøller seg, og som holder det sikkert og oppdatert. For et lite team betyr det ofte at en stor del av utviklingskapasiteten går med til å drifte plattformen i stedet for å bygge produktet. Det er den avveiingen som gjør spørsmålet skarpt: Hver time som brukes på unødvendig infrastruktur, er en time som ikke går til det kundene faktisk betaler for. Velger dere likevel Kubernetes, kan en administrert variant hos en skyleverandør ta over noe av den byrden.
Slik tenker du rundt valget
Ta utgangspunkt i behovet, ikke i trenden. Spørsmålet er ikke «er Kubernetes moderne», men «har vi mange tjenester og en last som virkelig krever dette». Er svaret nei, er enklere drift både billigere og stabilere. Er svaret ja, kan en administrert Kubernetes hos en skyleverandør ta brodden av kompleksiteten.
Ønsker dere en nøytral vurdering av hvilket driftsnivå som passer for nettopp deres tjenester, ser vi i Weapp gjerne på helheten sammen med dere før dere bygger opp noe dere senere må vedlikeholde.
Ofte stilte spørsmål
Hva gjør Kubernetes, kort sagt?
Kubernetes holder orden på containere i drift. Den sørger for at riktig antall kjører, restarter dem som krasjer, fordeler last mellom dem og skalerer opp når trafikken øker og ned når den roer seg. Den ruller også ut nye versjoner uten avbrudd. I stedet for at et menneske passer på alt dette manuelt, tar plattformen seg av det automatisk.
Hva er forskjellen på containere og Kubernetes?
En container pakker en app slik at den kjører likt overalt. Kubernetes er et lag oppå som styrer mange containere samtidig i produksjon. Containeren er byggesteinen, Kubernetes dirigenten som får dem til å spille sammen, holder dem i live og skalerer dem. Man trenger containere for å bruke Kubernetes, men ikke omvendt.
Hva menes med self-healing?
At plattformen selv retter opp problemer. Hvis en container krasjer eller slutter å svare, merker Kubernetes det og starter en ny i stedet, uten at noen trenger å gripe inn. Går en hel maskin ned, flyttes arbeidet til en annen. Systemet streber hele tiden mot den ønskede tilstanden du har beskrevet, og vender tilbake til den av seg selv.
Trenger systemet mitt Kubernetes?
Ofte ikke. Kubernetes lønner seg når dere har mange tjenester, høy eller varierende last og behov for å skalere og rulle ut nye versjoner ofte. For én enkelt app eller noen få tjenester med jevn trafikk er det som regel i overkant: Kompleksiteten koster mer enn den gir, og enklere drift er mer enn nok. Det er størrelsen på behovet som avgjør.
Er Kubernetes vanskelig å drifte?
Det krever kompetanse. Kubernetes er kraftig, men har mange bevegelige deler, og å sette det opp og vedlikeholde det på en sikker måte er et håndverk i seg selv. Mange velger derfor en administrert variant hos en skyleverandør, som tar seg av det tyngste. Å innføre det uten at behovet finnes, er en vanlig måte å kjøpe seg unødvendig kompleksitet på.