Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (2024)

In this tutorial, we'll delve into the intricacies of Kubernetes Development and guide you through each step of launching your first application! Whether you're a seasoned developer or a newbie, Kubernetes is a potential tool for managing workload and container services.

What is Kubernetes?

Kubernetes is an orchestration platform that automates the deployment, scaling, and management of containerized applications. It helps developers to concentrate on innovating and creating valuable products.

Maximizing Efficiency with Kubernetes Deployment for Applications

You might be wondering, “Why should I bother deploying my application on Kubernetes?” For instance, you build an amazing app, and it's gaining resistance faster than you can say “Stability.”

Suddenly, when your server crashes because of the incoming request. With Kubernetes, you can effortlessly scale your applications to handle the increase of loads without breaking a sweat.

Kubernetes Deployment empowers developers to streamline the deployment process, allowing them to focus on innovating and product creation. If one of your applications goes down, Kubernetes will automatically spin up a new one. It facilitates communication between development and operations teams and assists in better managing the application infrastructure.

Not only that, Kubernetes even helps to reduce the costs of managing and maintaining deployments by allowing you to focus on what really matters and building awesome software.

In this tutorial will show the process of deploying your first application on Kubernetes step by step. We'll start by setting up your Kubernetes environment and guiding you through the installation and Configuration Steps. Don't worry if you are new to Kubernetes; we will take it slow and steady. Follow these steps for deployments!


Prerequisites for Kubernetes Deployment

STEP 1: Installing of Kubernetes on master and work nodes:

-------------------------------------- Both Master & Worker Node ---------------------------------------

sudo su

apt update -y

apt install docker.io -y

systemctl start docker

systemctl enable docker

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

echo 'deb https://packages.cloud.google.com/apt kubernetes-xenial main' > /etc/apt/sources.list.d/kubernetes.list

apt update -y

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

# To connect with cluster execute above commands on master node and worker node respectively

--------------------------------------------- Master Node --------------------------------------------------

sudo su

kubeadm init

# To start using your cluster, you need to run the following as a regular user:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

# Alternatively, if you are the root user, you can run:

export KUBECONFIG=/etc/kubernetes/admin.conf

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

kubeadm token create --print-join-command

------------------------------------------- Worker Node ------------------------------------------------

sudo su

kubeadm reset pre-flight checks

-----> Paste the Join command on worker node and append `--v=5` at end

#To verify cluster connection

---------------------------------------on Master Node-----------------------------------------

kubectl get nodes

# worker

# kubeadm join 172.31.84.66:6443 --token n4tfb4.grmew1s1unug0get --discovery-token-ca-cert-hash sha256:c3fda2eaf5960bed4320d8175dc6a73b1556795b1b7f5aadc07642ed85c51069 --v=5

# kubeadm reset pre-flight checks

# kubeadm token create --print-join-command

# kubectl label node ip-172-31-20-246 node-role.kubernetes.io/worker=worker

# kubectl label nodes ip-172-31-92-99 kubernetes.io/role=worker

# kubectl config set-context $(kubectl config current-context) --namespace=dev

STEP 2: Clone a repository

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (1)

Let's look into the Docker file in this repository

FROM python:3

WORKDIR /data

RUN pip install django==3.2

COPY . .

RUN python manage.py migrate

EXPOSE 8000

CMD ["python","manage.py","runserver","0.0.0.0:8000"]

It’s a Django application running on port number

8000

and the entry point to the application is

manage.py

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (2)

What are Containers?

Containers are a type of runtime environment where your application code is packaged and run along with its dependencies. A container cluster is a dynamic system that arranges and controls containers that are operating on nodes in pods, together with all of their connections and channels of communication. It is also managed by Kubernetes Deployment and offers a lightweight and efficient runtime environment for running your applications.

STEP 3: Building an image from Dockfile

docker build . -t trajendra/django-todo:latest

Go to the repository cd django-todo and run the above command to create an image.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (3)

Run the docker images command to get the list of images.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (4)

The image is successfully created.

STEP 4: Push the Docker image to a Registry

Login to the Docker hub

docker login

The command will ask for a username and password after it has been executed. After entering the information, your login has been successful.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (5)

Push the image to register

docker push trajendra/django-todo:latest

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (6)

Check to see if the docker image has been successfully pushed to the registry.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (7)

Wow! You've successfully pushed the image to the registry and created it. From this image, we will create containers.

There are two primary ways to create and manage resources:

1. Command-line Interface

2.YAML manifest

1. Command - Line Interface:

Kubernetes provides a command line tool for interacting with the control plane of a Kubernetes cluster via the Kubernetes API.

The Kubernetes CLI referred to as kubectl is a tool that allows you to interact with the Kubernetes Cluster. It offers a set of commands for managing, creating, and adjusting Kubernetes resources.

2. Yaml Manifest

Configuration files written in YAML are called YAML manifests. The ideal states of Pods, Deployments, ConfigMaps, Secret, and many other things are specified in these files.

