User Tools

Site Tools


teknik:kubernetes

Kubernetes (K8s) er en open-source platform, der automatiserer deployment, scaling og drift af containeriserede applikationer. I et selfhostet IT-miljø (f.eks. on-premises eller i en privat cloud) tilbyder Kubernetes en række nøglefunktionaliteter, der gør det muligt at håndtere komplekse applikationer effektivt og skalerbart. Her er en oversigt over de vigtigste funktioner og deres relevans i et selfhostet miljø:

1. Container Orchestration Formål: Automatiser styringen af container-livscyklusser (opstart, stop, genstart, skalering). Funktionaliteter:

Pods: Den mindste enhed i Kubernetes, der kører en eller flere containere (f.eks. Docker). Pods deler netværk og lagring, hvilket gør dem ideelle til tæt integrerede applikationer. Deployments: Styrer opdateringer af applikationer ved at rulle ændringer ud gradvist (rolling updates) og rulle tilbage, hvis noget går galt. StatefulSets: Understøtter stateful applikationer (f.eks. databaser) ved at bevare identiteten og lagringen for hver pod. DaemonSets: Sikrer, at en pod kører på alle (eller udvalgte) noder i clusteret – nyttigt til systemopgaver som log-indsamling (f.eks. Fluentd) eller overvågning (f.eks. Prometheus Node Exporter). Selfhostet fordel:

Gør det muligt at køre og skalere applikationer konsistent på eget hardware uden afhængighed af eksterne tjenester.

2. Skalering Formål: Tilpasse ressourceforbruget dynamisk baseret på belastning. Funktionaliteter:

Horizontal Pod Autoscaler (HPA): Skalerer antallet af pods automatisk baseret på CPU/memory-forbrug eller custom metrikker (f.eks. requests per sekund). Vertical Pod Autoscaler (VPA): Justerer ressourceanmodninger (CPU/memory) for pods dynamisk. Cluster Autoscaler: Tilføjer eller fjerner noder i clusteret automatisk, når ressourcerne er utilstrækkelige eller overflødige. Selfhostet fordel:

Optimerer udnyttelsen af eget hardware og reducerer manuel indgriben.

3. Netværk Formål: Sikre kommunikation mellem pods, tjenester og eksterne systemer. Funktionaliteter:

Services: Udstiller applikationer internt (ClusterIP) eller eksternt (NodePort, LoadBalancer, Ingress).

Ingress: Styrer ekstern trafik til tjenester via regler (f.eks. baseret på hostnavne eller stier).

Network Policies: Definerer, hvilke pods der må kommunikere med hinanden (firewall-lignende regler). Service Mesh (f.eks. Istio, Linkerd): Avanceret trafikstyring, load balancing, og observability (kræver ekstra opsætning). Selfhostet fordel:

Gør det muligt at oprette avancerede netværksarkitekturer uden afhængighed af cloud-providers netværkstjenester.

4. Lagring Formål: Persistent lagring til stateful applikationer. Funktionaliteter:

Persistent Volumes (PV): Lagringsressourcer i clusteret (f.eks. NFS, iSCSI, lokal disk). Persistent Volume Claims (PVC): Anmodninger om lagring fra applikationer, der binder til tilgængelige PV’er. StorageClasses: Definerer typer af lagring (f.eks. SSD, HDD) og provisionering (dynamisk eller statisk). CSI (Container Storage Interface): Standardiseret grænseflade til integration med eksterne lagringsløsninger (f.eks. Ceph, GlusterFS). Selfhostet fordel:

Understøtter integration med lokale lagringsløsninger (f.eks. NFS-servere eller SAN).

5. Konfiguration og Secrets Formål: Centraliseret håndtering af konfigurationer og følsomme data. Funktionaliteter:

ConfigMaps: Gemmer konfigurationsdata (f.eks. miljøvariabler, konfigurationsfiler) som key-value par. Secrets: Gemmer følsomme data (f.eks. adgangskoder, API-nøgler) krypteret (base64-kodet som standard, men kan integreres med eksterne vaults som HashiCorp Vault). Selfhostet fordel:

Sikrer, at konfigurationer og secrets er tilgængelige for applikationer uden at blive hardcoded.

6. Overvågning og Logging Formål: Indsamling af metrikker, logs og events for fejlfinding og performanceanalyse. Funktionaliteter:

