Kubernetes – What’s all the fuzz about it?

So I have been in the IT business for quite a while and seen lots of new technologies. When virtualization came out first, it was a big game changer, starting a revolution in both hard- and software areas. Just think about the CPUs and onboard chips which had to support virtualization in first place, and then things like software defined networks appeared. It was suddenly not necessary to run a hardware server for every application in a data center, and flexibility in providing new resources to customers grew a lot. First major player was VMware, then KVM, XENServer and others like Openstack / Openshift joined in.

However, pros and cons of virtualization have to be considered a lot, as there are also quite some downsides to it. For instance, managing a full operating system just for yet another application is adding a lot of work, even though that can be nicely done through configuration management tools like Puppet, Ansible etc.

So therefore, containers were (re)invented. Docker was developed in first place to allow application developers to work around package management and to allow full portability between various operating systems. Docker container typically are a fraction the size of a full Virtual Machine, and usually are up and running in a few seconds. Images can be easily custom made and shared. When Docker swarm came along, it suddenly was possible to build mostly automated infrastructure landscapes based on Docker images, both on bare metal or in virtual environments, with and without configuration management, because Docker swarm itself manages a lot of those things automatically.

Shortly after that, Kubernetes was the new kid on the blog and very quickly became quite important. Kubernetes is actually not a container platform itself, but utilizes Docker. Instead, it is a powerful open source orchestration framework for containers and does a lot where Docker swarm has its limits. It is entirely possible to have a variety of different applications on one host running in parallel without being in each others way. Whether this is a smart idea from a viewpoint of high availability is questionable, but that is a different topic. Since Kubernetes is highly scalable, these matters can be easily solved.

Kubernetes can be managed nicely via kubectl / kubeadm or helm and is based on yaml configuration files. While kubectl is very handy for configuring and troubleshooting on command line interface (CLI), the config files can be arranged nicely in software repositories, thus versioned and manageable via CICD pipelines, for instance through Jenkins or gitlab.ci. That means testing and deploying can be automated in a safe, repeatable manner and usually is done in seconds or minutes, depending on the size of the environment.

This post is the very first in a series about managing Kubernetes environments via DevOPS methods, stay tuned and subscribe for more information.

Leave a Reply

Your email address will not be published. Required fields are marked *

5 + fifteen =