?? Mastering Kubernetes with Kubeadm: A Step-by-Step Guide

?? Mastering Kubernetes with Kubeadm: A Step-by-Step Guide

Excited to share a comprehensive guide on setting up a Kubernetes cluster using Kubeadm! ??

Prerequisites:

  • Vagrant: Simplify VM provisioning.
  • Virtualbox: VM management.

Step 1: Install Vagrant and Virtualbox

Get started by installing Vagrant here and Virtualbox.

Step 2: Initialize VMs

VMs status in VirtualBox

  • We can take ssh of each VM by running "vagrant ssh <node-name>" command.

Step 3: Kubeadm Installation

  • We will run below necessary commands on each VM for communication

  • Now, we will install Container Runtime. For that, we will install docker engine first then cri-dockerd:
  • For Docker Engine:
  • Add Docker's official GPG key:

sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg        

  • Add the repository to apt sources:

echo \
? "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu\
? "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
? sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
        


  • For docker verification, run "sudo docker run hello-world"
  • For cri-dockerd, first we will install GO

git clone https://github.com/Mirantis/cri-dockerd.git        

  • Go to this link for installing GO

wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz        

  • In below commands, we will extract and install new version of GO:

sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version        

  • Now continue with cri-dockers:

cd cri-dockerd
sudo apt install make
make cri-dockerd        

  • Run these commands as root

cd cri-dockerd
mkdir -p /usr/local/bin
install -o root -g root -m 0755 cri-dockerd /usr/local/bin/cri-dockerd
install packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
systemctl daemon-reload
systemctl enable --now cri-docker.socket        

  • Now installing kubeadm, kubectl and kubelet:

sudo apt-get update
# apt-transport-https may be a dummy package; if so, you can skip that package
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# This overwrites any existing configuration in /etc/apt/sources.list.d/kubernetes.list

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


sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl        

  • To initiate kubeam, run below:

kubeadm init --pod-network-cidr 10.244.0.0/16 --apiserver-advertise-address 192.168.56.2 --cri-socket /run/cri-dockerd.sock        


  • Run below command as non-root user:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config        

  • To make CNI, to communicate k8s cluster nodes with each other, run below command for network add-ons. Here, I am using weave network.

kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml        

  • We can check the status of kubemaster as below:

kubemaster control-plane status

  • To join other worker nodes with this node, run below:

kubeadm join 192.168.56.2:6443 --token h3qvmx.8pqrdvnkwcu38lyd \
	--discovery-token-ca-cert-hash sha256:########################################################
        

Note: token will be achieved while running kube init command.

  • Other nodes status will be as below:

Conclusion:

Congratulations! ?? You now have a fully functional Kubernetes cluster. Feel free to explore and deploy your workloads.

Ayaz Rahim

DevOps Engineer & Linux System Admin | @ProSoftware Tech | MHI Services Ltd | Simplexmed | Ex-K2X Tech Linux System Admin | RHCSA | RHCE | Kubernetes | Containerization | AWS | CI/CD | GitOps | Terraform | Monitoring

1 年

No doubt about your concern on kubeadm really helpfull ans enjoyable

NAVEED ABDUL SATTAR

Trusted Advisor & Problem Solver | Cloud Consultant | Ready for Anything

1 年

ZEESHAN SAEED thank you for share the updated process to install #kubeadm #devops #kubernetes

Usman Aslam

System Support Assistance @ VConn Private Limited | MCTS, Help Desk Support, VPS

1 年

Thanks for posting

要查看或添加评论,请登录

ZEESHAN SAEED的更多文章

  • ?? Single Container Pod Scheduling in Kubernetes! ??

    ?? Single Container Pod Scheduling in Kubernetes! ??

    · In this post, we will make single pod using kind cluster. · For installing kind cluster, refer this link:…

  • JOB FOR NETWORK MONITORING

    JOB FOR NETWORK MONITORING

    Urgently require a resource in Network Monitoring at Redtone telecommunications Key responsibilities: 1. Responsible…

    2 条评论

社区洞察

其他会员也浏览了