Skip to main content
In this lesson you’ll create Ubuntu virtual machines on an Apple Silicon (M-series) Mac using Multipass. These VMs will serve as the servers for a kubeadm-based Kubernetes cluster: one control plane and two worker nodes. Running the cluster locally with Multipass is a convenient, low-cost way to follow the kubeadm workflow without additional hardware.
A webpage for Canonical's Multipass showing the headline "Ubuntu VMs on demand for any workstation," an "Install now" button, and a section titled "Cloud-style VMs at your fingertips" with a cloud/VM illustration.
If your Mac has 8 GB of RAM the deploy script automatically reduces the cluster to a control plane plus one worker node. Systems with 16 GB or more get the full three-node setup (one control plane + two workers).

What you’ll get

  • A small kubeadm-ready environment on macOS (Apple Silicon).
  • One control-plane VM and two worker VMs (reduced to one worker on 8 GB systems).
  • Preconfigured network bridging and /etc/hosts entries so nodes resolve each other by name.
  • Helper scripts to deploy and tear down the VMs.
Recommended minimum: 8 GB RAM (16 GB+ recommended for the full three-node setup).

Prerequisites

  • macOS (Apple Silicon / M-series)
  • Multipass installed
  • Homebrew (optional, used for installing Multipass)
  • Git (to clone the repository)

Install Multipass on macOS

You can install Multipass via the official installer or with Homebrew Cask.
  • Download and run the macOS installer from https://multipass.run/install.
  • Or install with Homebrew:
Verify the installation:
Example output:

Repository with helper scripts

This project contains helper scripts that create and tear down the VM environment using Multipass. The Apple Silicon-specific scripts are in the kubeadm-clusters/apple-silicon folder of the repository.
A dark‑mode GitHub repository view showing an "apple-silicon" folder with files like README.md and shell scripts (delete‑virtual‑machines.sh, deploy‑virtual‑machines.sh). The right pane displays a README titled "Installing Kubernetes the kubeadm way on Apple Silicon."
Clone the repository and open the Apple Silicon folder:
The main deploy script is deploy-virtual-machines.sh. It checks for required tools (jq, multipass), inspects available system RAM, and chooses a network mode (BRIDGE or NAT). Below are key excerpts (abbreviated) to show the checks and RAM detection logic:

Deploy the VMs

Make the deploy script executable and run it:
The script provisions the VMs, configures their networking, and adds host entries so the nodes can resolve each other by name. When the script completes, list the VMs:
Example output showing three VMs (controlplane, node01, node02):
You can use the table below as a quick reference for the typical VM names, roles, and example IPs created by the script.

Connect to each VM

Open an interactive shell into any VM with multipass shell <name>: Example: connect to the control plane
Typical welcome header (truncated):
Similarly connect to the worker nodes:
Each VM displays its network interfaces and local IP addresses on login.

Networking details and host entries

Each VM generally has two network interfaces. The deploy script configures a bridged interface for node-to-node communication (the bridged interface typically carries addresses in the 192.168.86.x range). Inspect the network interfaces inside a VM:
Example showing two interfaces (enp0s1 and enp0s2):
Use the bridged interface (e.g., enp0s2 with 192.168.86.x) for Kubernetes cluster communication. The deploy script also updates /etc/hosts on each VM so the nodes resolve each other by name. View the file:
Example /etc/hosts entries added by the script:
When you install Kubernetes with kubeadm, you can reference nodes by either IP or the hostnames added to /etc/hosts.

Cleaning up — deleting the VMs

When you are finished, use the teardown script delete-virtual-machines.sh in the same apple-silicon folder:
macOS may still retain DHCP lease records for the VMs. The deploy/delete scripts will prompt you if manual cleanup is required. To inspect and edit the DHCP leases file:
A sample lease entry looks like:
Remove stale entries as needed or follow the README in the repository to reclaim DHCP address space.

Next steps

With the VMs up and networking configured you can continue to the kubeadm installation and cluster bootstrap steps in the repository’s apple-silicon README. The helper scripts and README will guide you through initializing the control plane, joining worker nodes, and verifying cluster status.

Watch Video