Chapter 4. Working with Kubernetes Objects
I can’t understand why people are frightened of new ideas. I’m frightened of the old ones.
John Cage
In Chapter 2, you built and deployed an application to Kubernetes. In this chapter, you’ll learn about the fundamental Kubernetes objects involved in that process: Pods, Deployments, and Services. You’ll also find out how to use the essential Helm tool to manage applications in Kubernetes.
After working through the example in “Running the Demo App”, you should have a container image running in the Kubernetes cluster, but how does that actually work? Under the hood, the kubectl run command creates a Kubernetes resource called a Deployment. So what’s that? And how does a Deployment actually run your container image?
Deployments
Think back to how you ran the demo app with Docker. The docker container run command started the container, and it ran until you killed it with docker stop.
But suppose that the container exits for some other reason: maybe the program crashed, or there was a system error, or your machine ran out of disk space, or a cosmic ray hit your CPU at the wrong moment (unlikely, but it does happen). Assuming this is a production application, that means you now have unhappy users, until someone can get to a terminal and type docker container run to start the container again.
That’s an unsatisfactory arrangement. What you really want is a kind of supervisor program that continually checks that the container is running, and, ...