Teknologi & innovasjonPublisert: 16. mars 202612 min lesing

Kubernetes for nybegynnere — de viktigste konseptene forklart

Kubernetes er blitt standarden for å kjøre containeriserte applikasjoner i produksjon. Her er en praktisk innføring i de konseptene du må forstå.

Norsk Næring
Norsk NæringRedaksjon
Kubernetes orkestrerer containere på tvers av mange maskiner — og gjør moderne skyarkitektur…

Kubernetes orkestrerer containere på tvers av mange maskiner — og gjør moderne skyarkitektur mulig i stor skala.

Lær Kubernetes fra bunnen: pods, deployments, services, namespaces og ingress forklart på norsk for utviklere og DevOps-ingeniører.

Annonse

Hva er Kubernetes og hvorfor trenger du det?

Kubernetes (forkortet k8s) er et åpen kildekode-system for automatisk utrulling, skalering og administrasjon av containeriserte applikasjoner. Det ble opprinnelig utviklet av Google basert på erfaringer fra deres interne system Borg, og er i dag et prosjekt under Cloud Native Computing Foundation (CNCF).

Tenk deg at du har en nettapplikasjon pakket i en Docker-container. På én enkelt server er det enkelt å starte den med docker run. Men hva skjer når du trenger å kjøre 50 instanser, fordele trafikk mellom dem, håndtere krasj automatisk og rulle ut oppdateringer uten nedetid? Det er her Kubernetes kommer inn. K8s gjør alt dette — og mye mer — automatisk, på tvers av hundrevis eller tusenvis av servere.

Kubernetes-arkitekturen — control plane og worker nodes

Et Kubernetes-cluster består av to typer noder: control plane (tidligere kalt master) og worker nodes. Control plane er hjernen i clusteret og inneholder følgende komponenter:

API Server er den eneste inngangsporten til clusteret. Alle kommandoer via kubectl treffer API Server. etcd er en distribuert nøkkel-verdi-database som lagrer hele tilstanden til clusteret. Scheduler bestemmer hvilken worker node en ny Pod skal plasseres på. Controller Manager kjører kontrollører som sørger for at ønsket tilstand (desired state) alltid samsvarer med faktisk tilstand.

Worker nodes er maskinene som faktisk kjører applikasjonene dine. Hver worker node har: kubelet (agent som kommuniserer med control plane), kube-proxy (håndterer nettverksregler) og container runtime (Docker, containerd eller CRI-O).

Pods, Deployments og ReplicaSets — de viktigste objektene

En Pod er den minste deploybare enheten i Kubernetes. En Pod inneholder én eller flere containere som deler nettverk og lagring. I praksis har du som regel én container per Pod. Pods er flyktige — de starter og stopper kontinuerlig, og du styrer dem nesten aldri direkte.

Et Deployment er det du bruker i praksis. Et Deployment beskriver ønsket tilstand: "Jeg vil ha 3 kopier av applikasjon X, basert på image my-app:v2". Kubernetes sørger for at dette alltid er tilfelle. Slutter en Pod å fungere, starter Kubernetes automatisk en ny. Et ReplicaSet er det Deployment oppretter bak kulissene for å holde riktig antall Pods kjørende.

Eksempel på en enkel Deployment-konfigurasjon (YAML):

apiVersion: apps/v1 / kind: Deployment / metadata: name: my-app / spec: replicas: 3 / selector: matchLabels: app: my-app / template: metadata: labels: app: my-app / spec: containers: - name: my-app / image: my-app:v2 / ports: - containerPort: 8080

Annonse

Services — slik eksponerer du applikasjoner

Pods får tilfeldige IP-adresser som endrer seg når Pods starter på nytt. Du kan ikke hardkode disse adressene. En Service er Kubernetes sin løsning: en stabil nettverksendepunkt som sender trafikk videre til de riktige Pods, uavhengig av hvilke IP-adresser Pods har for øyeblikket.

Det finnes fire typer Services: ClusterIP (bare tilgjengelig inne i clusteret — standard), NodePort (eksponerer applikasjonen på en port på hver worker node), LoadBalancer (oppretter en ekstern lastbalanser hos skyleverandøren — brukes i AWS, GCP, Azure) og ExternalName (mapper et DNS-navn til en ekstern tjeneste).

I produksjon bruker du nesten alltid en Ingress-kontroller (f.eks. nginx-ingress) foran LoadBalancer-services. Ingress lar deg rute trafikk basert på URL-sti og domenenavn, og håndterer TLS-sertifikater via cert-manager.

ClusterIPIntern kommunikasjon mellom tjenester
NodePortEnkel ekstern tilgang, porter 30000-32767
LoadBalancerProduksjon med ekstern IP fra skyleverandør
IngressHTTP/HTTPS-ruting med domener og SSL/TLS

ConfigMaps, Secrets og namespaces

Hardkoding av konfigurasjon og hemmeligheter i container-images er en dårlig praksis. Kubernetes tilbyr ConfigMaps for ikke-sensitiv konfigurasjon (f.eks. database-URL, feature flags) og Secrets for sensitiv informasjon (passord, API-nøkler, TLS-sertifikater). Begge kan monteres som miljøvariabler eller som filer inne i Pods.

