So I have been in the IT business for more than 20 years and seen lots of new technologies. Each one getting more complex, and they keep coming in at increasing pace. Kubernetes now is a big player in modern infrastructure landscapes.
Table of Contents
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. It was suddenly not necessary anymore to run a hardware server for every application. 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.
Software defined became an important aspect, like virtual switches ( Software Defined Networks), virtual disks (Software Defined Storage) etc.
However, there are many pros and cons of virtualization. The immense flexibility coming with VMs are certainly a pro. But you still need to manage a full operating system just for yet another application or a few. This is easily manageable through configuration management tools like Puppet, Ansible etc. , but comes with a certain burden of tasks and time required.
Then containers came out. Docker was developed in first place to allow application developers to work around package management. Full portability between various operating systems was also a major aspect. Docker containers typically are a fraction the size of a full Virtual Machine, and usually deployed and running in a few seconds or minutes. Developers can easily make custom images made and share them.
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.
Kubernetes can be managed nicely via
helm and is based on yaml configuration files. There are also Enterprise solutions like
Rancher. Kubectl is very handy for configuring and troubleshooting on command line interface (CLI). It is easy to arrange and store those config files nicely in software repositories, thus in a versioned manner and manageable via CICD pipelines like Jenkins or gitlab.ci. Those allow for automated testing and deploying in a safe, repeatable manner.
This post is the very first in a series about managing Kubernetes environments via DevOPS methods, stay tuned and subscribe for more information.