Skip to content

superseb/multipass-k3s

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 

Repository files navigation

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

This is tested on MacOS and Ubuntu Linux 22.04.

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 (SERVER_CPU_MACHINE), 10G disk (SERVER_DISK_MACHINE) and 1G of memory (SERVER_MEMORY_MACHINE) 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 SERVER_COUNT_MACHINE)
  • Create cloud-init file for agent to join the cluster.
  • Create one machine (configurable using AGENT_COUNT_MACHINE) with 1 CPU (AGENT_CPU_MACHINE), 3G disk (AGENT_DISK_MACHINE) and 512M of memory (AGENT_MEMORY_MACHINE) 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 (if MERGE_KUBECONFIG is set)
  • $NAME-kubeconfig-merged.yaml (if MERGE_KUBECONFIG is set)

You can clean up the instances by running 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

About

Use multipass instances to create your k3s cluster

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages