Categories: DevOpsDockers

Dockers Containers only to shine more with Kubernetes

A year back, I got started with Dockers Containers. 2-3 months down the road and I realized that thankfully I learnt a revolutionary technology because of some of the following reasons:

  1. Quick Learning: Docker containers were used to spin up my exploratory learning environment, on-demand demand, for any tool/ framework/Programming language I wanted to learn
  2. On-demand Self-service Environments: Docker containers were used to setup on-demand self-service dev/test environments. This was a huge productivity booster for developers and test engineers.
  3. Automated Deployments: With Docker containers, Jenkins, Repository etc, I saw the automated deployments getting created in dev/testing/UAT servers.

    Following are some of the areas where I  felt the need for some tool to do following:

    1. Manage App Cluster: Scale the apps in multiple Docker containers to meet app requirements. Take for an instance this example. Let’s say there is a data pipeline composed of Flume, Kafka and Spark containers. The need is to scale the pipeline to process larger dataset that could be achieved by having multiple containers for Flume, Kafka and Spark. In other words, use cluster setup to start these apps to process larger datasets. Say, for instance, Flume cluster passing data to Kafka cluster.
    2. Container orchestration: Manage the containers in terms of starting/stopping multiple containers running an app to perform on-demand service requirements. Take for an instance, starting/stopping Jenkins cluster to do CI jobs as required.
    3. Components Repackaging: Sometimes, I felt like repackaging existing apps and starting them together to test different app configurations.

    The requirements such as above could easily be fulfilled by Kubernetes.

    As I deep dived in the world of Kubernetes, I realized that this is one of the coolest tool I came across in recent past which for sure would act as feather in the cap for DevOps professionals working with Docker containers.

    Following are some of the key building blocks of Kubernetes which simplified the way I setup multiple containers together and able to maintain a specific number of replicas at any point of time while exposing those containers as a service.

    • Pods: Pods can be termed as a set of one or more co-located and co-managed containers sharing same namespace and same volume. Each pod tends to have an IP address associated with it which can be used to access the app running within that pod. Pods can be used to co-locate and co-managed multiple Docker containers having shared volume.
    • Services: Services provide a higher level abstraction to pods. If one or more pods have to rely on other pods, this is done via “service” level abstraction. Imagine a Kafka cluster exposed via Kubernetes service level abstraction.
    • Replication Controllers: Replication controllers maintains same number of replicas of pods at any point of time. That essentially means that if one or more pods got terminated due to any reasons, the controller starts the same number of pods appropriately.

      With the emerging trends of cloud-native apps where containers and microservices form the key components, Kubernetes has been identified as the most critical component to take the cloud-native apps management to a different level altogether. As a matter of fact, CNCF.io has also recognized Kubernetes as the first tool that serves the Cloud-native apps requirements. And, with Docker containers technology becoming the most popular containerization technology at this point of time, their marriage is only going to make both of them stronger than any other cloud-native configuration requiring container and container orchestration tool to work in tandem.

      Ajitesh Kumar

      I have been recently working in the area of Data analytics including Data Science and Machine Learning / Deep Learning. I am also passionate about different technologies including programming languages such as Java/JEE, Javascript, Python, R, Julia, etc, and technologies such as Blockchain, mobile computing, cloud-native technologies, application security, cloud computing platforms, big data, etc. For latest updates and blogs, follow us on Twitter. I would love to connect with you on Linkedin. Check out my latest book titled as First Principles Thinking: Building winning products using first principles thinking. Check out my other blog, Revive-n-Thrive.com

      Share
      Published by
      Ajitesh Kumar

      Recent Posts

      Linear Regression T-test: Formula, Example

      Last updated: 7th May, 2024 Linear regression is a popular statistical method used to model…

      20 hours ago

      Feature Engineering in Machine Learning: Python Examples

      Last updated: 3rd May, 2024 Have you ever wondered why some machine learning models perform…

      5 days ago

      Feature Selection vs Feature Extraction: Machine Learning

      Last updated: 2nd May, 2024 The success of machine learning models often depends on the…

      6 days ago

      Model Selection by Evaluating Bias & Variance: Example

      When working on a machine learning project, one of the key challenges faced by data…

      6 days ago

      Bias-Variance Trade-off in Machine Learning: Examples

      Last updated: 1st May, 2024 The bias-variance trade-off is a fundamental concept in machine learning…

      7 days ago

      Mean Squared Error vs Cross Entropy Loss Function

      Last updated: 1st May, 2024 As a data scientist, understanding the nuances of various cost…

      7 days ago