Device edge & far edge
Industrial gateways, sensor aggregators, remote monitoring nodes. Full Kubernetes where connectivity is intermittent and RAM is measured in megabytes.
edgeAnywhere you've been running Docker or Podman, you can now run Kubernetes. KubeSolo strips out all the clustering machinery and gives you the full Kubernetes API on a single node… starting at under 200 MB RAM.
Single-node Kubernetes with the clustering machinery removed. Not disabled. Removed.
Most Kubernetes distributions are built for multi-node clusters and then adapted for smaller deployments. KubeSolo starts from the opposite direction. It takes Kubernetes and removes everything that only makes sense when there's more than one node: etcd quorum logic, leader election, multi-node networking overlays, control plane distribution. None of it is present.
What remains is a full Kubernetes control loop on a single process. The API server, controller manager, kubelet, and kube-proxy all run together, and a lightweight webhook assigns pods to the node in place of the scheduler. Your existing manifests, Helm charts, and CRDs work without modification.
The design target is anywhere you would have previously reached for Docker or Podman: edge devices, factory hardware, developer laptops, remote sites, IoT gateways, kiosk machines. Anywhere a single-node runtime makes sense and a full cluster is overhead you don't need.
KubeSolo is open source (MIT) and maintained by Portainer.
Anywhere a single node is the right unit of deployment and multi-node cluster complexity is overhead you'd never use.
Industrial gateways, sensor aggregators, remote monitoring nodes. Full Kubernetes where connectivity is intermittent and RAM is measured in megabytes.
edgeAir-gapped industrial infrastructure running ISA-95 workloads. The offline build embeds KubeSolo's own system images, so it installs and runs with no cloud connectivity. Point registry mirrors at an internal registry for your own images.
air-gappedRaspberry Pis, ARM SBCs, embedded Linux devices that were previously running Docker Compose. Upgrade the runtime without upgrading the hardware.
arm64Local Kubernetes that doesn't need a hypervisor or eat your laptop's memory. Write manifests locally, deploy identically to production. On Linux it runs natively with no Docker Desktop required; on macOS and Windows (WSL2), kubesoloctl runs it in a container on Docker.
local devSmall offices, retail locations, field deployments. One KubeSolo node per site with the same operational model as the rest of your fleet.
fleetInteractive terminals, digital signage, point-of-sale systems. Lifecycle-managed container workloads on locked-down purpose-built hardware.
embeddedIf you're running Docker today because Kubernetes felt like too much for a single node, KubeSolo is the upgrade that changes that calculus.
The things edge fleets end up needing, already built in. Each is a setting in one config file, not another add-on to install.
Every setting lives in /etc/kubesolo/config.yaml. Change it with kubesoloctl config set, validate before saving, or manage it over a local socket API. Configuration →
A built-in endpoint reports component health, certificate expiry and database size. Ready-made Grafana dashboards cover the API server, kubelet and containers. Observability →
:9105/metricsd2k exposes a Docker-compatible API over mTLS, so docker ps, existing scripts and CI jobs can target a KubeSolo node unchanged. d2k →
The static CPU manager policy gives latency-sensitive pods exclusive cores, for motion control, audio and machine vision. CPU pinning →
real-timePoint image pulls at a mirror, a Harbor proxy cache or one internal registry for an air-gapped site, with private CAs and credentials. Registries →
air-gappedOne CLI to install, upgrade, reset and uninstall, plus a container mode that runs KubeSolo on macOS and Windows WSL2 for development. kubesoloctl →
cliK3s and MicroK8s are legitimate options. The differences come down to design priorities and what each one is optimized for.
| Capability | KubeSolo | K3s | MicroK8s | Docker / Podman |
|---|---|---|---|---|
| Full Kubernetes API | ✓ | ✓ | ✓ | ✗ |
| RAM footprint <200 MB | ✓ | ~ | ✗ | ✓ |
| Single-node design (no cluster overhead) | ✓ | ~ | ~ | ✓ |
| ARM, ARM64, x86_64 & RISC-V 64 | ✓ | ✓ | ✓ | ✓ |
| Flash / constrained storage optimized | ✓ | ~ | ✗ | ~ |
| Helm & CRD support | ✓ | ✓ | ✓ | ✗ |
| No etcd / no quorum | ✓ | ✓ | ✗ | ✓ |
| Air-gapped install | ✓ | ✓ | ~ | ✓ |
| OCI image compatible | ✓ | ✓ | ✓ | ✓ |
The full FAQ covers everything from hardware requirements and CNCF certification to KubeEdge comparisons and multi-cluster management.
One command on Linux. kubesoloctl for macOS and Windows (WSL2).
Run the install script with sudo on a Linux host. It installs the KubeSolo binary, writes /etc/kubesolo/config.yaml and starts KubeSolo under your init system (systemd, OpenRC, SysV, s6, runit or upstart). The installer stops if Docker is present; remove it first, or use kubesoloctl container mode on a development machine.
On macOS or Windows (WSL2), download kubesoloctl and run KubeSolo in a container on Docker:
If kubectl is on the node, the installer merges the admin kubeconfig into ~/.kube/config for you, and so does kubesoloctl. To use kubectl from another machine, copy /var/lib/kubesolo/pki/admin/admin.kubeconfig to it, then set the context:
Try the Mosquitto example from the KubeSolo repository:
KubeSolo is a Portainer project. Portainer's Edge Agent connects your KubeSolo fleet into a single operator control plane: GitOps deployments, RBAC, and remote lifecycle management across every node without touching each one.