
SaaS Infrastructure: Shared Kubernetes, Clusters or VMs?
Compare shared Kubernetes, tenant namespaces, dedicated clusters, and VMs for SaaS infrastructure. Learn how isolation, costs, and operations shape your choice.
Lire la noteNotes de terrain / Dernières nouvelles
Des notes d’ingénierie issues de l’exploitation d’infrastructures ouvertes : pannes, décisions de conception et travail upstream qui améliorent l’infrastructure ouverte.
Parcourir toutes les notes
Compare shared Kubernetes, tenant namespaces, dedicated clusters, and VMs for SaaS infrastructure. Learn how isolation, costs, and operations shape your choice.
Lire la note
Learn why backups alone don't guarantee recovery and how RTO, RPO, infrastructure dependencies, and recovery testing improve disaster readiness.
Lire la note
Compare private AI inference, managed endpoints, and public AI APIs. Learn when data control, latency, model flexibility, and cost justify a change.
Lire la noteCompare shared Kubernetes, tenant namespaces, dedicated clusters, and VMs for SaaS infrastructure. Learn how isolation, costs, and operations shape your choice.
A SaaS platform may begin with every customer using the same application and infrastructure. That keeps deployment simple and spreads operating costs across a growing customer base. But as the business expands, shared resources can become a source of performance problems, security concerns, and difficult enterprise sales conversations.
A larger customer might request separate workloads, a dedicated environment, or a specific data location. Another might need an independent upgrade schedule. Meanwhile, provisioning an entirely new stack for every customer can erode SaaS margins.
The central SaaS infrastructure decision is where tenants should share resources, where they need isolation, and what that separation will cost to operate. Shared Kubernetes, tenant namespaces, dedicated clusters, and virtual machines all have a place. None is automatically the right answer.
Multi-tenant SaaS architecture allows multiple customers to use a service while their identities, data, and access remain appropriately separated. But application isolation and infrastructure isolation are different things.
Two tenants might use the same application instance and database service, with authorization and data partitioning enforced in software. Alternatively, each tenant might have its own application deployment, network policies, and storage while sharing physical servers.
As customer requirements become more demanding, teams must decide which boundaries matter: application, container, cluster, VM, network, storage, or physical hardware. Isolation also needs to cover backups, administrative access, and operational processes, not just where pods run.

These options are not a strict security ladder. A dedicated Kubernetes cluster can run on shared VMs, while a Kubernetes application can itself run inside dedicated infrastructure. Security depends on the full configuration, not its label.
In this model, customers use common application services deployed on shared infrastructure. The application identifies tenants and ensures users, queries, background jobs, and storage access remain within the correct customer context.
Sharing improves utilization: compute, monitoring, and supporting services can serve many customers instead of being replicated for each one. Kubernetes can scale application replicas as demand changes.
The trade-off is that isolation depends heavily on application design. An authorization mistake can expose another tenant's data, and an expensive query or burst of background work can degrade performance for others. CPU limits alone will not isolate database traffic or other shared dependencies.
Choose this model when the product is largely standardized, application-level isolation is well tested, and resource usage can be measured and controlled by tenant.
A namespace-per-tenant architecture assigns separate Kubernetes resources to each customer while retaining a shared control plane. It works when customers need their own deployments or policies but do not require an independent cluster.
Controls may include namespace-scoped RBAC, ResourceQuota, LimitRange, NetworkPolicies, service accounts, and separate storage claims. Used together, they help constrain access and reduce noisy-neighbor effects.
However, a namespace is not a complete security boundary. Worker nodes and cluster-scoped components may still be shared. NetworkPolicies require a compatible network plugin; creating a policy object alone does not guarantee traffic filtering. Namespaces also do not fix weak application authorization or misconfigured shared databases.
Before adopting this model, test cross-tenant network access, resource contention, permissions, secrets handling, and backup separation. Official Kubernetes multi-tenancy guidance describes additional options such as node isolation and sandboxing for stronger workload boundaries.
Choose this model when tenants need separate application instances and controls, but a shared cluster remains acceptable under the security and operational requirements.
A cluster-per-tenant model gives each customer its own Kubernetes control plane and worker environment. This supports independent upgrades, cluster-level configuration, access policies, and maintenance windows. An incident involving one tenant's cluster is less likely to affect another through the same control plane.
It can also suit customers who need custom operators or different Kubernetes versions. But separate clusters increase the number of systems that must be patched, observed, backed up, and upgraded. Idle capacity and duplicated platform services may raise the cost per customer.
A dedicated cluster does not necessarily provide dedicated physical servers. Its VMs, networking, and storage may still rely on shared infrastructure; customers requiring physical separation need that specified independently.
Choose this model when customer-specific administration or a stronger cluster boundary justifies the extra operational cost and deployment can be automated.
Kubernetes is not the only sensible foundation for SaaS hosting infrastructure. A VM-per-tenant pattern gives each customer a separate guest operating system, making it useful for traditional applications, OS-specific dependencies, or workloads poorly suited to containers.
Compared with conventional containers sharing a host kernel, VMs introduce a hypervisor and guest-kernel boundary. Yet VM separation is not the same as physical isolation: multiple tenants' VMs can still share hosts and storage systems.
For requirements that justify dedicated compute or deeper infrastructure control, a private environment may be appropriate. OpenStack can provide API-driven compute, networking, and storage for these deployments. It can also host Kubernetes clusters on VMs, so teams need not choose between the two technologies.
Choose this model when workload compatibility, VM-level isolation, or dedicated infrastructure requirements outweigh the benefits of running everything as shared containers.
Enterprise buyers often ask questions that a simple “multi-tenant” label cannot answer: Can other customers share our compute? Who can administer our environment? Can data stay in a required region? Can upgrades occur on our schedule?
Translate each requirement into a verifiable control. Data residency concerns where data is stored or processed; it does not, by itself, mandate a separate cluster. Likewise, dedicated compute does not guarantee data isolation if two environments access an improperly configured database.
A tiered offering can therefore make sense: shared infrastructure for standard subscriptions and dedicated clusters, VMs, or private cloud for customers with demonstrably different requirements. This is more sustainable than promising dedicated infrastructure whenever a security questionnaire asks about isolation.
Plan how customers will move between tiers, too. Moving from a shared application or database to a dedicated environment can require data export, validation, new encryption keys, routing changes, and carefully coordinated cutovers. Consistent tenant identifiers, clearly owned backups, and tested migration procedures make a dedicated enterprise tier a repeatable offering rather than an expensive custom project.
Shared infrastructure spreads baseline costs over many customers. Dedicated deployments can add reserved capacity, separate load balancing, monitoring, backup, and maintenance costs, even when the customer is inactive.
A practical starting point is:
Infrastructure cost per tenant = Direct tenant infrastructure costs + Allocated shared infrastructure costs
For gross-margin analysis, include relevant support and operational delivery costs as well. Compare this cost with subscription revenue by tenant and plan, not only with the total cloud bill.
Useful signals include compute and storage consumption, peak versus average utilization, network traffic, backup footprint, and engineering time. Shared applications also need tenant-aware metrics: infrastructure tags alone cannot reliably identify which customer drove a costly query or API workload.
The AWS SaaS Lens cost guidance describes correlating tenant activity with infrastructure spending. The principle applies regardless of cloud provider: architecture and pricing should reflect what each customer costs to serve.
A dedicated customer environment becomes expensive when every deployment requires manual work. Standardize infrastructure-as-code templates for clusters, VMs, networks, storage, and security policies. Use repeatable application deployments and central monitoring, with reporting that still distinguishes individual tenants.
Automation should cover onboarding, capacity changes, upgrades, backup validation, incident recovery, and offboarding, not just the first deployment. Kubernetes and OpenStack APIs can help create repeatable environments, but teams still need ownership of patching, access reviews, and service reliability.
Without lifecycle automation, adding enterprise customers also means adding an increasingly fragile inventory of unique infrastructure configurations.
As the number of clusters or customer environments grows, platform operations can absorb engineering capacity intended for product development. The decision is not simply between operating everything internally and giving up control.
A managed model may let a SaaS team retain responsibility for application architecture and tenant policies while specialists handle cluster maintenance, monitoring, and infrastructure operations. VEXXHOST Managed Kubernetes supports deployments on different infrastructure environments with expert support or fully managed operations.
The question is whether maintaining the underlying platform creates enough product differentiation to justify the time and expertise it consumes. Managed operations also do not transfer responsibility for application-level authorization, data classification, or contractual obligations; these responsibilities need explicit ownership between the SaaS provider and infrastructure operator.
Start with the smallest separation boundary that demonstrably meets the requirement:
A growing SaaS platform may use several models simultaneously. What matters is that each option has a defined security model, documented operating cost, and repeatable lifecycle.
Multi-tenant SaaS infrastructure is not a debate about Kubernetes versus VMs. It is about allocating isolation where it matters without multiplying cost and complexity everywhere else.
Shared services can serve standard customers efficiently, while selected enterprise customers receive separate workloads or infrastructure. With automation and tenant-aware cost visibility, that flexibility can support both customer requirements and healthier SaaS economics.
Explore VEXXHOST SaaS Infrastructure Solutions to evaluate how Kubernetes, OpenStack, and managed infrastructure can support your SaaS architecture as it grows.
Choose from Atmosphere Cloud, Hosted, or On-Premise.
Simplify your cloud operations with our intuitive dashboard.
Run it yourself, tap our expert support, or opt for full remote operations.
Leverage Terraform, Ansible or APIs directly powered by OpenStack & Kubernetes