Metrics Server: Indsamler ressourceforbrug (CPU, memory) for pods og noder. Prometheus + Grafana: Populær stack til overvågning og visualisering af metrikker. EFK Stack (Elasticsearch, Fluentd, Kibana): Centraliseret log-indsamling og analyse. Events: Kubernetes genererer events for vigtige hændelser (f.eks. pod-fejl, skalering). Selfhostet fordel:

Giver fuld kontrol over overvågningsdata og integration med eksisterende værktøjer.

7. Sikkerhed Formål: Beskytte clusteret og applikationer mod trusler. Funktionaliteter:

RBAC (Role-Based Access Control): Definerer roller og rettigheder for brugere og tjenester. Pod Security Policies (PSP) / OPA Gatekeeper: Håndhæver sikkerhedspolitikker for pods (f.eks. kørsel som non-root, read-only filesystems). Network Policies: Begrænser kommunikation mellem pods. TLS og mTLS: Kryptering af trafik mellem pods og tjenester (f.eks. via cert-manager til automatisk udstedelse af certifikater). Selfhostet fordel:

Gør det muligt at implementere strenge sikkerhedspolitikker i eget miljø.

8. Selvheling (Self-Healing) Formål: Automatisk genopretning af fejlende komponenter. Funktionaliteter:

Liveness Probes: Genstarter pods, hvis applikationen ikke responderer. Readiness Probes: Sikrer, at trafik kun sendes til pods, der er klar til at modtage requests. Restart Policies: Automatisk genstart af containere ved fejl. Selfhostet fordel:

Reducerer downtime og manuel indgriben.

9. Multi-Cluster og Federation Formål: Styring af flere Kubernetes-clustere som en enhed. Funktionaliteter:

Kubernetes Federation: Synkroniserer ressourcer (f.eks. Deployments, Services) på tværs af clustere. Cluster API: Standardiseret måde at oprette og styre clustere på (f.eks. via Kubeadm eller værktøjer som Rancher). Selfhostet fordel:

Gør det muligt at skalere infrastrukturen geografisk eller funktionelt (f.eks. udvikling vs. produktion).

10. Udvidelsesmuligheder (Extensibility) Formål: Tilpas Kubernetes til specifikke behov. Funktionaliteter:

Custom Resource Definitions (CRDs): Udvid Kubernetes API’et med egne ressourcer (f.eks. databaser, backup-jobs). Operators: Automatiserer drift af komplekse applikationer (f.eks. databaser som PostgreSQL eller MongoDB) ved at bruge CRDs og controllers. Admission Controllers: Tilføjer logik til validering eller modification af API-anmodninger (f.eks. for at håndhæve politikker). Selfhostet fordel:

Gør det muligt at integrere Kubernetes med eksisterende værktøjer og processer.

Typisk Arkitektur i et Selfhostet Miljø Her er et eksempel på, hvordan Kubernetes kan integreres i et selfhostet miljø:

Hardware:

Fysiske servere eller VM’er (f.eks. via Proxmox, VMware, eller KVM). Noder med Linux (f.eks. Ubuntu, RHEL, SUSE).

Kubernetes Cluster:

Control Plane: Kører på dedikerede noder (etcd, API Server, Scheduler, Controller Manager). Worker Nodes: Kører applikations-pods (kubelet, kube-proxy, container runtime som containerd eller CRI-O).

Netværk:

CNI-plugin (f.eks. Calico, Flannel, Cilium) til pod-netværk. Load balancer (f.eks. MetalLB) til ekstern trafik.

Lagring:

Lokal lagring (f.eks. hostPath) eller delt lagring (f.eks. NFS, Ceph).

Overvågning:

Prometheus + Grafana for metrikker. Loki + Promtail for logs.

Sikkerhed:

RBAC og Network Policies. Cert-manager for TLS-certifikater.

CI/CD:

Integration med værktøjer som ArgoCD, Jenkins, eller GitLab CI for automatiseret deployment.

teknik/kubernetes.txt · Last modified: by smarken

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

Brug af AI : Al tekst kán være uddrag af AI genereret tekst og kan være fejlbehæftet.
AI kan lave fejl og det kan mennesker også, men al tekst er gennemgået af et menneske for fejl, og personlig bias kan være tilføjet.