Use multipass instances to create your k3s cluster
Last updated Jan 25, 2026
63
Stars
29
Forks
0
Issues
0
Stars/day
Attention Score
22
Topics
Language breakdown
No language data available.
▸ Files
click to expand
README
k3s cluster on multipass instances
This script will create a configurable amount of instances using multipass, install k3s server(s) (HA using embedded etcd), and add the agent instances to the cluster.
Requirements
- multipass (See multipass: Install Multipass)
Running it
Clone this repo, and run the script:
bash multipass-k3s.sh
This will (defaults):
- Generate random name for your cluster (configurable using
NAME) - Create init-cloud-init file for server to install the first k3s server with embedded etcd (contains --cluster-init to activate embedded etcd)
- Create one instance for the first server with 2 CPU (
SERVERCPUMACHINE), 10G disk (SERVERDISKMACHINE) and 1G of memory (SERVERMEMORYMACHINE) using Ubuntu focal (IMAGE) - Create cloud-init file for server to install additional k3s servers with embedded etcd.
- Create one instance for additional server (configurable using
SERVERCOUNTMACHINE) - Create cloud-init file for agent to join the cluster.
- Create one machine (configurable using
AGENTCOUNTMACHINE) with 1 CPU (AGENTCPUMACHINE), 3G disk (AGENTDISKMACHINE) and 512M of memory (AGENTMEMORYMACHINE) using Ubuntu focal (IMAGE) - Wait for the nodes to be joined to the cluster
- Optionally merge the generated kubeconfig with the existing $KUBECONFIG (
MERGE_KUBECONFIG)
Quickstart Ubuntu 22.04 droplet
sudo snap install multipass
wget https://raw.githubusercontent.com/superseb/multipass-k3s/master/multipass-k3s.sh
bash multipass-k3s.sh
curl -Lo /usr/local/bin/kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x /usr/local/bin/kubectl
kubectl --kubeconfig *-kubeconfig.yaml get nodes
Clean up
The files that are created are:
$NAME-agent-cloud-init.yaml$NAME-cloud-init.yaml$NAME-kubeconfig.yaml$NAME-kubeconfig-orig.yaml$NAME-kubeconfig-backup.yaml(ifMERGE_KUBECONFIGis set)$NAME-kubeconfig-merged.yaml(ifMERGE_KUBECONFIGis set)
multipass delete k3s-server-$NAME-1 --purge and multipass delete k3s-agent-$NAME-{1,2,3} or (WARNING this deletes and purges all instances): multipass delete --all --purge🔗 More in this category