Let’s start with what a POD is.

The smallest unit of a Kubernetes application is called a pod, which is a grouping of one or more Linux® containers. One or more tightly coupled containers (an advanced use case) or just one container (a more common use case) can make up any given pod. Kubernetes Deployment orchestrates the deployment of pods, ensuring that your application components are efficiently distributed and managed.

To deploy our application, we'll be using YAML Manifests.

TASK 1: create your first Pod

The YAML Manifests will be used to create a single pod.

apiVersion: v1

kind: Pod

metadata:

name: django-app

spec:

containers:

- name: django-app

image: trajendra/django-todo:latest

ports:

- containerPort: 8000

  • apiVersion: v1

    specifies the Kubernetes API version being used.
  • kind: Pod

    indicates that you are creating a Pod object.
  • metadata

    contains metadata about the Pod, including its name.
  • spec

    defines the desired state of the Pod.
  • containers

    an array of container objects running inside the Pod. In this case, there is only one container.
  • name: crud-backend-app

    sets the name of the container to "crud-backend-app".
  • image: trajendra/crudbackend:latest

    specifies the Docker image to be used for the container. In this case, it uses the image "trajendra/django-todo" with the "latest" tag.
  • ports

    defines the network ports that the container exposes. In this example, it exposes port 8000.

By using this command, Kubernetes will read our YAML file and make the necessary updates to any cluster resources.

  • Connect to Worker Node to verify if the container is successfully created.

docker ps

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (8)
  • Now let's enter the container and run the curl command.

docker exec -it 3551dae bash

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (9)

Hello there! With YAML Manifests, we have been able to successfully create containers via pod.

NAMESPACE

When creating a namespace, consider the organizational structure of your deployments, ensuring that Kubernetes Deployment can efficiently manage resources across different environments. Within a cluster, logical groupings called namespaces are formed. They enable the coexistence of several teams or applications in one cluster.

  • By default, Kubernetes provides a default namespace where resources are created if no specific namespace is specified
  • You can define RBAC (Role-Based Access Control) policies to grant different levels of access to resources based on namespaces.

STEP 5: create a namespace

kubectl create namespace my-django-app

We will be creating a namespace for our application to include all the pods, services, deployment, and containers in this namespace.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (10)

TASK 2: Create a pod inside the Namespace

apiVersion: v1

kind: Pod

metadata:

name: django-app

namespace: my-django-app

spec:

containers:

- name: django-app

image: trajendra/django-todo:latest

ports:

- containerPort: 8000

  • To create the pod run the following command:

kubectl apply -f pod.yml

  • To verify the pods created inside the namespace

kubectl get pods -n=my-django-app

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (11)

Deleting a POD

kubectl delete -f pod.yml

Here, the pod will be deleted from the namespace

We have added a namespace and added in the metadata.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (12)

Deployments

  • A well-configured Kubernetes Deployment ensures the smooth operation of your applications, managing updates and scaling seamlessly.
  • Kubernetes tracks the health of the Pods under a deployment's management. To keep the required number of replicas, Kubernetes automatically replaces a Pod that malfunctions or stops responding.


STEP 6: Create a Deployment

apiVersion: apps/v1

kind: Deployment

metadata:

name: my-django-app-deployment

labels:

app: django-app

namespace: my-django-app

spec:

replicas: 3

selector:

matchLabels:

app: django-app

template:

metadata:

labels:

app: django-app

spec:

containers:

- name: django-app-container

image: trajendra/django-todo:latest

ports:

- containerPort: 8000

In Manifest above, we have declared deployments and things we need to know.

kind:

Defines the type of resource, which is a Deployment in this case.

selector:

Specifies the labels used to select which Pods are part of this Deployment.

  • matchLabels:

    Defines the labels that Pods must have to be considered part of the Deployment. In this case, Pods with the label
  • replicas:

    Defines the desired number of replicas (Pods) to maintain, set to 3 in this example.
  • template:

    Defines the Pod template used to create the Pods managed by the Deployment.
  • spec:

    Specifies the specifications for the Pods created from the template.

kubectl apply -f deployment.yml # run the deployment
kubectl get pods -n=my-django-app # get the list of pods in namespace

You can then use the command to create or update the Deployment in your Kubernetes cluster.

To get the pods created inside a namespace

kubectl get pods -n=my-django-app.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (13)


Scale

It is used to scale the number of replicas (pod) in the Deployment.

TASK 3: Create 10 replicas using Kubernetes CLI commands


kubectl scale deployment my-django-app-deployment --replicas=10 -n=my-django-app

--replicas=10

: Sets the desired number of replicas (Pods) to 10. This means that Kubernetes will adjust the number of Pods in the Deployment to match this value.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (14)

It has create 10 pods in clusters

Service

You are operating a web application in a deployment that has several pods. Every pod possesses a unique IP address that is subject to dynamic changes. As the number of pods increases or decreases, this method becomes infeasible. You can develop a service to address this issue.

