Hva er Kubernetes?

Da jeg skrev om microservices, nevnte jeg at begrepet Kubernetes ofte dukker opp i samme samtale. Mange bruker ordet uten helt å vite hva det faktisk gjør, og det kan fort høres ut som noe bare utviklere og driftspersonell bryr seg om. Men Kubernetes handler egentlig om hvordan ting henger sammen bak kulissene, og er mer relevant for flere av oss enn mange tror.

Innledning

Flere enn man tror har nytte av å forstå hva Kubernetes er, for det gir et glimt av hvordan moderne programvare fungerer bak kulissene.

Jeg er egentlig ikke utvikler, selv om noen av utviklervennene mine påstår at jeg er det uten å vite det selv. Jeg kan ikke begrepene eller prosessene til fingerspissene, men jeg har en overordnet forståelse av hvordan ting henger sammen. Den forståelsen har hjulpet meg som product manager med å ta riktige prioriteringer, stille bedre spørsmål og sette retning for hvordan jeg ønsker at ting skal gjøres.

For når man forstår litt av prosessen bak, blir det også lettere å komme med idéer og forslag som faktisk lar seg gjennomføre. Det gjelder uansett rolle – enten man jobber med markedsføring, ledelse, support eller salg. Spesielt i salg, der løfter ofte gis i entusiasmens navn, kan det å forstå litt av teknologien bak bidra til mer realistiske og bærekraftige løsninger.

Hva er Kubernetes?

Kubernetes, ofte forkortet K8s, er et åpent system som automatiserer utrulling, skalering og drift av applikasjoner som kjører i containere.

Kort sagt sørger det for at alle de små delene i et system, altså microservicene, alltid kjører som de skal. Kubernetes starter opp igjen tjenester som feiler, fordeler belastningen jevnt, og bruker ressursene der de trengs mest.

Der microservices handler om å dele opp systemet i mindre biter, handler Kubernetes om å holde alt samlet og i live.

Hvordan fungerer det?

Kubernetes organiserer applikasjoner som kjører i containere, for eksempel laget med Docker, og fordeler dem på tvers av servere der det er ledig kapasitet. Du kan se for deg et automatisk kontrolltårn som overvåker alt som skjer og flytter på ting når noe går galt, uten at noen trenger å trykke på en knapp.

Hvis en tjeneste krasjer, starter Kubernetes den automatisk opp igjen. Hvis trafikken øker, setter det inn flere instanser. Når belastningen går ned, frigjør det ressurser. Kubernetes sørger for at alt går rundt, uansett hvor mange bevegelige deler systemet har.

Hva er en container?

En container er som en liten boks som samler alt et program trenger for å fungere – selve programmet, innstillingene og det det er avhengig av for å kjøre.

Fordelen er at programmet fungerer likt uansett hvor det kjøres, enten det er på en utviklers PC, på en testserver eller i skyen. Dette gir:

  • Forutsigbarhet: Mindre risiko for at ting oppfører seg forskjellig i ulike miljøer.
  • Portabilitet: Applikasjoner kan flyttes sømløst mellom systemer og leverandører.
  • Effektivitet: Containere bruker mindre ressurser enn tradisjonelle virtuelle maskiner.

Et populært verktøy for å lage og kjøre containere er Docker, som ofte brukes sammen med Kubernetes.

Fordeler med Kubernetes

  • Automatisert drift: Kubernetes håndterer distribusjon, oppdatering og restart automatisk – du slipper manuell oppfølging av hver enkelt tjeneste.
  • Skalerbarhet: Systemet justerer kapasiteten opp og ned basert på behov, slik at man bruker ressursene effektivt.
  • Høy tilgjengelighet: Hvis en node feiler, starter Kubernetes opp en ny et annet sted. Det sørger for at systemet alltid er oppe.
  • Ressurseffektivitet: Kubernetes fordeler last og maskinkraft der den trengs mest, noe som reduserer kostnader og gjør driften mer miljøvennlig.

Utfordringer med Kubernetes

  • Bratt læringskurve: Det er mye å sette seg inn i – pods, clusters, deployments, ingress og secrets. For nybegynnere kan det virke overveldende.
  • Kompleksitet: Fleksibiliteten gir mange muligheter, men også flere måter å gjøre feil på. Små konfigurasjonsendringer kan få store konsekvenser.
  • Overkill for små prosjekter: Kubernetes gir først virkelig verdi når systemene er store og krevende. For en enkel app kan det være mer styr enn hjelp.

Kubernetes + microservices = dynamisk kontroll

Microservices og Kubernetes går hånd i hånd. Der microservices gjør applikasjonen fleksibel og modulær, sørger Kubernetes for at alle delene spiller sammen.
Det er dette samspillet som gjør at moderne applikasjoner kan oppdateres kontinuerlig, skaleres sømløst og kjøres på tvers av skyer, servere og regioner uten at brukeren merker det.

Illustrasjon som viser konseptet microservices, med flere fargede ikoner for handlekurv, bruker, betaling og sikkerhet koblet til en server via linjer – symboliserer hvordan små, uavhengige tjenester samarbeider i et større system.
Ikke helt sikker på hva microservices egentlig er? Jeg forklarer det på en enkel måte her: Hva er microservices?

Når bør man vurdere microservices og Kubernetes?

Det finnes ingen fasit, men et godt utgangspunkt er å se på kompleksitet og endringsbehov.

Et lite prosjekt er gjerne et system med én hovedfunksjon, få brukere og en kodebase som ett lite team fint kan håndtere. Alt henger tett sammen, og endringer påvirker sjelden mer enn én del av løsningen. I slike tilfeller er det som regel enklere og billigere å holde alt samlet i én applikasjon, altså en såkalt monolitt.

Et større prosjekt derimot, har ofte flere uavhengige funksjoner, mange brukere og ulike team som jobber parallelt. Når oppdateringer må gjøres ofte, og du ønsker å kunne endre én del uten å risikere at hele systemet stopper opp, da begynner microservices og Kubernetes å gi mening.

Hvis du bruker mer tid på å koordinere endringer enn å utvikle nye funksjoner, hvis systemet begynner å vokse ut av rammene sine, eller hvis dere stadig støter på problemer med ytelse, oppdateringer eller samarbeid mellom team, da er det kanskje på tide å tenke mer modulært.

Kort oppsummert

Kubernetes er et fundament for hvordan moderne programvare faktisk driftes. Det automatiserer mange av utfordringene som oppstår når man håndterer mange små tjenester, men krever også forståelse, planlegging og god struktur for å fungere optimalt.

For små prosjekter holder det kanskje med en enklere løsning. Men for store, komplekse systemer med hyppige endringer er Kubernetes rett og slett limet som holder alt sammen.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *