Documentation
KubeCell overview
KubeCell gives every developer an isolated Kubernetes cluster — a VirtualCluster — on shared physical hosts. A single management cluster holds the desired state; each Cell host runs the workloads. Developers get a standard, kubectl-compatible K3s API with hard CPU, memory, and GPU quotas, persistent storage, and automatically published kubeconfigs.
Pre-release software
KubeCell is under active development and the APIs arev1alpha1. Do not use it for production workloads yet.What KubeCell is
- A small operator with exactly four CRDs:
Cell,VirtualNodeClass,VirtualClusterPlan, andVirtualCluster. - A composition layer over upstream projects — K3s, K3k, TopoLVM, Traefik, and Open Cluster Management (OCM) — integrated through public APIs only.
- A quota and isolation system: every child cluster maps to a host namespace with
ResourceQuota,LimitRange,NetworkPolicy, and admission rules that reject privileged workloads andhostPathvolumes. - An inventory and feasibility system: Cells report live capacity, and Plans tell you whether a request can be satisfied before anything is created.
What KubeCell is not
- Not a second scheduler, device allocator, kubelet, CNI, CSI, or Device Plugin. Those stay upstream.
- Not a namespace-with-labels product. A child cluster has its own API server, control plane, and data volume.
- Not a strong-adversary multi-tenancy boundary. Developer credentials are child-cluster admin kubeconfigs, which is a deliberate trusted-network trade-off.
- Not a horizontal autoscaler for child clusters: each child exposes exactly one logical node named
kubelet. You scale by switching quota tiers.
The mental model in four objects
| Object | Scope | You use it to… |
|---|---|---|
| Cell | Namespaced | Bind one OCM ManagedCluster to one machine profile. Generated from live discovery. |
| VirtualNodeClass | Cluster-scoped | Publish a quota tier: hard requests/limits per child cluster plus a storage class. |
| VirtualClusterPlan | Namespaced | Check feasibility without side effects: Accepted, Rejected, or Unknown. |
| VirtualCluster | Namespaced | Create the child cluster and receive a published admin kubeconfig in status. |
Architecture at a glance
Three layers, one direction of control. The management plane declares intent; the host executes it; the child cluster is the product.
Your manifests
host, quota, cluster
KubeCell
one management cluster
Host setup + cluster creation
applied on the host
Your host
runs the workloads
Your cluster
kubectl + kubeconfig
The controller never connects to a host directly. It applies two declarative work objects per cluster through the hub and reads host state back the same way. See technical principles for the full control flow.
Design principles worth remembering
- Intent-only specs. Human-authored manifests declare which Cell and which quota tier. Versions, ports, reservations, and security baselines are platform constants and never enter the CRDs.
- One safe value means no field. If a setting has exactly one safe value, exposing it would only create drift, so it stays out of the API.
- Observed state beats declared state. Allocatable capacity reported by the host is the source of truth; declarations are upper bounds and never inflate inventory.
- Reconciliation is idempotent. Failed steps are retried by re-rendering from the resolution snapshot, never by patching host state in place.
- Built on upstream components. K3s, K3k, TopoLVM, and OCM are used unmodified through their public APIs, so upstream fixes and behavior apply directly.
Who should read what
Overview
What KubeCell is, who it is for, and how the pieces fit together.
OpenCore concepts
The four KubeCell resources, quota tiers, and how a cluster maps to a host.
OpenInstallation
Install the management cluster, connect a host, and prepare it for tenants.
OpenFirst VirtualCluster
Preflight a request, create your first cluster, and get the kubeconfig.
OpenHost onboarding
The four-command flow that adds a physical host to KubeCell.
OpenDay-2 operations
Inventory checks, credentials, quota changes, ingress, upgrades, deletion.
OpenAPI reference
Every CRD field, immutability rule, and status condition.
OpenSecurity & isolation
Namespace, quota, policy, and admission controls per child cluster.
OpenTroubleshooting
Symptom-first diagnostics across Cell, Work, child API, and storage.
OpenFAQ
Short answers about scope, limits, and design trade-offs.
OpenProject status
The API shape, controllers, installer, and the first end-to-end loop are implemented. The feature matrix (PVC, networking, hostPath rejection, interaction, cascading deletion, accelerator allocation, Ingress) and release hardening are in progress. Track the work in TODOS.md and report bugs through GitHub issues.