Basic Kubernetes for Developers

Kubernetes is an open-source container orchestration framework. It handles allocating physical resources for containers to utilize for execution, reducing the amount of operations work that needs to be done to schedule and deploy software to hardware. In essence, it is a hardware abstraction layer for scheduling the execution of containerized distributed systems.

There are a few major concepts that every developer should know about Kubernetes which I will quickly introduce.

Major Components

Nodes

A Kubernetes cluster consists of some number (1 or more, usually more) of nodes; physical or virtual servers running some containerization software, such as docker, rkt, etc and a Kubernetes specific process to coordinate container scheduling. If you are running Kubernetes on virtual hardware, such as AWS or GCP, you can run software that will interact with the API for the hardware to allocate more hardware to the Kubernetes cluster, meaning you can scale your Kubernetes cluster and your applications on that cluster with your load.

Pods

Pods are the most basic piece of Kubernetes. A pod is one or more containers scheduled and executed together with localhost access to one another. Each pod will get an IP address in the cluster. A pod usually contains one primary application container which does the work of the application; and zero or more sidecars. Sidecars are containers scheduled with the application that handle non-functional requirements of the application, such as inter-pod networking, runtime scanning or log forwarding.

Control plane

The control plane is where the magic of Kubernetes lives. It consists of multiple technologies and processes working together to keep your application working well. The most important piece of the cluster for the average non-infrastructure developer is the Kubernetes API, which is how a developer instructs Kubernetes to deploy, scale and upgrade an application. The API translates deployment descriptors, usually YAML or JSON files, into the appropriate component, such as stateful sets, deployments, daemon sets, etc which in turn translate into pods executing on nodes.

Conclusion

Kubernetes is an immensely powerful container orchestration framework of which I have barely given a 10,000-foot overview. As with most abstractions layers, it is also fairly complex and can be very difficult to debug when things go wrong. Care should be taken and necessity evaluated before deciding to take the plunge and convert to running your application or system on Kubernetes but if you need container orchestration at scale, Kubernetes is the state of the art.

To view or add a comment, sign in

More articles by Daniel Ranallo

  • Lambda Architecture Overview

    Overview The lambda architecture is a three-layer data analytics architecture designed to run analytics on large…

    1 Comment
  • Taints and Tolerations and Selectors, oh my

    Kubernetes is a very advanced orchestration framework with many features that allow for advanced scheduling and…

    3 Comments
  • ElasticSearch Phonetic Algorithms

    What is a phonetic algorithm Phonetic algorithms are transformations on text to be indexed that modify the text…

    1 Comment
  • ElasticSearch Overview

    What is ElasticSearch ElasticSearch is a document-oriented near real-time NoSQL database that is exceptional at tasks…

  • Apache Flink Introduction

    What is Flink Apache Flink is a dataflow technology that enables developers to work with infinite streams of arbitrary…

  • Life Of A Feature Request

    I was recently asked what development methodology we use at JANIIS to produce software. If you don't know what a…

    1 Comment
  • Simple Rules Based MongoDB Queries

    "How can we scale this?" The question kept resonating in my mind as I built a Java service to search a MongoDB database…

Others also viewed

Explore content categories