Install a modern Linux distribution on your device (Raspberry Pi, industrial PC, etc). Ensure the following:
▪ curl and bash installed
▪ sudo access
▪ At least 200MB RAM free
▪ Sufficient local disk for workloads
▪ Dependencies: the libsqlite3-dev
package is installed
▪ (Optional): kubectl installed either locally or on a remote machine. For the installation process, refer to this link
⚠ Warning: Avoid running kubectl on machines with less than 512 MB of RAM, as it may impact performance and interfere with KubeSolo. In this case, use kubectl from an external machine instead.
Run:
curl -sfL https://get.kubesolo.io | sudo sh -
This installs the KubeSolo binary and starts the control plane as a systemd service. To view the progress of the installation, check the systemd service logs. For instance, on a Debian based distro, run journalctl -u kubesolo -f
To enable remote access, copy the admin kubeconfig file (/var/lib/kubesolo/pki/admin/admin.kubeconfig) from the KubeSolo node to the machine where kubectl is installed, and use it as your kubeconfig for cluster management.
Use one of the following methods to interact with KubeSolo via kubectl:
🔹 Temporarily use the admin kubeconfig file with no overwrite:
KUBECONFIG=./admin.kubeconfig
🔹 Permanently merge and overwrite the existing kubeconfig:
# Append the kubesolo kubeconfig to the existing config file:
KUBECONFIG=~/.kube/config:./admin.kubeconfig kubectl config view --merge --flatten > /tmp/kubeconfig.merged && cp ~/.kube/config ~/.kube/config.bak && mv /tmp/kubeconfig.merged ~/.kube/config
# Change the context
kubectl config use-context kubernetes-admin@kubesolo
Once the context is correctly set, check the node status:
kubectl get nodes
You should see a single node in Ready state.
Start with a simple app (like mosquitto):
kubectl apply -f https://raw.githubusercontent.com/portainer/kubesolo/develop/examples/mosquitto.yaml
Then check the resources in the mosquitto namespace:
kubectl get all -n mosquitto
kubectl get svc -n mosquitto
Access the app via the node's static IP and NodePort or via ingress, depending on your setup.
▪ View more deployment examples (coming soon)
▪ Manage visually with Portainer (optional, but recommended)
▪ Customize with Helm charts or CRDs