Ubuntu server install Kubernetes

This article will show you how install kubernetes on Ubuntu server (24)

Update package repo

Run below command to update package repository

sudo apt-get update

Run below command to install required tools

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg

Download kubernetes public signing key

Run below command to download and save kubernetes signing key

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

Run below command to allow unprivileged APT programs to read this keyring

sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg 

Add kubernetes to source list

Run below command to add kubernetes to source list

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# helps tools such as command-not-found to work correctly
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list 

Follow kubernetes official doc to create a cluster

Open ports for cluster use, open below ports on Ubuntu server, ports

sudo ufw allow 6443/tcp
sudo ufw allow 2379:2380/tcp
sudo ufw allow 10250/tcp
sudo ufw allow 10259/tcp
sudo ufw allow 10257/tcp
sudo ufw allow 10256/tcp
sudo ufw allow 30000:32767/tcp

Check swap configuration

sudo swapon --show # or run `free -h`

# Disable swap
sudo swapoff -a

To permanently disable swap, edit file /etc/fstab, comment out /swap.img line

Install container runtime, use CRI-O as an example, reference

CRIO_VERSION=v1.32
curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/stable:/$CRIO_VERSION/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg

echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/stable:/$CRIO_VERSION/deb/ /" | sudo tee /etc/apt/sources.list.d/cri-o.list

Install CRI-O

apt-get update
apt-get install -y cri-o

# Start CRI-O
systemctl start crio.service

Install kubeadm, kubelete, kubectl

sudo apt-get install -y kubelet kubeadm kubectl

sudo apt-mark hold kubelet kubeadm kubectl

# Enable kubelet
sudo systemctl enable --now kubelet

Use kubeadm in create cluster

sudo kubeadm init --pod-network-cidr=192.168.0.0/16

You may have below error throw out:

[ERROR FileContent--proc-sys-net-ipv4-ip_forward]: /proc/sys/net/ipv4/ip_forward contents are not set to 1

To fix this, run below to update sysctl config, uncomment below part

sudo vi /etc/sysctl.conf
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
sudo sysctl -p

Follow post install actions:

  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Install Pod network add-on, reference

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.2/manifests/tigera-operator.yaml

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.29.2/manifests/custom-resources.yaml

Find cluster taints

kubectl describe nodes
CreationTimestamp:  Sun, 09 Feb 2025 14:40:31 -0400
Taints:             node-role.kubernetes.io/control-plane:NoSchedule

Remove taints

kubectl taint nodes --all node-role.kubernetes.io/control-plane:NoSchedule-

Check your cluster is ready

 kubectl get nodes -o wide
NAME              STATUS   ROLES           AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
leveraon-ubuntu   Ready    control-plane   3m25s   v1.32.1   192.168.0.146   <none>        Ubuntu 24.04.1 LTS   6.8.0-52-generic   cri-o://1.32.1

Reference

Leave a Comment

Your email address will not be published. Required fields are marked *


The reCAPTCHA verification period has expired. Please reload the page.

Scroll to Top