As a network engineer why should I care about what the Dev’s are doing with Kubernetes (K8), isn’t it just another service which will consume the network? Just another app on the network?
The answer to these questions are both yes and no! After recent involvement in a project which had Kubernetes at the heart of it I was intrigued to learn what it is and what, if any, part a network engineer could play in the world of Kubernetes. This has lead me to writing up this post which I hope to cover what Kubernetes is, what containers are and the places I went to skill up on these. In a follow-up post I will go through the different components that build a Kubernetes cluster within cloud environment.
What is Kubernetes? Kubernetes is an orchestration/management platform to help with deploying, scaling, and operations of a container environment for your application to run. Kubernetes was originally built by Google and was given to the open source community to continue its development.
What is a container? “A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings.” The previous line was taken from the Docker website. Docker is one of the leading players in the container world and the one I have come across mostly when talking with developers. The other container name I hear come up more often now is Rocket (rkt) which is developed by CoreOS.
As I have mentioned already I am a network engineer by trade but looking at Kubernetes and containers meant I had to change how I viewed the world. I had to think a little more like a developer. This is no easy task! Automation, development pipelines and no ties to physical or virtual infrastructure. These are not something a network engineer has to deal with in the day to day running of a network, “packet enters this interface and will leave this interface” – if only a network engineers job was that easy :). To help with my transition to this mindset I began reading over some books on Packtpub. Being a network engineer I was drawn to the networking books first, Docker Networking Cookbook & Learning Docker Networking. I also watched over the Beginning Docker videos which are short easy to mange videos. After studying over these videos and books I now had a sense of what Docker containers are solving with the application but also seeing how managing a large deployment of containers could/can become very tricky. Seeing this for myself now I could see why Kubernetes could be like the Holy Grail for Developers!
To start looking at Kubernetes I began by looking over the Kubernetes website and reading through the tutorials. Again, coming at this with the mindset of a network engineer most, if not all the topics needed more than one viewing. After completing these tutorials, I returned to Packtpub and read through Getting Started with Kubernetes. I found this book very helpful but did feel it was a bit outdated in places as some kubeclt commands which the book references have been renamed in the later versions of Kubernetes. After completing this book I then progressed to the free Udacity course Scalable Microservices with Kubernetes. For me this course brought everything together, from the Docker/container learning to building a Kubernetes cluster.
I will cover Flannel & Calico along with the different components that make up a Kubernetes cluster, Worker Node, PODs, Kube Proxy, to name a few right now in more detail in my next posts. Hopefully the information in this post will help you to find the right resources that will help you in your discussions about containers & Kubernetes with your Dev team and for you to get started on understanding what Kubernetes is all about.
Thanks for reading