Kubernetes for mere mortals

8 minute read

There have been few technologies that have changed the landscape of business and impacted all our daily lives. Of course, the internet is the technology that had the biggest impact, but there are a few more that also influenced various fields of business, especially that of IT. One of these technologies is Kubernetes which has changed the way we build modern environments and create software that runs on them. Although Kubernetes turns 6 years old this year, you can find articles and blog posts focused mostly on technological features.
This time I want to help you to understand how Kubernetes might affect the business for non-technical people. Many organizations have already embraced this new Cloud Native approach and have been using it to speed up innovation and have probably already found their own answers to the questions below. I believe that using containers and Kubernetes has a big impact on not only the technical part of organizations but also their culture by enabling people to deliver their software faster, more efficiently and securely.

1. What is Kubernetes and how does it work?

It all started with containers that are used to create packages with software and everything that is required to run a particular application. These containers are like a new type of robot that can be easily replicated and built, replaced quickly when they break or misbehave, and are one-purpose entities built for a dedicated task. They are different from virtual machines that are more like an old type of robot that is multi-purpose and thus heavier, harder to build, and require lots of time-consuming maintenance.
Containers work best on a platform that can host multiple instances of them and provide additional services. Kubernetes is an open source project which is the best platform for these containers and has outclassed the alternative solutions (i.e. Docker Swarm, Apache Mesos, HashiCorp Nomad). It’s like a special hotel for these robots where they get to communicate with each other and the outside world, store and use the data they need to operate, and are provided with special care from the hotel staff. The key point here is that everything is taken care of by Kubernetes, which is like a hotel manager. The main task of a Kubernetes user is to issue proper requests in the form of declarative statements. These requests are standardized and every Kubernetes cluster has a catalog of available requests that it handles. And this is where the main strength of Kubernetes lies - this catalog can be easily extended with custom actions. So in terms of this virtual hotel, it’s like adding additional amenities to provide better services for the hotel’s customers.
So yes - Kubernetes is like a highly automated and standardized hotel for your applications and there are many other interesting aspects due to which it has become so popular.

2. What are the real benefits of using Kubernetes?

Kubernetes brings unification and sets standards for organizations that develop software and deploy them on cloud or on-premises. Using Kubernetes simplifies the deployment process and what’s more important, it speeds up the process significantly. This allows organizations to provide new features or even new services much quicker than even in the cloud. With this unified approach it is easy to use multiple cloud providers and also create hybrid solutions. It helps to avoid vendor lock-ins as well. From the operational point of view, Kubernetes brings even more to the table - it increases reliability and allows you to scale your environments easily and quickly.
So to sum it up here’s the list of benefits:

  • broad unification - the same deployment approach for multiple types of workloads
  • real portability - run applications on desktop as well on multiple cloud platforms or on on-prem environments using the same tools
  • rapid scalability - grow your environments quickly to make your platform responsive at all times
  • increased reliability - leverage the self-healing feature of the applications and the infrastructure they run on to provide constant access to your products for your customers accelerated growth - innovate faster, deliver new features and fixes to stay competitive in the ever-growing global market

3. Will people in my organization know how to use it?

You may be surprised to learn how many people in your organization use containers, maybe even Kubernetes, or at least know it. It’s been a hot topic over the last few years and it’s been a headliner at every major IT conference. The people responsible for research and development have known it for years and there’s a chance that even some proof-of-concept projects have already been initialized in your organization. It’s just hard to miss this popular trend and it’s unwise to ignore it.
Software vendors have also noticed and fully embraced Kubernetes as a core platform for their products. They deliver them in the form of container images and additional configurations that allow running the software almost immediately on any Kubernetes environment. This means that sooner or later your organization will need to embrace Kubernetes as well to keep up with the inevitable changes enforced either internally or externally.

4. Can I just wait for something better?

If it was 2016 or even 2017 then there could be some doubt as to whether Kubernetes is the solution worth investing time and resources in. However, since then Kubernetes has gained a dominant position and it’s the de facto standard for all modern environments.
For those using cloud services, this might still pose some questions, especially if the environments built on top of the public cloud have been designed properly. For the rest using on-prem hardware, there’s no time to wait, as the list of benefits that a platform built on Kubernetes brings is just too tempting to ignore. Personally I think there’s no better way these days to build a platform that is reliable, fast and scalable on your own hardware.

5. Is Kubernetes secure?

The simplest answer is: it surely can be more secure than other systems. Kubernetes is another software project that has had flaws and security vulnerabilities and probably more of them will be discovered in the future. The emergence of these flaws is caused mostly by Kubernetes’ complexity and the fact that it’s a universal platform that includes features for a broad number of use cases.
There’s another factor that might increase the overall security of a platform based on Kubernetes - it’s the amount of time it takes to fix the vulnerabilities found in Kubernetes as well as in containers running on it. Everything in Kubernetes is based on containers that are very easy to fix by replacing them almost seamlessly without too much effort. Containers are also smaller and are built for one purpose, which makes them less vulnerable to various attacks.
It’s not about how secure and free of vulnerabilities the platform components are - it’s more about how fast they can be fixed and Kubernetes makes it as fast and easy as ever.

6. Can I use Kubernetes with my hardware or just in the cloud?

It’s definitely easier to use Kubernetes in the cloud since it often takes a few minutes to create a basic cluster that is ready to use. However, using it for on-prem environments is an excellent idea for the following reasons:

  • It is cheap to build a cluster for bigger projects (i.e. requiring a lot of resources and servers)
  • It allows utilization of existing hardware, even if not necessarily or high-class or enterprise level, as Kubernetes can mitigate potential failures quite well
  • With unified api it’s also the easiest way to create hybrid solutions (i.e. multi-cloud, multi-region, multi-datacenter)

There are additional questions that need to be answered. First is whether to build or buy - in this article I’ve given my observations on this topic. If building is the preferred choice then this is a list of things that should be considered during the process.

7. How is it different from cloud?

Public cloud platforms can really help boost innovation, for some cases lower the TCO, leverage new technologies (e.g. Artificial Intelligence), but many struggles to implement efficient processes for the software they develop. Kubernetes uses public cloud infrastructure to provide environments dedicated for applications and it enforces a new way of how applications are developed and deployed. This set of new practices is often referred to as Cloud Native. And it is doable without Kubernetes, but it’s much simpler with it. Kubernetes can be treated as a cloud platform and it can be especially useful for on-prem environments where the process of building a private cloud didn’t bring expected benefits (i.e. mostly decreasing the lead time for applications).

8. How can I start using Kubernetes in my organization?

Kubernetes uses containers so you need to have some application delivered inside a container image. You can start with a new project or pick a one that is fairly recently developed and uses modern frameworks (e.g. java with spring boot, nodejs, golang, python).

Then just start deploying it on a single node cluster running on a laptop such as Minikube or Microk8s. You don’t need any cloud or any big cluster. The beauty of Kubernetes lays in its portability - if it works on your workstation it will also work on any other Kubernetes.

When your application is ready you need to choose your production environment. If you are able to use the public cloud then choose a provider that you have the most experience with. If an on-premises environment is all you can use then your journey probably starts - have a look at my comparison between Kubernetes and OpenShift, as the latter one is a dominant product for such environments. If you wish to build your own platform using open source components then have a look at my tips on building a bespoke Kubernetes cluster.

At the same time start educating people in your organization about the benefits of using Kubernetes platform for running your software. Like every major change this also won’t happen quickly and you can expect resistance from people believing it’s a superfluous technology. Your job is to create a Cloud Native Center of Excellence and start dispelling the doubts arising around the topic of containers, Kubernetes and a new approach towards development and deployment. However, adoption of Kubernetes has grown significantly over the years and currently is one of the best option to provide highly-available platform and start delivering your applications faster.

Leave a comment