Skip to content

Databases on Kubernetes Overview

Last Updated: September 11, 2026

"Should you run databases on Kubernetes?" is no longer a yes/no question. The real question is which database, operated by which operator, on top of which storage. This section covers that decision framework — and backs it with measured data rather than spec sheets.

What's in this section

DocumentWhat it covers
ClickHouse on EKS Measured BenchmarkA single-node ClickHouse on EKS loaded with 100 million log rows — measured ingest throughput, compression ratios, query latency, and the effect of a skip index

Managed vs self-hosted on Kubernetes

CriterionManaged (RDS/Aurora/ElastiCache) winsK8s self-hosted wins
Operations staffingNo dedicated DBA/platform teamA platform team owns the lifecycle
Engine availabilityPostgreSQL/MySQL/Redis with mature managed offeringsRequired regions/extensions/versions that available managed services cannot satisfy; also compare ClickHouse Cloud
Cost structureService price plus operations savingsInfrastructure, HA, backup, upgrades and staffing together
Deployment densityFew tenantsDozens of per-tenant databases stamped out via GitOps
Control requirementsCheck offered regions, encryption and audit capabilitiesOwn both the additional control and operational responsibility

The key question is who owns database lifecycle and recovery responsibilities. A validated operator can automate parts of that work, but installation alone does not establish HA/backups. Verify supported engine/Kubernetes combinations and recovery features. A team using raw StatefulSets must implement the corresponding automation and operational responsibilities itself.

The operator landscape (2026)

DatabaseLeading operatorsMaturity notes
PostgreSQLCloudNativePG, Crunchy PGO, ZalandoCompare supported PostgreSQL/Kubernetes versions and recovery behavior
MySQLPercona Operator, Vitess (sharding), MySQL Operator (Oracle)Vitess is a sharding platform; compare Percona/Oracle engine and feature support
Redis/ValkeyOT-CONTAINER-KIT redis-operator and alternatives; verify engine supportFor cache use, always compare against ElastiCache pricing first
ClickHouseAltinity clickhouse-operatorApache-2.0 database with a mature community operator; the managed alternative is ClickHouse Cloud
MongoDBMongoDB Controllers for Kubernetes, PerconaLegacy Community Operator is deprecated; use the current repository/migration guide
KafkaStrimziStreaming lives in the Data Pipeline section

Four operational pillars for databases on K8s

  1. Storage — the volume type is your performance budget. As the EBS gp2 vs gp3 benchmark shows, identical capacities can differ by 10x in IOPS. Databases start at gp3, with provisioned IOPS on the table.
  2. Topology — spread replicas across AZs with topologySpreadConstraints, and price in cross-AZ transfer cost and replication lag while you're at it.
  3. Resource isolation — when Guaranteed QoS is desired, every container needs equal CPU/memory requests and limits. It does not eliminate OOM, CPU throttling or node failures. Size CPU limits, caches, background work and query-memory headroom for the measured workload.
  4. Backups you have actually restored — enabling the operator's backup (e.g. CloudNativePG's supported Barman Cloud plugin to S3) is table stakes; scheduled restore rehearsals are what make it real.

References