#!/bin/bash # Enable error handling set -e # Function to check command status check_status() { if [ $? -eq 0 ]; then echo "✅ $1 successful" else echo "❌ $1 failed" exit 1 fi } echo "🚀 Starting Kubernetes installation..." # Update system echo "📦 Updating system packages..." sudo apt-get update && sudo apt-get upgrade -y check_status "System update" # Install prerequisites echo "📦 Installing prerequisites..." sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common check_status "Prerequisites installation" # Install containerd echo "🐋 Installing containerd..." sudo apt-get install -y containerd check_status "Containerd installation" # Configure containerd echo "⚙️ Configuring containerd..." sudo mkdir -p /etc/containerd sudo containerd config default | sudo tee /etc/containerd/config.toml > /dev/null sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml sudo systemctl restart containerd sudo systemctl enable containerd check_status "Containerd configuration" # Disable swap echo "⚙️ Disabling swap..." sudo swapoff -a sudo sed -i '/swap/d' /etc/fstab check_status "Swap disabled" # Load kernel modules echo "⚙️ Loading kernel modules..." sudo modprobe overlay sudo modprobe br_netfilter check_status "Kernel modules loaded" # Configure system settings echo "⚙️ Configuring system settings..." cat < $HOME/k8s_join_command.txt chmod 600 $HOME/k8s_join_command.txt echo "Join command saved to $HOME/k8s_join_command.txt" echo " ✅ Installation complete! To start using your cluster: kubectl get nodes kubectl get pods --all-namespaces To reset the cluster if needed: sudo kubeadm reset sudo rm -rf /etc/cni/net.d sudo rm -rf $HOME/.kube/config "