Open In App

How To Install Python In Kubernetes Pod ?

Last Updated : 28 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

Deploying Python applications inside Kubernetes units offers influential solutions for managing and scaling containerized tasks at hand. Python, renowned for its straightforwardness, simplicity, and extensive system, tracks down the wide applicable in web improvement, data science, data visualization, and computerization assignments. Kubernetes, a main holder organization stage, gives strong elements to mechanizing sending, scaling, and overseeing containerized applications across bunches of machines.

In this guide, we will explore the deploying Python application in a Kubernetes unit including making a Docker image that encapsulates the Python runtime environment along with any required libraries. This Docker image is then deployed as a container inside Kubernetes pods using YAML configuration files. By utilizing Kubernetes’ declarative model, developers can ensure consistency and producibility in their Python deployments while benefiting from Kubernetes’ capacities, for example, auto-scaling, load balancing, and administration disclosure.

Python is a flexible and generally used programming language known for its effortlessness, intelligibility, and broad environment of libraries and structures. In the present powerful registering scene, sending Python applications inside Kubernetes, a main compartment organization stage, has become progressively famous. Kubernetes offers strong highlights for overseeing containerized applications at scale, giving computerization, adaptability, and flexibility. it is frequently utilized in Kubernetes conditions. In this aide, we’ll stroll through the moves toward introducing Python in a Kubernetes case.

What Is Kubernetes?

Kubernetes is a container orchestration platform developed by Google that helps manage and deploy applications run in containers, automating many of manual process involves in deploying, managing, health checking and scaling application. kubernetes also called as k8s because The 8 in K8s represents the number of letters between the “K” and the “s” in the name.

Integrating Python into Kubernetes pods allows for the deployment of Python applications within the Kubernetes ecosystem, leveraging its robust orchestration capabilities. Kubernetes, an open-source container orchestration platform, facilitates the deployment, scaling, and management of containerized applications across clusters of nodes.

Installing Python within Kubernetes pods involves creating container images that include the Python runtime environment and any necessary dependencies. By containerizing Python applications, developers can ensure consistent runtime environments and streamline deployment workflows.

Kubernetes is a two-node cluster one is control plane node(master node) and another one is worker node.

  1. The control plane node hosts the Kubernetes API server and it manages the clusters and resources such as worker nodes and pods.
  2. Worker nodes are the part of the Kubernetes cluster that executes applications and containers.

Kubernetes Cluster Architecture

Understanding Of Primary Terminologies

  • kubectl: Kubernetes provides a command line tool for communicating with a Kubernetes clusters’ control plane, using the Kubernetes API.
  • kOps: kOps helps us to create,destroy,upgrade and maintain the clusters. With kOps, teams can automate the management of Kubernetes clusters.
  • Primary Function: Kubernetes is a platform for running and managing containers.
  • Scaling: While a two-node cluster is suitable for testing and development purposes, consider scaling up the cluster as the workload to meet performance. Automatic scaling based on application demand.
  • Networking: Networking configuration is essential to enable communication between nodes and pods within the cluster. And provides complex network setup and supports network policies.
  • Storage: Supports wide range of storage solutions such as persistence, projected and ephemeral volumes.
  • Fault Tolerance: Replaces failed containers automatically
  • Portability: Ensures efficient running of deployed applications in any environment.

What Is Python?

  • Python is a general-purpose, high-level programming language. It is used for web development, software development, machine learning, and data science.
  • python programming is used in data visualization, big data analytics and making graphs and mathematical problem solving.
  • Python is an interpreted language, which means that it does not need to be compiled before it can be run.
  • Often, programmers fall in love with Python because of the increased productivity it provides. Since there is no compilation step, the edit-test-debug cycle is incredibly fast. Debugging Python programs is easy.

Easier deployment and quicker development are main reasons for containerizing a Python web application. Moreover, you can automate operations and avoid the headache of setting up dependencies for each step. 

Installation Of Python In Kubernetes : A Step-By-Step Guide

Here, We are going to deploy Python software in a running kubernetes pod and kubernetes is installed in AWS EC2 instance.
Step 1: Create an AWS account and search for ec2 service and select it.

Launch an instance with configuration:

  • AMI- amazon Linux 2
  • instance type- t2.micro
  • Security group- allow SSH(22),HTTP (80),HTTPS(443) traffic from anywhere
  • Configure storage – 8gb with root volume type gp2
  • connect this instance with any CLI terminal by using SSH
 ssh -i  "pemfile" ec2-user@<instance-public-ip address>compute-1.amazonaws.com

Remote login To Instance

Step 2: Install KUBECTL and KOPS from google “https://kops.sigs.k8s.io/getting_started/install/”

  • After downloading the kubectl and kops related keys and repos then install kubectl.
