Edge & IoT Deployments
k3s runs a full cluster on a Raspberry Pi or edge gateway, managed centrally from the cloud.
The edge is where k3s truly shines. A single small device can run a complete, self-healing cluster close to where the data is produced.
A typical edge pattern
- Each site runs a single-node k3s on a Raspberry Pi, gateway, or mini-PC.
- Apps are deployed the same way everywhere with GitOps or auto-deploying manifests.
- A central system pushes updates and collects health from all sites.
Example
# Provision an edge Pi in one line, with a chosen node name
curl -sfL https://get.k3s.io | \
INSTALL_K3S_EXEC="--node-name store-42" sh -
# Bake the app in so it deploys on first boot
sudo cp store-app.yaml \
/var/lib/rancher/k3s/server/manifests/When to use it
- A retail chain runs a k3s agent on each store's local server, managed by a central k3s cluster in the cloud via the Rancher management plane.
- A smart factory deploys k3s on an NVIDIA Jetson device to run GPU-accelerated defect-detection pods directly on the production line.
- An autonomous vehicle fleet uses k3s on in-car compute units to orchestrate sensor-fusion and safety pods with strict latency requirements.
More examples
Install k3s on ARM64 edge device
Installs k3s on an ARM64 edge device and labels it with the site identifier for workload targeting.
curl -sfL https://get.k3s.io | \
INSTALL_K3S_EXEC='--node-name edge-store-42 \
--node-label site=store-42 \
--write-kubeconfig-mode 644' sh -
kubectl get nodes --show-labelsPin workload to edge node
Uses nodeSelector to target a specific edge node and adds a toleration so the pod runs even under disk pressure.
spec:
nodeSelector:
site: store-42
tolerations:
- key: node.kubernetes.io/disk-pressure
operator: Exists
effect: NoScheduleLimit pod resource footprint
Sets tight resource boundaries for a sensor-processing pod to leave headroom for the k3s agent on constrained IoT hardware.
containers:
- name: sensor-proc
image: factory/sensor:v3
resources:
requests:
cpu: '50m'
memory: '32Mi'
limits:
cpu: '200m'
memory: '64Mi'
Discussion