Lightweight single-node Kubernetes for edge computing, built on Fedora-packaged components.
MicroShift 2.0 is a from-scratch reimplementation of MicroShift that takes a fundamentally different approach to running Kubernetes on edge devices. Instead of embedding Kubernetes components as Go libraries in a monolithic binary, MicroShift 2.0 is a thin orchestration daemon that manages separate systemd services using binaries from Fedora's kubernetes1.35 packages.
The microshift daemon handles certificate generation, kubeconfig creation, and component configuration, then delegates actual Kubernetes workloads to standard Fedora-packaged binaries (kube-apiserver, etcd, kubelet, etc.) running as independent systemd services. This means components can be updated independently through the system package manager, failures are isolated per-service, and the entire stack integrates naturally with systemd tooling.
MicroShift 2.0 targets Fedora IoT and CentOS Stream 10, with delivery via both bootc container images and traditional RPM packages.
- Single-node Kubernetes -- Full K8s control plane and worker on one machine, optimized for edge
- Systemd-native -- Each component runs as its own systemd service with proper dependency ordering
- Fedora-packaged dependencies -- Uses
kubernetes1.35,etcd,cri-o1.35directly from Fedora repos - Automatic TLS -- Generates all certificates and kubeconfig files on first start
- Configurable storage -- Local-path (default), TopoLVM/LVMS, or NFS provisioners
- CNI options -- Kindnet (default, zero-config) or OVN-Kubernetes
- Minimal footprint -- The MicroShift binary itself is small; heavy lifting is done by system packages
- Simple operations --
systemctl start microshiftbrings up the entire cluster
microshift.service
|
generates certs, kubeconfigs,
component configs, then starts:
|
+---------------+---------------+
| |
microshift-etcd.service |
| |
microshift-apiserver.service |
| |
+-----+-----+-----+ |
| | | |
controller scheduler kubelet kube-proxy
-manager
All component services have PartOf=microshift.service -- stopping MicroShift cleanly tears down the entire stack.
sudo dnf install kubernetes1.35 etcd cri-o1.35 containernetworking-pluginsFrom RPM (when available):
sudo dnf install microshiftFrom source:
git clone https://github.com/ausil/microshift-2.0.git
cd microshift-2.0
make build
sudo make installsudo systemctl enable --now crio
sudo systemctl enable --now microshiftexport KUBECONFIG=/var/lib/microshift/kubeconfig/admin.kubeconfig
kubectl get nodes
kubectl get pods -AYou should see your node in Ready state and system pods (kindnet, CoreDNS) running.
MicroShift reads its configuration from /etc/microshift/config.yaml. All fields are optional with sensible defaults. A minimal configuration only needs a node IP:
clusterName: my-edge-cluster
nodeIP: "192.168.1.100"See the Configuration Reference for all available fields.
MicroShift supports three storage drivers, configured via storage.driver in config.yaml:
| Driver | Use Case | Default |
|---|---|---|
local-path |
Development, simple workloads | Yes |
lvms |
Production edge with dedicated disks | No |
nfs |
Shared storage environments | No |
none |
No persistent storage needed | No |
See the Storage Guide for setup details.
- Getting Started -- Installation and first steps
- Configuration Reference -- All config fields and examples
- Architecture -- Design, startup sequence, cert model
- Storage Guide -- Storage driver setup and comparison
- Networking Guide -- CNI, DNS, and firewall configuration
- Troubleshooting -- Common issues and debugging
- Development Guide -- Building, testing, project structure
- Contributing -- How to contribute
make build # builds bin/microshift
make test # runs unit tests
make lint # runs golangci-lint
make install # installs binary, systemd units, assetsApache License 2.0. See LICENSE for details.