Clusters multiply quietly. One per team, one per environment, one for that big customer, one for the data science group. Each brings its own upgrades, monitoring, security patches and idle capacity. Eventually someone asks whether all of this could share fewer clusters, and the answer depends almost entirely on who the tenants are and how much they trust each other.
Two kinds of tenancy
The Kubernetes documentation distinguishes two broad use cases1:
- Multiple teams in one organisation share a cluster. There is some trust between them, members often have direct access through tools or GitOps, and workloads frequently talk to each other.
- Multiple customers, where a vendor runs workload instances per customer. Customers never touch the cluster, cost matters a great deal, and isolation must be strong.

The documentation also cautions that "hard" and "soft" multi-tenancy are better seen as a spectrum than two categories. Hard multi-tenancy usually describes tenants that don't trust each other, which demands particular attention to data-plane isolation1.
The building blocks
Control plane isolation stops tenants seeing or changing each other's API resources. Namespaces scope names and many policies; RBAC enforces least privilege, which the docs call the most important type of control-plane isolation, because a tenant who can modify another's resources can disable every other protection12. Resource quotas cap what each namespace can consume5.
Data plane isolation protects workloads at runtime: network policies to restrict traffic3, storage isolation, sandboxed containers using virtual machines or userspace kernels for untrusted code, and node isolation that dedicates nodes to a tenant1.
Fairness matters too. API Priority and Fairness prevents one tenant's controllers from overwhelming the API server4.
Containers share a kernel. If tenants may run code you don't trust, namespaces alone are not a security boundary; plan for sandboxing, dedicated nodes or separate clusters.
The three models compared
| Namespace per tenant | Virtual control plane per tenant | Cluster per tenant | |
|---|---|---|---|
| Isolation | Shared API server; depends on careful policy | Separate API views, including non-namespaced resources | Strongest; nothing shared but the provider |
| Cost | Negligible overhead | Somewhat higher | Highest, especially on-premises |
| Limitations | Non-namespaced resources such as CRDs, storage classes and webhooks are shared | Cross-tenant sharing is harder | Operational overhead per cluster |
| Best for | Internal teams with some trust | Tenants needing their own CRDs or admin rights | Untrusted tenants, regulated data, residency |
This follows the documentation's own description: namespace isolation is well supported with negligible resource cost but can be difficult to configure and doesn't cover non-namespaced resources, while control plane virtualisation isolates those at the cost of somewhat higher resource use1.
How I decide
- Who writes code that runs? If tenants can run arbitrary code, assume it may be hostile, and favour sandboxing, dedicated nodes or clusters.
- Do tenants need cluster-level resources? Teams that ship their own operators and CRDs push towards virtual control planes.
- What do regulators and contracts require? Data residency and customer contracts may require dedicated infrastructure in a region, as in UAE health data localisation.
- What can the platform team operate? Fifty clusters run badly are riskier than five run well.
- Mix models. Shared clusters for most tenants, dedicated ones for the few that need them, mirroring the hybrid pattern in multi-tenant SaaS on MongoDB.
Practical rules for shared clusters
- A namespace per workload, with names unique across the whole fleet, which the docs recommend so you can move between shared and dedicated clusters later1.
- Default-deny networking, with explicit allows.
- Quotas and limit ranges on every tenant namespace.
- Guardrails as policy, such as the CEL policies in Kubernetes admission policies, so tenants can't weaken their own isolation.
- Cost allocation by tenant, using labels and the approaches in Kubernetes FinOps.
- Separate GPU pools where AI workloads from different tenants compete, with the scheduling controls in gang scheduling.
How I can help
I design Kubernetes platforms for internal teams and SaaS products, choosing the tenancy model that fits the trust, cost and compliance picture. As a fractional CTO I can own the platform roadmap. Or analyse your challenge and bring the result to a call.
- 1Multi-tenancyKubernetes documentation
- 2Using RBAC authorizationKubernetes documentation
- 3Network policiesKubernetes documentation
- 4API Priority and FairnessKubernetes documentation
- 5Resource quotasKubernetes documentation