Hoppa till huvudinnehåll
JobCannon
Alla kompetenser

Kubernetes & Docker

Containerize apps and orchestrate them at scale

⬢ NIVÅ 1Tekniskt
+$30k-
Lönepåverkan
6 månader
Tid att lära sig
Svår
Svårighetsgrad
12
Karriärer
I korthet

Kubernetes and Docker are the industry standard for containerized applications: Docker packages code into containers, Kubernetes orchestrates them across clusters. Career path: Docker Practitioner (basic containerization, $100-130k) → Kubernetes Operator (deployments, helm, $130-170k) → Platform Engineer (cluster ops, multi-cloud, $170-230k) over 5-8 months. Ecosystem: kubectl, Helm, kustomize, ArgoCD, Istio, persistent volumes, RBAC, ingress routing.

Vad är Kubernetes & Docker

Docker packages applications into containers; Kubernetes orchestrates containers in production. Together, they're the foundation of modern cloud infrastructure. K8s skills command $120k-$200k+ salaries. - Industry standard (80%+ of companies use containers)

🔧 VERKTYG & EKOSYSTEM
DockerKuberneteskubectlHelmKustomizeDocker Composek3sminikubeLensArgoCDIstio

💰 Lön per region

OmrådeNybörjareMidErfaren
USA$110k$160k$220k
UK£65k£95k£140k
EU€70k€100k€145k
CANADAC$120kC$170kC$230k

❓ Vanliga frågor

Docker vs containerd vs Podman, which container runtime should I use?
Docker is the industry standard, teaches the concepts well, and works everywhere (desktop + server + cloud). Docker wraps containerd under the hood. Containerd is lighter (no daemon) and used by Kubernetes natively. Podman is a drop-in Docker replacement with no daemon and better rootless support, best for security-conscious teams. For learning: Docker. For production: depends on ops preference, but K8s abstracts the runtime away, so the choice mostly matters for tooling/ease-of-use.
When is Kubernetes the right choice versus Docker Compose or serverless?
Kubernetes is overkill for single-machine workloads, use Docker Compose locally or Swarm for basic multi-host setups. But K8s wins when you need: self-healing, automated scaling, rolling updates, multi-cloud portability, service mesh, or managing 100+ containers. If you have sustained high load, high availability requirements, or microservices: K8s. If you have simple batch jobs or bursty traffic: Lambda/serverless. Docker Compose for local dev and single-host staging only.
How do Kubernetes networking and CNI plugins work?
Each pod gets its own IP on a flat network overlay. The CNI (Container Network Interface) plugin handles the networking: Calico enforces network policies (like firewall rules), Flannel is lightweight (vxlan/host-gw), Cilium adds eBPF magic for observability + policies. By default, every pod can talk to every other pod; you restrict with NetworkPolicy (layer 3/4 rules). For multi-cluster networking: service meshes (Istio, Linkerd) handle traffic, retries, circuit breaking. Most teams use Calico or Cilium; the choice affects observability and policy enforcement depth.
Pod scheduling, node affinity, taints, and tolerations, when do I use each?
NodeSelector: simple key=value labels, fast to set up. Affinity: complex logic (AND/OR, preferred/required), better for spreading or collocation. Taints: nodes reject pods unless the pod has a matching toleration (useful for dedicating nodes to workloads like GPUs or spot instances). Most common: NodeAffinity for "run on nodes with SSD" and Taints+Tolerations for "this workload only runs on expensive GPU nodes". Defaults work for 80% of cases; customize when you hit resource constraints.
How do I manage secrets securely in Kubernetes?
Never hardcode secrets in configs or images. Kubernetes Secrets store sensitive data (base64 encoded, NOT encrypted by default). Always encrypt secrets at rest in etcd (--encryption-provider flag). For production: use an external secret manager (HashiCorp Vault, AWS Secrets Manager, Google Secret Manager) with a controller syncing to K8s Secrets. Workloads read from Secret objects mounted as volumes or env vars. Ensure RBAC restricts who can read secrets; prefer admission webhooks to prevent plaintext secret leaks in logs.
Persistent volumes, storage classes, and claims, how does K8s storage work?
PersistentVolume (PV): the actual storage (allocated by ops). PersistentVolumeClaim (PVC): a request by an app ("I need 10GB"). StorageClass: a provisioner that creates PVs automatically (e.g., EBS for AWS, GCP persistent disks). Workflow: app claims storage via PVC → K8s matches to PV or creates one via StorageClass → volume is mounted into the pod. Lifecycle: volumes survive pod deletion (PVC lifetime), but deleting PVC can delete the storage (depends on reclaim policy). For databases: use StatefulSets + persistent volumes. For stateless apps: don't use PVs.
How do I debug failing pods and containers in Kubernetes?
kubectl logs <pod>: see application output. kubectl describe pod <pod>: see events (why didn't it start?). kubectl exec <pod> -- /bin/bash: get a shell inside. kubectl port-forward <pod> 8080:8080: forward traffic to debug. Check Resource limits (OOMKilled?), Readiness probes (is the app actually ready?), and Node status (kubectl get nodes). For network issues: try a debug pod (kubectl run -i --tty --image=busybox debug -- sh) to test DNS/connectivity. Always check events first, they explain why pods are pending or crashing.

Osäker på om den här kompetensen passar dig?

Gör Career Match — vi föreslår rätt spår för dig.

Hitta mina bäst passande kompetenser →

Hitta din ideala karriärväg

Kompetensbaserad matchning mot 2 521 karriärer. Gratis, ~3 minuter.

Gör Karriärmatchningen — gratis →