sudo yum install -y  kubectl

Step 3: Now,give your aws access key and secret key by the command.

  • Here, we use my aws access key and secret key instead of this you can attach EC2 role with admin full access to the ec2 instance.
aws configure

AWS Configuration

Step 4: Create s3 bucket from this k8 workstation instance to store the objects of the k8s master data.

aws s3 mb  s3://k8wp

Creating S3 Bucket For Workstation

Step 5: Export this Amazon S3 bucket

  • we have to export this s3 bucket for backup and restore the copy files between Kubernetes and S3 bucket.
export KOPS_STATE_STORE=s3://k8wp

Exporting Amazon S3 Bucket

Step 6: Generate A ssh key

  • ssh-keygen command is a component of most SSH implementations used to generate a public key pair for use when authenticating with a remote server
 ssh-keygen

Generate SSH Keys

Step 7: Create a cluster with the DNS “php.k8s.local”

 kops create cluster --name php.k8s.local --state s3://k8wp --zones us-east-1a,us-east-1b --node-count 2 --node-size t2.micro --yes

Creating A Cluster

  • The following illustrates the creating process of cluster:

Creating Cluster

  • We have to check the cluster whether it is healthy or not and also cluster is validate or not
kops validate cluster 

KOps Validation of Cluster

Now our cluster is ready ….!!

Step 8: Create a Pod YAML

  • Create a YAML file describing your Pod. Here’s the YAML file (python-pod.yaml):
  • create a python-pod file with yml extension
sudo vi python-pod.yml

Now the copy the below provided code to the file named python-pod.yml:

 apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: python-container
image: amazonlinux:2
command: ["sleep", "infinity"] # Keep the container running
  • apiVersion specifies the Kubernetes API version being used.
  • kind defines the type of Kubernetes resource, which in this case is a Pod.
  • metadata contains information like the name of the Pod.
  • spec specifies the desired state for the Pod, including the container(s) it should run.
  • containers is a list of containers to run within the Pod. In this case, there’s one container.
  • name is the name given to the container.
  • image specifies the Docker image to use for the container. Here, it’s amazonlinux:2.
  • command defines the command to run in the container. In this case, it’s sleep infinity, which keeps the container running indefinitely

Kubernetes manifest file

Step 9: Apply The YAML

  • Apply the Pod YAML to create the Pod in your cluster:
  • execute or apply these python-pod.yml with help of kubectl.
kubectl apply -f python-pod.yml

Applying the Yaml File

  • After this our python pod has been created and will ready to run
  • to check the pods execute this command
kubectl get pods

Running pod

  • You can see the pod status is running and pod name is mypod.

Step 10: Access the Pod

  • You can access the running Pod using kubectl exec.
  • To install Python and pip within your container, you’ll need to update your Pod definition to include commands to install Python. Here’s how you can modify the Pod definition:
kubectl exec -it mypod -- /bin/bash
yum install -y python3
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
kubectl exec -it mypod -- pip install python2

install python in running pod

  • finally,python software is successfully installed in kubernetes pod.
  • And you can verify installed python.
kubectl exec -it mypod -- python -c "print('Python installed successfully')"

python version verifying

Kubernetes Pod And Python – FAQ’s

How Would I Scale Python Applications Sent In Kubernetes?

You can scale Python applications conveyed in Kubernetes by configuring the quantity of replicas in the deployment YAML file utilizing the reproductions field. Kubernetes will consequently deal with the deployment of extra running pods to meet the desired replica sets.

What Do You Think Is Important When Delivering Applications To Run On K8s?

Successful deployments of K8s require thought on the workflow processes used by your team. Using a git-based workflow enables automation through the use of CI/CD ( Continuous Integration / Continuous Delivery ) pipelines, which will increase application deployment efficiency and speed.

Can I Use Kubernetes Secrets Or Configmaps To Manage Sensitive Information Or Configuration For My Python Application?

Indeed, Kubernetes gives privileged insights and ConfigMaps to manage delicate data, for example, passwords, Programming interface keys, or design settings. You can mount these secrets or ConfigMaps as volumes in your pods and access them from your Python application.

What Is Kubernetes And Why Use It For Deploying Python Applications?

Kubernetes is a container orchestration platform developed by Google that helps manage and deploy applications run in containers, automating many of manual process involves in deploying,managing,health checking and scaling,self healing application, making it ideal for deploying Python applications in a scalable and reliable manner.

What Is The Recommended Way To Deploy A Python Application In Kubernetes?

The best suitable method to deploy a Python application in Kubernetes is by creating a Kubernetes Deployment unit and service resource.guaranteeing that the ideal number of replicas is running at any given time. You can characterize your Python applications’ Docker image, climate factors, environment prerequisites, and other configuration settings in the deploying unit.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads