Hvad er Kubernetes?

Af Weapp · Opdateret

Kubernetes er en orkestreringsplatform der holder containere kørende i drift: Den genstarter det der crasher, skalerer op ved høj belastning og ruller nye versioner ud på en kontrolleret måde. Hvis containeren er en byggeklods, er Kubernetes dirigenten der får mange af dem til at spille sammen. Til små systemer er det ofte overkill, og enklere drift er nok.

Kubernetes bliver næsten altid nævnt i samme åndedrag som containere og moderne drift, men hvad det faktisk gør, forbliver uklart for mange beslutningstagere. Navnet hjælper ikke. Her er hvad Kubernetes er, sammenligningen der gør det forståeligt, og det ærlige spørgsmål om I virkelig har brug for det.

Dirigenten oven på containerne

For at forstå Kubernetes skal man først forstå containeren: en app pakket med hele sit miljø så den kører ens overalt. En container er en byggeklods. Men et rigtigt system består sjældent af én container. Det kan være dusinvis eller hundredvis, som skal starte, tale sammen, holdes i live og skaleres.

Her kommer Kubernetes ind. Hvis hver container er en musiker, er Kubernetes dirigenten der får hele orkestret til at spille sammen. Den bestemmer hvor mange containere der skal køre, hvor de skal køre, hvordan de finder hinanden, og hvad der sker når en af dem falder fra. Alene kan hver container gøre sit; Kubernetes får mange til at fungere som en helhed.

Hvad Kubernetes giver dig

Konkret løser platformen tre ting som ellers kræver konstant manuelt opsyn:

  • Selvhelbredelse. Crasher en container, starter Kubernetes automatisk en ny i stedet. Går en hel maskine ned, flyttes arbejdet til en anden. Systemet finder selv tilbage til den tilstand du har beskrevet, og ingen skal vækkes midt om natten.
  • Skalering. Når belastningen stiger, kan Kubernetes starte flere kopier af en tjeneste for at klare presset og lukke dem igen når det falder til ro. Kapaciteten følger behovet i stedet for at blive gættet på forhånd.
  • Kontrollerede releases. Nye versioner kan rulles ud trinvis og stoppes eller rulles tilbage hvis noget ser forkert ud. Så vælter en opdatering ikke hele tjenesten på én gang.

Det er den slags store tjenester med høj oppetid har brug for, og som er tungt at bygge og passe manuelt.

Et konkret scenarie

Forestil dig en webshop der får en kraftig trafikspids under en kampagne. Uden orkestrering skal nogen på forhånd gætte hvor meget kapacitet der er brug for, holde den kørende døgnet rundt og gribe ind manuelt hvis en server crasher midt i travlheden. Med Kubernetes startes flere kopier automatisk når trafikken stiger, dele der er crashet, erstattes uden indgriben, og når kampagnen er slut, skaleres det hele ned igen. Driftsteamet beskriver hvad der skal gælde, og platformen sørger for at det bliver ved med at være sådan.

Den ærlige tommelfingerregel: ofte overkill

Her er den vigtigste pointe, som sjældent bliver sagt lige ud: For de fleste små systemer er Kubernetes unødvendigt. Med kraften følger betydelig kompleksitet: mange bevægelige dele, en stejl læringskurve og en vedligeholdelse der er et håndværk i sig selv.

Har du en enkelt app eller nogle få tjenester med jævn trafik, er enklere drift som regel rigeligt: en almindelig server eller en administreret platform hvor leverandøren tager sig af det tunge. At indføre Kubernetes “fordi alle andre gør det” er en almindelig måde at købe sig til problemer man ikke har. Platformen begynder først at kunne betale sig når I har mange tjenester, svingende belastning og behov for at udrulle og skalere ofte.

Den skjulte omkostning er sjældent licenser eller servere, men kompetencer og tid. Kubernetes kræver folk der forstår det, kan fejlsøge det når det driller, og holder det sikkert og opdateret. For et lille team betyder det ofte at en stor del af udviklingskraften går til at passe platformen i stedet for at bygge produktet. Det er den afvejning der gør spørgsmålet skarpt: Hver time der bruges på unødvendig infrastruktur, er en time der ikke går til det kunderne faktisk betaler for. Vælger I alligevel Kubernetes, kan en administreret variant hos en cloudleverandør flytte en del af den byrde væk fra jer.

Sådan tænker du over valget

Tag udgangspunkt i behovet, ikke i trenden. Spørgsmålet er ikke “er Kubernetes moderne”, men “har vi mange tjenester og en belastning der virkelig kræver det her”. Er svaret nej, er enklere drift både billigere og mere stabilt. Er svaret ja, kan en administreret Kubernetes hos en cloudleverandør tage toppen af kompleksiteten.

Vil I have en neutral vurdering af hvilket driftsniveau der passer til netop jeres tjenester, ser vi hos Weapp gerne på helheden sammen med jer før I bygger noget op som I derefter skal vedligeholde.

Ofte stillede spørgsmål

Hvad gør Kubernetes, kort fortalt?

Kubernetes holder styr på containere i drift. Den sørger for at det rigtige antal kører, genstarter dem der crasher, fordeler belastningen mellem dem, skalerer op når trafikken stiger og ned når den falder til ro, og ruller nye versioner ud uden afbrydelser. I stedet for at et menneske holder øje med alt det manuelt, klarer platformen det automatisk.

Hvad er forskellen på containere og Kubernetes?

En container pakker en app så den kører ens overalt. Kubernetes er laget ovenpå der styrer mange containere på én gang i produktion. Containeren er byggeklodsen, Kubernetes dirigenten der får dem til at spille sammen, holde sig i live og skalere. Man skal bruge containere for at bruge Kubernetes, men ikke omvendt.

Hvad menes der med selvhelbredelse?

At platformen selv retter op på problemer. Hvis en container crasher eller holder op med at svare, opdager Kubernetes det og starter en ny i stedet uden at nogen behøver at gribe ind. Går en hel maskine ned, flyttes arbejdet til en anden. Systemet stræber hele tiden mod den ønskede tilstand du har beskrevet, og finder selv tilbage til den.

Har mit system brug for Kubernetes?

Ofte ikke. Kubernetes kan betale sig når I har mange tjenester, høj eller svingende belastning og behov for at skalere og udrulle nye versioner ofte. Til en enkelt app eller nogle få tjenester med jævn trafik er det som regel overkill: Kompleksiteten koster mere end den giver, og enklere drift er rigeligt. Størrelsen på behovet afgør det.

Er Kubernetes svært at drive?

Det kræver kompetencer. Kubernetes er kraftfuldt, men har mange bevægelige dele, og at sætte det op og vedligeholde det på en sikker måde er et håndværk i sig selv. Mange vælger derfor en administreret variant hos en cloudleverandør, som tager sig af det tungeste. At indføre det uden at behovet er der, er en almindelig måde at købe sig til unødig kompleksitet på.