k3sup — Bootstrap K3s Clusters Over SSH in Under a Minute
k3sup (ketchup) is a lightweight CLI that installs K3s on any remote server over SSH with a single command, enabling fast Kubernetes cluster creation on bare metal, VMs, or Raspberry Pis without complex setup scripts.
What it is
k3sup (pronounced 'ketchup') is a lightweight CLI that installs K3s on any remote server over SSH with a single command. It targets developers and homelab operators who want fast Kubernetes cluster creation on bare metal, VMs, or Raspberry Pis without writing complex setup scripts or Ansible playbooks.
K3s is a lightweight Kubernetes distribution by Rancher. k3sup removes the remaining friction by handling the SSH connection, binary download, and kubeconfig retrieval in one step.
How it saves time or tokens
Manually setting up K3s involves SSHing into a server, downloading the binary, configuring systemd, and fetching the kubeconfig. k3sup collapses this into a single command. For multi-node clusters, it also handles joining worker nodes to an existing server without manual token passing.
How to use
- Install k3sup on your local machine (a single binary download).
- Run
k3sup installwith the target server's IP and SSH key. - For worker nodes, run
k3sup joinpointing at the server IP.
Example
# Install k3sup locally
curl -sLS https://get.k3sup.dev | sh
sudo install k3sup /usr/local/bin/
# Bootstrap a K3s server
k3sup install --ip 192.168.1.100 --user pi
# Join a worker node
k3sup join --ip 192.168.1.101 --server-ip 192.168.1.100 --user pi
# Verify the cluster
export KUBECONFIG=$(pwd)/kubeconfig
kubectl get nodes
Related on TokRepo
- AI tools for DevOps — Explore other DevOps and infrastructure automation tools.
- AI tools for self-hosted — Tools for running self-hosted infrastructure and services.
Common pitfalls
- Forgetting to open port 6443 on the server firewall. K3s API server listens on this port and worker nodes need it to join.
- Using password-based SSH instead of key-based. k3sup works best with SSH keys; password auth requires additional configuration.
- Not checking the kubeconfig file location after install. k3sup writes it to the current directory by default, not to ~/.kube/config.
Frequently Asked Questions
K3s is the lightweight Kubernetes distribution itself. k3sup is a separate CLI tool that automates the installation and cluster joining process for K3s over SSH. You still run K3s under the hood.
Yes. k3sup works with any server accessible via SSH, including AWS EC2 instances, DigitalOcean droplets, Hetzner servers, and any other cloud VM with an SSH endpoint.
Yes. You can use k3sup to set up multi-server HA clusters with an external datastore or embedded etcd. Run k3sup install on each server node with the appropriate HA flags.
k3sup does not currently manage upgrades. To upgrade K3s, SSH into the server and run the K3s install script with the desired version, or use the K3s system-upgrade-controller for automated upgrades.
Yes. Raspberry Pi is a primary target for k3sup. It works with ARM-based Pis running a compatible Linux OS. Ensure SSH is enabled and the Pi has a static IP or hostname.
Citations (3)
- k3sup GitHub— k3sup installs K3s over SSH with a single command
- K3s Documentation— K3s is a lightweight Kubernetes distribution
- Kubernetes Docs— Kubernetes cluster management and kubectl
Related on TokRepo
Discussion
Related Assets
NAPI-RS — Build Node.js Native Addons in Rust
Write high-performance Node.js native modules in Rust with automatic TypeScript type generation and cross-platform prebuilt binaries.
Mamba — Fast Cross-Platform Package Manager
A drop-in conda replacement written in C++ that resolves environments in seconds instead of minutes.
Plasmo — The Browser Extension Framework
Build, test, and publish browser extensions for Chrome, Firefox, and Edge using React or Vue with hot-reload and automatic manifest generation.