Installation

Make sure Ubuntu is up-to-date

sudo apt dist-upgrade

Install the required repo dependencies

We need to install the required packages for the docker repository to grab the latest packages.

sudo apt update
sudo apt install -y \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Add the required repositories

We will add the docker repository to get the latest version of the packages below

# Create folder for new gpg keys
sudo mkdir -p /etc/apt/keyrings

# Docker repository for containerd
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# kubernetes repository
sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# Update apt cache
sudo apt-get update

! if you receive a GPG error when running apt update, run the following command to fix the public key’s umask sudo chmod a+r /etc/apt/keyrings/docker.gpg

Install packages

sudo apt install -y kubelet kubeadm kubectl containerd.io

Hold packages

We will mark the packages to be held to prevent them from being upgraded unless forced. This will help prevent any unexpected compatability issues.

sudo apt-mark hold kubelet kubeadm kubectl containerd.io

Install NFS cliet if you are using persistent apps so the host can mount the required shares.

sudo apt install -y nfs-common