Motivation

This is part of the series of articles that helps us to achieve the following:

- Understand Kubernetes (K8s) controllers
- Learn various K8s controller implementations
- Write K8s controller(s)

This first appeared in Decisions#221

Kubernetes Controllers — A Primer

Let us try to refresh our understanding on Kubernetes (K8s) controllers before trying to dig deep into any specific controller(s). A Kubernetes controller is a logic that tries to move the Kubernetes cluster into some desired state. However, there can be so many desired states due to the needs of various components, applications, etc running on Kubernetes. Hence, Kubernetes provides us with the ability to…


Most of us (developers) have been introduced to the concept of programming via books or our own experience. It is more than likely some of us would have heard about Object Oriented Programming (OOPs). The essence of OOPs is all about constructing objects by analysing software requirements in terms of real world objects.

Need to move beyond **thinking in nouns to construct objects** ?
We have often heard of nouns becoming programmable objects & the behaviours of these objects turn into methods or functions. Theory aside, if we conform to these OOPs essentials, does it ease our programming logic? Does this mean…


This article belongs to #HowDoI series on Kubernetes and OpenEBS.

A OpenEBS Volume comprises of a Controller pod and one or more Replica pod(s). Controller pod (also known as a Target pod) is the one to which the application can make an iSCSI connection. The Replica pods are the ones that access the underlying disk resources for storing the data.

Use Case #1: In my Kubernetes cluster, OpenEBS volume pods are scheduled on appropriate nodes. This is all fine till the cluster experiences a disruption due to network partition. Kubernetes tries to evict & re-schedule these volume pods into newer…


This article belongs to #HowDoI series on Kubernetes and OpenEBS.

Note: The approach mentioned in this article applies for OpenEBS version 6.0 or below. One can refer to this link for OpenEBS version 0.8.0 and above.

A OpenEBS Volume comprises of a Target pod and Replica pod(s). There can be one or more Replica pods. The Replica pods are the ones that access the underlying disk resources for storing the data.

Use Case #1: In my Kubernetes Cluster, I have certain nodes that have disks attached. I call these as Storage Nodes. …


Need for Storage Policy

One of the most common disbelief at the operator’s end would be the reports of an application’s (that consumed this storage) sudden death after introducing a much awaited shiny new storage feature. To make things worse the same surprise would be reciprocated from the storage provider as well. Neither the operator nor the storage fellow have any clues to this sudden strangeness.

Having gone through many such cycles of frustrations building storage features that satisfy the needs of every operator as well does not break stuff that are outside its control; I knew there was clearly a gap in storage…


What is e2e ?

Well e2e which expands into end to end speaks for itself. It can be treated as
component testing, integration testing or something that tries to test stuff
outside the scope of unit tests. I got attracted to this side of development when I was surprised looking at the one of the smallest possible directory name ever in a code based project. As I speak, we get to see a number of Go based projects having an e2e folder. I believe, it has been popularised by the likes of etcd, Kubernetes and perhaps a few other open source communities.

How to build one ?

Before even…


Are you an experienced C programmer or perhaps an adept Java hacker finding Go somewhat awkward to deal with. There may be different elements of surprise or familiarity based on the programmer’s background e.g a Java programmer may relate the GOPATH settings with the settings associated with JAVA_HOME. On a similar note, the very same programmer might be surprised with Makefiles that are used to script the compilation, build & other stuff. I am sure though that this experience will be different for a seasoned C programmer.

If above and perhaps multiple of other reasons inhibit you from familiarising with…


Infrastructure components are the toughest to build. It is meant to work always by default. It must be telecom grade as scores of applications rely on the infra component’s zero downtime, no deterioration in QOS, etc. However, we all know software has got defects and it is no different for infrastructure software components as well. One of things the software can do is implement high availability as its core feature and somehow buy time (by the virtue of HA) when one of these components experiences a break down due to defects or otherwise.

Implementing the HA piece seems to be…


We might have all heard of TDD, don’t we ? TDD is the abbreviated form for `Test Driven Development`. It might also be true in-case of newbies to have never heard of TDD in the current season where DevOps, NoOps, DataOps, ML, IOT rule the roost.

TDD in simpler terms would be planning and implementing test logic before implementing its development logic. However, I find it very difficult to do this in practice. What I do instead is a little bit of planning & start building the development logic. In the next iteration, I would start writing corresponding test logic…


I knew, we would be running through the mud looking skywards for those brightest stars. We were not at all disappointed with our first attempt at Kuppam Engineering College, India.

I always believe, bridging the minds of academia & industry has to go beyond the nuances of theory vs. practical. We call ourselves as the industry’s core and form the industry’s grey cells. What we need to do is make our problems open to the public. These problems becomes the new practice that needs to be picked up by our alma mater. Once selected, it will take no time for…

Amit Das

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store