Kubernetes i praktiken: orkestrera containrar rätt
Country Manager, Sweden
AI, DevOps, Security, and Cloud Solutioning. 12+ years leading enterprise cloud transformation across Scandinavia

Kubernetes i praktiken: orkestrera containrar rätt
Kubernetes (K8s) är den dominerande plattformen för containerorkestrering — men att installera ett kluster är inte samma sak som att driva det i produktion. Organisationer som lyckas med K8s kombinerar solid arkitekturförståelse med operationell disciplin: RBAC, nätverkspolicyer, resurslimiter, GitOps-baserad driftsättning och kontinuerlig kostnadsoptimering. Den här genomgången täcker vad Opsios driftteam faktiskt ser fungera i svenska produktionsmiljöer — och var de vanligaste felen uppstår.
Viktiga slutsatser
- Kubernetes är branschstandard för containerorkestrering — men standardinstallation räcker sällan i produktion
- En korrekt uppsatt control plane med RBAC, nätverkspolicyer och Pod Security Standards är grunden för säker drift
- FinOps-disciplin krävs från dag ett — utan resurslimiter och autoscaling skenar molnkostnaden
- Managed Kubernetes (EKS, AKS, GKE) minskar operationellt ansvar men kräver fortfarande djup plattformskunskap
- GitOps med Argo CD eller Flux ger spårbar, repeterbar driftsättning som uppfyller NIS2-krav på incidentspårning
Vad Kubernetes faktiskt gör — och inte gör
Kubernetes automatiserar driftsättning, skalning och hantering av containeriserade applikationer över ett kluster av noder. Plattformen bygger på en deklarativ modell: du beskriver önskat tillstånd i YAML-manifest, och K8s kontrollslinga ser till att verkligheten matchar specifikationen.
Det Google släppte som öppen källkod 2014 — baserat på erfarenheter från det interna orkestreringsverktyget Borg — förvaltas sedan 2015 av Cloud Native Computing Foundation (CNCF). Enligt CNCFs årliga undersökning har Kubernetes-adoption i produktionsmiljöer stadigt ökat och plattformen betraktas som mogen infrastruktur snarare än framkantsteknologi.
Vad K8s hanterar åt dig
- Självläkning: crashade containrar startas om, ohälsosamma noder dräneras
- Horisontell autoscaling: antalet pod-repliker justeras efter CPU/minne eller anpassade mätvärden
- Service discovery och lastbalansering: intern DNS och kube-proxy fördelar trafik
- Utrullning och rollback: rolling updates med automatisk rollback vid fel
- Konfiguration och hemligheter: ConfigMaps och Secrets separerar kod från miljödata
Vad K8s inte löser automatiskt
Kubernetes ger ingen magisk säkerhet, kostnadsoptimering eller observerbarhet. De aspekterna kräver medveten design och dedikerade verktyg. Det här missförståndet ser vi ofta hos organisationer som nyligen migrerat — klustret körs, men utan nätverkspolicyer, utan resurslimiter, utan centraliserad loggning. Resultatet: onödigt hög kostnad och en attack-yta som ingen övervakar.
Vill ni ha expertstöd med kubernetes i praktiken: orkestrera containrar rätt?
Våra molnarkitekter hjälper er med kubernetes i praktiken: orkestrera containrar rätt — från strategi till implementation. Boka ett kostnadsfritt 30-minuters rådgivningssamtal utan förpliktelse.
Kubernetes-arkitektur: det du behöver förstå
Control plane
Control plane är klustrets hjärna och består av:
| Komponent | Funktion |
|---|---|
| kube-apiserver | Enda ingången till klustret — alla kubectl-kommandon, CI/CD-verktyg och interna komponenter pratar med API-servern |
| etcd | Distribuerad nyckel-värde-databas som lagrar hela klustrets tillstånd. Backupstrategi för etcd är kritisk. |
| kube-scheduler | Placerar pods på noder baserat på resurskrav, affinitetsregler och taints/tolerations |
| kube-controller-manager | Kör kontrollslingor: ReplicaSet-controller, Node-controller, Endpoint-controller m.fl. |
| cloud-controller-manager | Integrerar med molnleverantörens API:er (load balancers, lagring, noder) |
I managed Kubernetes (EKS, AKS, GKE) driftar molnleverantören control plane åt dig. Det innebär att du slipper patcha etcd och hantera apiserver-certifikat — men du behöver fortfarande förstå hur schedulern placerar arbetsbelastningar och hur RBAC konfigureras.
Worker nodes
Varje worker node kör tre centrala processer:
- kubelet — agenten som tar emot pod-specifikationer och säkerställer att containrar körs
- kube-proxy — hanterar nätverksregler för Service-objekt
- Container runtime — containerd är standard sedan K8s 1.24 (Dockershim borttagen)
Pods, Deployments och Services
En pod är den minsta driftsättningsbara enheten — en eller flera containrar som delar nätverks-namespace och lagring. I praktiken kör du sällan nakna pods. Istället använder du:
- Deployment för stateless-applikationer med rolling updates
- StatefulSet för databaser och andra stateful-tjänster som kräver stabil nätverksidentitet
- DaemonSet för agenter som ska köras på varje nod (loggsamlare, nodövervakare)
- Service (ClusterIP, NodePort, LoadBalancer) för att exponera applikationer
- Ingress (eller Gateway API sedan K8s 1.29+) för HTTP/HTTPS-routing
Driftsättning med GitOps: vad som fungerar i produktion
Den manuella kubectl apply-metoden fungerar för experiment. I produktion ser vi GitOps som den överlägset mest robusta modellen — och det är vad vi rekommenderar alla Opsio-kunder.
Så fungerar GitOps i praktiken
1. All Kubernetes-konfiguration (manifester, Helm charts, Kustomize-overlays) versionshanteras i Git
2. En GitOps-operator (Argo CD eller Flux) övervakar repot
3. Vid push till main-branchen synkar operatorn automatiskt klustrets tillstånd
4. Drift detekteras och korrigeras — klustret konvergerar alltid mot det som finns i Git
Fördelarna är konkreta: full revisionslogg (vem ändrade vad, när), enkel rollback (git revert), och möjlighet att återskapa hela miljön från ett repo. Det sistnämnda är avgörande vid incidenthantering enligt NIS2-direktivets krav på spårbarhet.
CI/CD-pipeline för Kubernetes
En typisk pipeline vi sätter upp:
```
Kod-push → Bygg container-image → Sårbarhetsskanning (Trivy/Grype)
→ Push till container-registry → Uppdatera manifest i GitOps-repo
→ Argo CD synkar till kluster → Smoke-test → Produktionstrafik
```
Image-scanning i pipeline-steget är inte valfritt. Vi ser regelbundet CVE:er med CVSS 9+ i basimages som inte uppdaterats på några månader. Automatiserad scanning stoppar det innan det når produktion.
Säkerhet: det Kubernetes inte gör åt dig
Kubernetes default-konfiguration är öppen. Utan aktiva åtgärder kan vilken pod som helst prata med vilken annan pod, och containrar kan köras som root. Det är oacceptabelt i produktion — särskilt under NIS2-direktivet som ställer explicita krav på riskbaserade säkerhetsåtgärder.
Säkerhetslager vi implementerar hos alla kunder
1. RBAC (Role-Based Access Control)
Principen om minsta privilegium. Varje team, CI/CD-pipeline och serviceaccount får exakt de rättigheter de behöver — inte mer. ClusterRoleBindings ska vara ytterst sällsynta.
2. Nätverkspolicyer
Kubernetes NetworkPolicy (eller Cilium Network Policy för mer avancerade behov) fungerar som brandväggsregler mellan pods. Default-deny som utgångspunkt, sedan explicit tillåtna flöden.
3. Pod Security Standards
Sedan K8s 1.25 finns tre inbyggda profiler: Privileged, Baseline och Restricted. Vi kör Restricted som standard och gör undantag enbart där det krävs (t.ex. för monitoring-agenter som behöver hostNetwork).
4. Secrets-hantering
Kubernetes Secrets är base64-kodade, inte krypterade. Använd external-secrets-operator med AWS Secrets Manager, Azure Key Vault eller HashiCorp Vault. Kryptera etcd at rest.
5. Image-policy
Tillåt enbart images från era egna registries. Verktyg som Kyverno eller OPA Gatekeeper kan enforca policy direkt i admission-steget.
| Säkerhetsåtgärd | Verktyg | Prioritet |
|---|---|---|
| RBAC | Inbyggt i K8s | Dag 1 |
| Nätverkspolicyer | Calico / Cilium | Dag 1 |
| Pod Security Standards | Inbyggt (1.25+) | Dag 1 |
| Image-scanning | Trivy, Grype | CI/CD-pipeline |
| Secrets-kryptering | External Secrets + Vault/KMS | Vecka 1 |
| Admission-policy | Kyverno / OPA Gatekeeper | Vecka 2 |
| Runtime-säkerhet | Falco | Månad 1 |
Kostnad och FinOps: där de flesta Kubernetes-projekt spårar ur
Flexeras State of the Cloud har konsekvent visat att kostnadshantering är den främsta utmaningen för molnanvändande organisationer. Kubernetes gör problemet mer komplext — kostnaden sitter inte i enstaka VM:ar utan är utspridd över noder, persistent storage, load balancers och inter-AZ-trafik.
Vanliga kostnadsfällor
Överprovisioning av resurser. Utvecklare sätter generösa CPU/minne-requests "för säkerhets skull". Resultatet: noder som är 20 % belagda men debiteras till 100 %. Vi ser det i nästan varje ny K8s-miljö vi tar över.
Avsaknad av autoscaling. Kluster med fast antal noder, dimensionerade för peak-trafik, betalar för kapacitet de inte behöver 80 % av tiden. Horizontal Pod Autoscaler (HPA) och Cluster Autoscaler (eller Karpenter på EKS) är grundläggande verktyg.
Inter-AZ-trafik. I eu-north-1 (Stockholm) kostar trafik mellan tillgänglighetszoner per GB. Topology-aware routing (sedan K8s 1.27 stabil) minskar kostnaden genom att hålla trafiken inom samma zon där det är möjligt.
Persistent Volume-överprovisioning. EBS-volymer (gp3) eller Azure Managed Disks som allokeras men aldrig fylls. Övervaka med Prometheus-mätvärden och skala ner.
Praktisk FinOps-strategi
1. Sätt resurslimiter från dag ett — requests och limits på varje pod, inga undantag
2. Inför namespace-kvotor — ResourceQuota per team/miljö förhindrar att ett team svälter andra
3. Kör Kubecost eller OpenCost — tillskrivning av kostnad per namespace/team/label
4. Aktivera Cluster Autoscaler / Karpenter — automatisk nod-skalning
5. Granska Spot/Preemptible-noder — för fault-toleranta arbetsbelastningar kan kostnaden sjunka med 60–70 %
Managed Kubernetes vs. egen drift
| Aspekt | Managed (EKS/AKS/GKE) | Egen drift (kubeadm/Rancher) |
|---|---|---|
| Control plane-ansvar | Leverantören | Ditt team |
| Uppgradering | Delvis automatiserad | Manuell, riskfylld |
| SLA | 99,95 % (typiskt) | Vad du bygger själv |
| Kostnad control plane | ~500–700 SEK/mån | Egna VM:ar + arbetstid |
| Flexibilitet | Begränsad av leverantörens K8s-version | Full kontroll |
| Krav på plattformsteam | 1–2 SRE:er | 3–5 SRE:er minimum |
Vår rekommendation: kör managed Kubernetes om ni inte har starka skäl att inte göra det. De starka skälen är vanligtvis regulatoriska krav på full kontroll över control plane (sällsynt) eller edge-scenarier utan molnanslutning.
Observerbarhet: tre pelare i K8s-miljön
Utan observerbarhet flyger du blint. I Kubernetes kräver det en genomtänkt stack:
Mätvärden: Prometheus + Grafana är de facto-standard. Scrapa kubelet-metrics, node-exporter, kube-state-metrics. Sätt alerts på pod-restart-loopar, nod-resursbrist och control plane-latens.
Loggar: Centraliserad loggning med Fluent Bit (DaemonSet) → OpenSearch/Elasticsearch eller Grafana Loki. Strukturerad JSON-loggning i applikationerna förenklar sökning enormt.
Spårning: Distribuerad tracing med OpenTelemetry → Grafana Tempo eller Jaeger. Nödvändigt för att felsöka latens i mikrotjänstarkitekturer.
Datadog State of Cloud rapporterar konsekvent att organisationer med containerbaserade miljöer hanterar betydligt fler infrastrukturkomponenter per ingenjör — det gör observerbarhet till en grundförutsättning, inte ett nice-to-have.
Kubernetes-migrering: steg för steg
Om ni står inför en migrering till Kubernetes rekommenderar vi den här ordningen:
1. Containerisera — Dockerfiler, multi-stage builds, minimal basimage (distroless eller Alpine)
2. Kör lokalt — Validera med kind eller minikube
3. Sätt upp kluster — Managed K8s i eu-north-1 eller Sweden Central
4. Börja med en stateless-tjänst — Webblager eller API, inte databasen
5. Implementera CI/CD + GitOps — Argo CD, image-scanning i pipeline
6. Lägg till observerbarhet — Prometheus, Grafana, Fluent Bit
7. Härdning — RBAC, nätverkspolicyer, Pod Security Standards
8. Migrera fler tjänster — successivt, med traffic shifting (canary/blue-green)
9. Stateful-tjänster sist — databaser med StatefulSet och PersistentVolumeClaims
Opsios perspektiv: vad vi ser i produktion
Från vårt SOC/NOC i Karlstad och Bangalore hanterar vi Kubernetes-kluster dygnet runt. De vanligaste incidenterna vi ser:
- OOMKill-loopar — containrar som inte har minnesslimiter och äter upp nodens RAM. Lösning: korrekta requests/limits och HPA.
- Certifikat som löper ut — cert-manager löser det, men bara om den är korrekt konfigurerad med ClusterIssuer och automatisk förnyelse.
- etcd-prestandaproblem — oftast på managed-kluster med för många custom resources. Rensa oanvända CRDs och operator-installationer.
- Ingress-felkonfigurering — TLS-terminering, CORS-headers och rate limiting som inte fungerar som förväntat. Testa ingress-konfigurationen med automatiserade integrationstester.
Vi förespråkar inte Kubernetes som lösning på alla problem. För enklare applikationer kan AWS ECS/Fargate, Azure Container Apps eller till och med en välkonfigurerad VM-baserad setup vara rätt svar. Kubernetes lönar sig när ni har minst 10–15 mikrotjänster, behöver multi-cloud-portabilitet, eller kräver den flexibilitet som K8s ekosystem ger.
Vanliga frågor
Vad är skillnaden mellan Kubernetes och Docker?
Docker bygger och kör enskilda containrar. Kubernetes orkestrerar hundratals eller tusentals containrar över ett kluster — det hanterar skalning, lastbalansering, självläkning och utrullningar. Docker är motorkomponenten, Kubernetes är trafikledningssystemet.
Ska vi köra managed Kubernetes eller bygga eget kluster?
För de allra flesta organisationer är managed Kubernetes (EKS, AKS eller GKE) rätt val. Det eliminerar ansvaret för control plane-drift och ger snabbare säkerhetspatchar. Bygg eget bara om ni har ett dedikerat plattformsteam på minst 3–5 SRE:er och specifika krav på kontroll.
Hur hanterar vi Kubernetes-säkerhet enligt NIS2?
NIS2 kräver riskbaserade säkerhetsåtgärder och incidentrapportering. I Kubernetes innebär det RBAC, nätverkspolicyer, Pod Security Standards, krypterade secrets, image-scanning i CI/CD-pipelinen och centraliserad loggning med åtminstone 90 dagars retention.
Vad kostar Kubernetes i produktion?
Control plane-avgiften på managed-tjänster är försumbar (ca 500–700 SEK/månad). Den verkliga kostnaden sitter i worker nodes, lagring och nätverkstrafik. Utan resurslimiter och autoscaling ser vi typiskt 30–50 % överprovisioning hos nya Kubernetes-användare.
Hur lång tid tar det att migrera till Kubernetes?
En enskild stateless-applikation kan containeriseras och köras på K8s inom dagar. En hel applikationsportfölj med stateful-tjänster, CI/CD-integration och säkerhetshärdning tar typiskt 3–6 månader med ett erfaret team.
Om författaren

Country Manager, Sweden at Opsio
AI, DevOps, Security, and Cloud Solutioning. 12+ years leading enterprise cloud transformation across Scandinavia
Editorial standards: This article was written by a certified practitioner and peer-reviewed by our engineering team. We update content quarterly to ensure technical accuracy. Opsio maintains editorial independence — we recommend solutions based on technical merit, not commercial relationships.