Install kubernetes cluster using kubeadm
Hello everyone! 👋 Welcome to our step-by-step guide on using kubeadm
to install Kubernetes. It’s worth noting that this method is more of a learning tool and isn’t recommended for a production environment. Let’s get into it!
First up, let’s prep our machine for this Kubernetes journey, ensuring we’re all set to hop into all nodes.
Step 1: Create a configuration file for containerd. Here’s the magic code you need:
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
Step 2: Let’s get those modules loaded:
sudo modprobe overlay
sudo modprobe br_netfilter
Step 3: Next, we’ll set up system configurations for Kubernetes networking:
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
Apply these settings with sudo sysctl --system
.
Great job so far! 😎 Now we’re onto the next steps.
Step 4: Install containerd:
sudo apt-get update && sudo apt-get install -y containerd.io
Step 5: Create a default configuration file for containerd:
sudo mkdir -p /etc/containerd
And then generate a default containerd configuration:
sudo containerd config default | sudo tee /etc/containerd/config.toml
Restart containerd with sudo systemctl restart containerd
and verify it’s running with sudo systemctl status containerd
.
Step 6: Next, disable swap: sudo swapoff -a
.
Time for some kubeadm
and Kubernetes package installs.
Step 7: Install some needed packages:
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
Step 8: Download and add the GPG key:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Step 9: Time to add Kubernetes to your repository list:
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
Step 10: Refresh package listings: sudo apt-get update
.
Now, we’re ready to install the Kubernetes packages using kubeadm
.
Step 11: Here’s how to install Kubernetes packages with kubeadm
:
sudo apt-get install -y kubelet=1.27.0-00 kubeadm=1.27.0-00 kubectl=1.27.0-00
We want to keep things stable, so turn off automatic updates: sudo apt-mark hold kubelet kubeadm kubectl
.
Step 12: Time to initialize the cluster with kubeadm
. Do this on the control plane node:
sudo kubeadm init --pod-network-cidr 192.168.0.0/16 --kubernetes-version 1.27.0
Step 13: Set up kubectl access:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Does everything look good? Let’s check: kubectl get nodes
.
Step 14: Time to install Calico Networking on the control plane node:
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
Check the status of the control plane node: kubectl get nodes
.
Alright, almost there!
Step 15: Let’s join the worker nodes to the cluster. Create a token and copy the kubeadm join
command:
kubeadm token create --print-join-command
Paste the kubeadm join
command into the worker nodes to join the cluster:
sudo kubeadm join 10.0.1.101:6443 --token 71u8rt.fs4ue7o9gcer84jr --discovery-token-ca-cert-hash sha256:23f2db254daa8fdde50e2443f77633e7b09e34d0c5438be36204f81a90c87bbc
And finally, check the cluster status back on the control plane node: kubectl get nodes
.
And that’s it! Congratulations, you’ve successfully installed Kubernetes using kubeadm
! Great job! 🎉 Please remember, this method is not recommended for a production environment, but it’s an excellent way to learn!