0. Setting Hostnames (Master & Worker Nodes)
sudo hostnamectl set-hostname "master.k8s.local"
Enter fullscreen mode
Exit fullscreen mode
sudo init 6
Enter fullscreen mode
Exit fullscreen mode
1. Update Hostfile
sudo nano /etc/hosts
#Add the following list in the end of line
172.16.1.100 master.k8s.local
172.16.1.101 worker-one.k8s.local
172.16.1.102 worker-two.k8s.local
Enter fullscreen mode
Exit fullscreen mode
2. Disabling Swap (Master & Worker Nodes)
sudo apt-get update
Enter fullscreen mode
Exit fullscreen mode
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Enter fullscreen mode
Exit fullscreen mode
sudo swapoff -a
Enter fullscreen mode
Exit fullscreen mode
3. Configure Modules (Master & Worker Nodes)
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
Enter fullscreen mode
Exit fullscreen mode
sudo modprobe br_netfilter
sudo modprobe overlay
Enter fullscreen mode
Exit fullscreen mode
4. Configure Networking (Master & Worker Nodes)
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
Enter fullscreen mode
Exit fullscreen mode
sudo sysctl --system
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
sysctl -p
Enter fullscreen mode
Exit fullscreen mode
5. Install K8s (Master & Worker Nodes)
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
Enter fullscreen mode
Exit fullscreen mode
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
sudo systemctl enable kubelet
Enter fullscreen mode
Exit fullscreen mode
6. Install Container runtime (Master & Worker Nodes)
sudo apt-get update
sudo apt-get install -y containerd
Enter fullscreen mode
Exit fullscreen mode
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
cat /etc/containerd/config.toml
Enter fullscreen mode
Exit fullscreen mode
sudo systemctl restart containerd.service
sudo systemctl status containerd
sudo containerd config dump
Enter fullscreen mode
Exit fullscreen mode
7. Initialization K8s Cluster (Master Node Only)
sudo kubeadm init --apiserver-advertise-address=192.168.10.2 --pod-network-cidr=192.168.0.0/16 --cri-socket /run/containerd/containerd.sock --ignore-preflight-errors Swap
Enter fullscreen mode
Exit fullscreen mode
8. Install Cilium (Master Node Only)
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/main/stable.txt)
CLI_ARCH=amd64
if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
cilium version
cilium install --version 1.16.2
kubectl get pod -n kube-system
Enter fullscreen mode
Exit fullscreen mode
9. Configuring Kubectl (Master Node Only)
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Enter fullscreen mode
Exit fullscreen mode
10. Print Join Token (Master Node Only)
kubeadm token create --print-join-command
Enter fullscreen mode
Exit fullscreen mode
Top comments (0)