Pamatujete, jak jsem psal, že Kubernetes je „kanón na vrabce” pro 3 služby? Máme teď 12 služeb a Kubernetes je přesně to, co potřebujeme. Po třech měsících provozu v produkci: je to mocný nástroj, který vás může zranit.
Proč Kubernetes a ne Docker Swarm¶
Swarm je jednodušší. Ale komunita jde za Kubernetes — Google, Red Hat, CoreOS, Microsoft. Ekosystém (Helm charts, operators, monitoring) je řádově větší. K8s umí rolling updates s health checks, ConfigMaps, Secrets, RBAC, Ingress.
Cluster setup — kubeadm na bare metal¶
Klient chce data v ČR na vlastním hardwaru. Tři master nody (HA etcd), pět worker nodů, RHEL 7. Kubeadm, Calico networking, MetalLB. Setup dva týdny — křivka učení je strmá.
Persistent storage — nejtěžší oříšek¶
Stateless služby na k8s jsou pohoda. Stateful? Noční můra. Zkoušeli NFS (nestabilní), Ceph (komplex), nakonec GlusterFS. Poučení: databáze mimo Kubernetes. PostgreSQL na dedikovaném serveru, služby se připojují přes ExternalName service.
Deployment workflow¶
Jenkins → Docker image → Harbor registry → Helm upgrade → rolling update s readiness/liveness probes = zero-downtime deployment.
replicaCount: 3
image:
repository: registry.core.internal/myapp
tag: "1.23.4"
resources:
requests: { memory: "512Mi", cpu: "250m" }
limits: { memory: "1Gi", cpu: "500m" }
readinessProbe:
httpGet: { path: /health, port: 8080 }
initialDelaySeconds: 30
Monitoring — Prometheus + Grafana¶
Prometheus scrapes metriky, Grafana vizualizuje, Alertmanager do Slacku. Kube-state-metrics, cAdvisor, node-exporter — tři vrstvy monitoringu.
Co nás pokousalo¶
Resource limits — pod sežral celý node bez limitů. Pod scheduling — dvě repliky na stejném nodu = false HA. etcd backup — bez něj nemáte cluster. YAML hell — stovky řádků pro 12 služeb.
Kubernetes není pro každého¶
Pro malou firmu s 3 službami — Docker Compose nebo managed PaaS. Pro 10+ microservices — Kubernetes ušetří operační bol. Jen počítejte s investicí na začátku.