Book Review - Kubernetes Up & Running by Kelsey Hightower #kubernetes #book
Some Kubernetes cheering!
As I have written in previous posts, when you start investigating and working with all these new and shiny container / orchestration technologies, there is a high chance that you will end up lost in translation. A lot of information, a lot technologies, a lot of dev-ops, a lot of promises a lot of complexity and a lot of simple examples which work but when you try to apply the same principles to your current project, you feel a 'paradigm mismatch'. At least this is how it seems from the my developer's point of view. The emerge of kubernetes, both as an in house (platform) or powering up the Google Container Engine, is one of the most useful and interesting research (work) I have done lately. I truly believe that is a framework/technology that is here to stay and set the standards for competing or new alternatives. I think that the adoption of kubernetes is going to increase as more major player kind of adapt or embrace it (see RedHat /OpenShift v3)
The author
During all this work and journeys with containers, I _discovered' Kelsey Hightower ( github)( @kelseyhightower), chief advocate P.O for CoreOS and highly involved with kubernetes. I really like his pragmatic approach on showing and teaching all these new things and his passion for kubernetes and CoreOS. One of the first things I consumed from his online material, is a 3 part video introducing kubernetes from installation to configuration (really worth watching).
The book
Pre-requisites
Kubernetes Up and Running, from O'Reilly, is a relative small book. It is actually one of the first reference books around kubernetes. It does not require any previous knowledge with the framework since it has a quite complete introductory chapter that covers the basic principles of the framework and why an orchestrating layer on top of plain containers in the modern containerized world of deployments is important. It would be nice though if you already have some basic understanding and experience working with container technologies, like Docker, Rkt or LXC.
Chapters
As already elaborated the the first chapter of the book covers basic ground regarding the architecture of kubernetes and basic principles behind it. The beauty of Kubernetes lies towards it's simplicity, and grasping the basic concepts is eventually a very critical point, towards using it. The first chapter is all about that.
The second chapter is a very detailed walk through on deploying kubernetes from scratch, on top of an existing cloud provider ( google cloud). The author starts from bare bones cloud vms and step by step installs all the required components needed, in order the Kubernetes infrastructure to form and start acting as a single system (layer). For people that want to actually control every aspect of the Kubernetes installation and maintenance - mostly in a local or private cloud scenario this chapter is very relevant.
The third chapter is about containers. The book goes through some basic regarding the different type of containerized applications and how they related with the concepts of kubernetes. Since kubernetes is currently using Docker as it's main container technology, this chapter includes some examples and tips regarding Docker containers.
Chapter 4, (and the last one), deep dives on the important notion of Kubernetes Pod. Which is actually one of the most important concepts of Kubernetes. The reader will be introduce to the technicalities on spawning pods containing various parts of it's application, health checking these pods, clustering (replicating them). Every single application that will be deployed in a Kubernetes enabled application will be consisted by one of more pods. Understanding the basic idea behind a pod and what kind of services kubernetes offers around them is very critical. By the end of the chapter you will get a pretty well understanding in order to start thinking in terms of Pods, Services and replication controllers.
Conclusion
In general the book (at least the early version I have now), is very solid. As I have already elaborated, if you are already familiar in a certain extend with containers, following and understanding the basic ideas and principles of Kubernetes is easy. Of course behind every abstraction there is some kind of technical complexity and eventually the engineers of Google/ CoreOS and the community have managed to hide it very well. Some of this complexity and technicalities is revealed in chapter 2, on the installation from scratch guide.
If there was something, that I would like to see in of reference book, it might be an extra chapter, with some sort of recipes. Recipes related to design and deploy simple 2 or 3 tier applications in Kubernetes. Maybe as a Java-JavaEE guy I am having some sort of regular deployment scenarios for medium to big size old school enterprise apps. Google already maintains good quality level documentation for both the standalone kubernetes and the container engine.
Handy and nice to have book, I hope the author continues to help the community towards adopting kubernetes, and I will be expecting revised version(s), since Kubernetes is already evolving, adding more services and capabilities (beyond the initial 1.0 release).
update: there are 8 more chapters coming in.