mayaworld13 / kubernetes-setup

Welcome to the Kubernetes and ArgoCD Setup Repository! This repository contains comprehensive guides and configurations for setting up Kubernetes clusters using Kubeadm and deploying ArgoCD for continuous delivery.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kubeadm Installation Guide with docker runtime

This guide outlines the steps needed to set up a Kubernetes cluster using kubeadm.

Pre-requisites

  • Ubuntu OS (Xenial or later)
  • sudo privileges
  • Internet access
  • t2.medium instance type or higher

AWS Setup

  • Make sure your all instance are in same Security group.
  • Expose port 6443 in the Security group, so that worker nodes can join the cluster.

Execute on Both "Master" & "Worker Node"

Run the following commands on both the master and worker nodes to prepare them for kubeadm.

wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12.amd64.tgz 
tar -xvf cri-dockerd-0.3.12.amd64.tgz 

sudo apt update && sudo apt install docker.io -y
sudo systemctl enable docker --now

cd cri-dockerd
sudo mkdir -p /usr/local/bin
sudo install -o root -g root -m 0755 ./cri-dockerd /usr/local/bin/cri-dockerd

sudo tee /etc/systemd/system/cri-docker.service << EOF
[Unit]
Description=CRI Interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network-online.target firewalld.service docker.service
Wants=network-online.target
Requires=cri-docker.socket
[Service]
Type=notify
ExecStart=/usr/local/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
[Install]
WantedBy=multi-user.target
EOF

sudo tee /etc/systemd/system/cri-docker.socket << EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-docker.service
[Socket]
ListenStream=%t/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF


sudo systemctl daemon-reload
sudo systemctl enable cri-docker.service
sudo systemctl enable --now cri-docker.socket

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

sudo apt update
sudo apt install kubelet kubeadm kubectl -y


echo "memory swapoff"
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sudo swapoff -a
sudo modprobe overlay
sudo modprobe br_netfilter
sudo tee /etc/sysctl.d/kubernetes.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system

sudo systemctl enable --now kubelet

Execute ONLY on "Master Node"

sudo kubeadm config images pull --cri-socket /var/run/cri-dockerd.sock --kubernetes-version v1.28.8

sudo kubeadm init   --pod-network-cidr=10.244.0.0/16   --upload-certs --kubernetes-version=v1.28.8  --control-plane-endpoint=$(hostname) --ignore-preflight-errors=all  --cri-socket /var/run/cri-dockerd.sock

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf
sudo chmod +r /etc/kubernetes/admin.conf

Execute ONLY on "Worker Node"

sudo token --cri-socket unix:///var/run/cri-dockerd.sock

About

Welcome to the Kubernetes and ArgoCD Setup Repository! This repository contains comprehensive guides and configurations for setting up Kubernetes clusters using Kubeadm and deploying ArgoCD for continuous delivery.