3.2 KiB
To set up and install Kubernetes on Ubuntu, you'll need to install Docker (or another container runtime), configure hostnames, disable swap, and install Kubernetes components like kubeadm, kubelet, and kubectl. The process involves initializing the master node with kubeadm init, then joining worker nodes to the cluster using the join command generated during initialization
Here's a more detailed breakdown:
-
Prerequisites:
-
Ubuntu Server: A clean installation of Ubuntu Server (e.g., 20.04, 22.04, or 24.04) on all nodes (master and worker nodes) is required.
-
Sufficient Resources: Ensure each node has enough resources ( 2 CPU, 4GB memory, 50GB disk space) to run Kubernetes and your applications.
-
-
Preparation on all Nodes:
-
Update and Upgrade: Ensure your system is up to date:
sudo apt update && sudo apt upgrade -y.
-
Disable Swap: Disable swap space for better performance:
sudo swapoff -a- `sudo sed -i '/ swap / s/^(.*)$/#\1/g' /etc/fstab
-
**Setup certain kubernetes pre-req modules
- cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF modprobe overlay modprobe br_netfilter
-
Enable IP forwarding: Enable IPv4 forwarding on all nodes:
sudo sysctl net.ipv4.ip_forward=1sudo tee /etc/sysctl.d/k8s.conf <<EOF net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF.
-
Install Containerd: Install a container runtime like Docker or Containerd.
sudo apt install -y docker.io- `sudo systemctl start docker
- `sudo systemctl enable docker
-- Install Kubernetes Components: Install kubeadm, kubelet,
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
-
Initialize the Cluster: On the master node, initialize the cluster using
kubeadm:sudo kubeadm init --pod-network-cidr=10.0.0.0/16'
Configure kubectl for the cluster:
sudo mkdir -p $HOME/.kube '
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Joining Workers Nodes to the Cluster
kubeadm token createe --print-join-command
Setup Flannel for kubernetes networking
wget https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
nano kube-flannel.yml
**Update the Network Line which is this "Network": "10.244.0.0/16",
**Update it to be the CIDR that is used for the initalizing the pod so in this example "Network": "10.0.0.0/16",
kubectl apply -f kube-flannel.yml
Install the Calico Operator: kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/tigera-operator.yaml
Apply the Calico Manifest kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/custom-resources.yaml