Skip to main content

Command Palette

Search for a command to run...

Kubernetes Cluster Setup using Kubeadm

Updated
β€’3 min read
Kubernetes Cluster Setup using Kubeadm
S

πŸ‘‹Hello, Hashnode community! I'm subbaramireddy, a passionate DevOps Engineer with a relentless commitment to optimizing software development workflows and infrastructure management. πŸš€ Hands-on experience in the DevOps field, I've honed my skills in AWS cloud services, containerization, and CI/CD pipelines. As an AWS Certified Developer, I'm well-versed in leveraging cloud technologies to drive efficiency and innovation. πŸ’‘ I firmly believe in the power of continuous improvement. My journey began with an internship, where I immersed myself in the intricacies of DevOps, from deploying web applications to orchestrating containerized solutions. I've also delved into AWS CDK, enhancing security through RDS instance policies, and creating foundational infrastructure with precision. 🌐 My goal is to share insights, best practices, and the latest trends in the DevOps landscape. I'm excited to connect with like-minded professionals, engage in meaningful discussions, and learn from the diverse experiences of the Hashnode community. πŸ“ Let's explore the ever-evolving world of DevOps together. Feel free to connect with me, ask questions, or share your own insights. Together, we can drive innovation and efficiency in the tech world!

Open the AWS Management Console and search for the Ec2. Click on it.

Configure the K8s-master instance as follows.

Configure the K8s-Worker instance as follows.

Connect the K8s-Master node as follows using ssh.

Connect the K8s-Worker node as follows using ssh.

Both the Master Node and worker Node

Install the below required components.

# using 'sudo su' is not a good practice.
sudo apt update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo apt install docker.io -y

sudo systemctl enable --now docker # enable and start in single command.

# Adding GPG keys.
curl -fsSL "https://packages.cloud.google.com/apt/doc/apt-key.gpg" | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-archive-keyring.gpg
# Add the repository to the sourcelist.
echo 'deb https://packages.cloud.google.com/apt kubernetes-xenial main' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt update 
sudo apt install kubeadm=1.20.0-00 kubectl=1.20.0-00 kubelet=1.20.0-00 -y

Master Node

Initialize the Kubernetes master node.

After successfully running, your Kubernetes control plane will be initialized successfully.

Set up local kubeconfig (both for the root user and normal user):

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

Apply Weave network:

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

Generate a token for worker nodes to join:

sudo kubeadm token create --print-join-command

Expose port 6443 in the Security group for the Worker to connect to the Master Node

Worker Node

Run the following commands on the worker node.

sudo kubeadm reset pre-flight checks

Paste the join command you got from the master node and append --v=5 at the end. Make sure you are working as a sudo user or using sudo before the command

After succesful join->

Verify Cluster Connection

On Master Node:

kubectl get nodes

Labeling Nodes

If you want to label worker nodes, you can use the following command:

kubectl label node <node-name> node-role.kubernetes.io/worker=worker

Test a Demo Pod

If you want to test a demo pod, you can use the following command:

kubectl run hello-world-pod --image=busybox --restart=Never --command -- sh -c "echo 'Hello, World' && sleep 3600"

We can see the list of events.


Thanks for reading! I hope you found this helpful and informative.

I'm always happy to connect with fellow tech enthusiasts and answer any questions you may have. Don't forget to follow me for more updates on tech, programming, and more.πŸ˜„πŸ˜„

Follow me on LinkedIn to see interesting posts like this : ) Linkedin