// the find
k3s-io/kine
Run Kubernetes on MySQL, Postgres, sqlite, not etcd.
Kine is an etcd API shim that lets Kubernetes store its state in SQLite, Postgres, MySQL, or NATS instead of etcd. It's the storage backend behind K3s and exists primarily to make Kubernetes viable on single-node or resource-constrained environments where running etcd is overkill. Any conformant Kubernetes distribution can use it, not just K3s.
The scope is deliberately narrow — it implements only the etcd API subset that Kubernetes actually uses, which means the translation layer stays tractable. SQLite support is genuinely useful for local dev and edge deployments where you want zero external dependencies. The test matrix is solid: there are per-backend test scripts for Postgres, MySQL, NATS, SQLite, CockroachDB, and even Litestream, which signals the maintainers actually run this against real databases. The flow diagram in docs/flow.md is a rare piece of honest internal documentation that shows how watch events, compaction, and SQL polling fit together.
It only implements a subset of the etcd API, which is fine for Kubernetes but means you cannot use this as a general-purpose etcd replacement — the README says so, but people will try anyway. Watch semantics on SQL backends are simulated via polling, not push, so under high churn you will see lag and increased DB load in ways that etcd's log-structured storage simply doesn't have. The documentation beyond the flow diagram is thin: there's no production tuning guide covering compaction intervals, connection pool sizing, or how to handle Postgres schema migrations safely across Kine upgrades. MySQL support shares a generic driver layer with Postgres rather than being independently tested at the same depth, which is a latent risk.