Namespaces er en måte å dele opp et cluster i logiske seksjoner. Du kan f.eks. ha namespacene development, staging og production i samme cluster. Ressurser i ulike namespaces er isolerte fra hverandre, og du kan sette ressurskvotekvoter (CPU, RAM) per namespace. kubectl bruker namespace med flagget -n: kubectl get pods -n production.

En god tommelfingerregel: bruk namespaces for å skille team eller miljøer, men vurder separate clustere for sterkt isolerte produksjonsmiljøer med strenge sikkerhetskrav.

Automatisk skalering — HPA og VPA

En av de største fordelene med Kubernetes er automatisk skalering. Horizontal Pod Autoscaler (HPA) overvåker CPU-bruk (eller egendefinerte metrikker) og øker eller reduserer antall Pods automatisk. Du konfigurerer minimum og maksimum antall Pods, og Kubernetes gjør resten.

Vertical Pod Autoscaler (VPA) justerer ressursforespørsler (CPU og RAM) per Pod basert på faktisk bruk — nyttig for å unngå over- eller underallokering. Cluster Autoscaler skalerer antall worker nodes i clusteret, f.eks. ved å bestille nye VM-instanser fra AWS eller GCP når det er lite kapasitet.

For å komme i gang: installer kubectl og minikube for lokal utvikling, eller bruk managed k8s-tjenester som Amazon EKS, Google GKE eller Azure AKS i produksjon. Managed tjenester tar seg av control plane, oppgradering og backing — og er i praksis obligatorisk for de fleste norske bedrifter uten dedikert plattformteam.

Kom i gang med Kubernetes — praktiske neste steg

For nybegynnere anbefaler vi følgende læringsreise: Start med Docker og lær å lage og kjøre container-images. Installer minikube og kubectl lokalt, og prøv å deploye en enkel webserver. Utforsk kubectl get, kubectl describe og kubectl logs — disse tre kommandoene løser 80 % av feilsøkingsbehovet ditt.

Les den offisielle Kubernetes-dokumentasjonen på kubernetes.io — den er utmerket. Vurder sertifiseringen Certified Kubernetes Administrator (CKA) eller Certified Kubernetes Application Developer (CKAD) for å sementere kunnskapen. I Norge er det høy etterspørsel etter k8s-kompetanse, og sertifisering gir godt lønnsgrunnlag i markedet.

"Kubernetes er ikke bare et verktøy — det er en ny måte å tenke på drift av programvare. Infrastruktur som kode, selvhelende systemer og uendelig skalerbarhet er standarden nå."

— Platform Engineering-leder, norsk teknologibedrift
Annonse

Ofte stilte spørsmål

Hva handler «Kubernetes for nybegynnere — de viktigste konseptene forklart» om?

Lær Kubernetes fra bunnen: pods, deployments, services, namespaces og ingress forklart på norsk for utviklere og DevOps-ingeniører.

Hva er Kubernetes og hvorfor trenger du det?

Kubernetes (forkortet k8s) er et åpen kildekode-system for automatisk utrulling, skalering og administrasjon av containeriserte applikasjoner. Det ble opprinnelig utviklet av Google basert på erfaringer fra deres interne system Borg, og er i dag et prosjekt under Cloud Native Computing Foundation (CNCF).

Hva bør du vite om kubernetes-arkitekturen — control plane og worker nodes?

Et Kubernetes-cluster består av to typer noder: control plane (tidligere kalt master) og worker nodes. Control plane er hjernen i clusteret og inneholder følgende komponenter:

Hva bør du vite om pods, Deployments og ReplicaSets — de viktigste objektene?

En Pod er den minste deploybare enheten i Kubernetes. En Pod inneholder én eller flere containere som deler nettverk og lagring. I praksis har du som regel én container per Pod. Pods er flyktige — de starter og stopper kontinuerlig, og du styrer dem nesten aldri direkte.

Hva bør du vite om services — slik eksponerer du applikasjoner?

Pods får tilfeldige IP-adresser som endrer seg når Pods starter på nytt. Du kan ikke hardkode disse adressene. En Service er Kubernetes sin løsning: en stabil nettverksendepunkt som sender trafikk videre til de riktige Pods, uavhengig av hvilke IP-adresser Pods har for øyeblikket.

Hva bør du vite om configMaps, Secrets og namespaces?

Hardkoding av konfigurasjon og hemmeligheter i container-images er en dårlig praksis. Kubernetes tilbyr ConfigMaps for ikke-sensitiv konfigurasjon (f.eks. database-URL, feature flags) og Secrets for sensitiv informasjon (passord, API-nøkler, TLS-sertifikater). Begge kan monteres som miljøvariabler eller som filer inne i Pods.

Norsk Næring
Skrevet avNorsk NæringRedaksjon

Norsk Næring er en del av redaksjonen i Norsk Næring og dekker teknologi & innovasjon. Redaksjonen kvalitetssikrer alt innhold mot oppdaterte og pålitelige kilder.

Redaksjonell merknad: Dette innholdet er utarbeidet av Norsk Næring med hjelp av kunstig intelligens og kvalitetssikret av redaksjonen. Informasjonen er ment som generell veiledning og erstatter ikke profesjonell rådgivning. Feil eller unøyaktigheter? Kontakt oss på help@norsknæring.no.