STEP 7: EXPOSE your Applications to external users

NodePort: Opens a port on each cluster node's IP address for the Service. permits external users to access the service. We are using the permitted IP range of NodePort (30007–32767).

port:

Specifies the port number on the Service itself. In this case, it is set

targetPort

: Specifies the port number on the Pods that the Service should forward traffic to. In this example

nodePort: 30009

it is set to

30009

, meaning that traffic arriving at

nodeIP:30009

will be directed to the Service.

kubectl apply -f service.yml

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (15)

Edit the inbound rule in the security group of the EC2 instance and click on save rules.

Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (16)

Congratulations! We have successfully deployed a todo application on a Kubernetes Cluster.


Mastering Kubernetes Deployment

Congratulations on completing the tutorial on deploying your first application on Kubernetes! We are happy to be part of your journey to becoming a Kubernetes deployment master.

In conclusion, Kubernetes provides a powerful set of tools and strategies for controlling deployment, reducing cost, and improving reliability. By utilizing features such as rollbacks capability, Pods, Deployments, and advanced deployment strategies, we can reduce downtime and ultimately save money on infrastructure and operational expenses.

Moving forward to practical aspects of deploying applications on Kubernetes. By Mastering Kubernetes Deployment technique, you unlock the full potential, achieving unparalleled efficiency and Scalability in your application deployments.

For more Kubernetes Deployment skills, blogs, and resources, check out the other Ambassador blogs.

Try Telepresence Now

Ready to Transform Your Development Journey with Kubernetes?

Start 30-Day Free Trial

Schedule a Demo
Deploy Your First App on Kubernetes: Easy Step-by-Step Guide (2024)
Top Articles
What Is Considered Low Income for Seniors in Texas? - Caring.com
Use SUBSTR to Remove the Last Character from any String in Oracle SQL
Satyaprem Ki Katha review: Kartik Aaryan, Kiara Advani shine in this pure love story on a sensitive subject
Ymca Sammamish Class Schedule
Ofw Pinoy Channel Su
Google Sites Classroom 6X
The Ivy Los Angeles Dress Code
Terraria Enchanting
360 Training Alcohol Final Exam Answers
Bhad Bhabie Shares Footage Of Her Child's Father Beating Her Up, Wants Him To 'Get Help'
Urinevlekken verwijderen: De meest effectieve methoden - Puurlv
Jet Ski Rental Conneaut Lake Pa
Sitcoms Online Message Board
Immediate Action Pathfinder
3472542504
Beau John Maloney Houston Tx
No Hard Feelings Showtimes Near Cinemark At Harlingen
Lesson 8 Skills Practice Solve Two-Step Inequalities Answer Key
Youravon Comcom
Jenn Pellegrino Photos
Puretalkusa.com/Amac
Grayling Purnell Net Worth
Unity - Manual: Scene view navigation
Race Karts For Sale Near Me
Jang Urdu Today
Site : Storagealamogordo.com Easy Call
Lakers Game Summary
Big Lots Weekly Advertisem*nt
Bjerrum difference plots - Big Chemical Encyclopedia
Craigs List Tallahassee
Foodsmart Jonesboro Ar Weekly Ad
Narragansett Bay Cruising - A Complete Guide: Explore Newport, Providence & More
Downtown Dispensary Promo Code
12657 Uline Way Kenosha Wi
Jesus Calling Feb 13
Insidious 5 Showtimes Near Cinemark Southland Center And Xd
134 Paige St. Owego Ny
Shiftwizard Login Johnston
Palmadise Rv Lot
The Wichita Beacon from Wichita, Kansas
Exploring TrippleThePotatoes: A Popular Game - Unblocked Hub
Space Marine 2 Error Code 4: Connection Lost [Solved]
Can You Buy Pedialyte On Food Stamps
Thanksgiving Point Luminaria Promo Code
Anthem Bcbs Otc Catalog 2022
How I Passed the AZ-900 Microsoft Azure Fundamentals Exam
VerTRIO Comfort MHR 1800 - 3 Standen Elektrische Kachel - Hoog Capaciteit Carbon... | bol
Mountainstar Mychart Login
Shiftselect Carolinas
Walmart Front Door Wreaths
Wera13X
Latest Posts
Article information

Author: Kerri Lueilwitz

Last Updated:

Views: 6081

Rating: 4.7 / 5 (67 voted)

Reviews: 82% of readers found this page helpful

Author information

Name: Kerri Lueilwitz

Birthday: 1992-10-31

Address: Suite 878 3699 Chantelle Roads, Colebury, NC 68599

Phone: +6111989609516

Job: Chief Farming Manager

Hobby: Mycology, Stone skipping, Dowsing, Whittling, Taxidermy, Sand art, Roller skating

Introduction: My name is Kerri Lueilwitz, I am a courageous, gentle, quaint, thankful, outstanding, brave, vast person who loves writing and wants to share my knowledge and understanding with you.