Kubernetes

As I learn about Kubernetes I decided to write a series of blog posts.

When learning any new technology it is important to understand the vocabulary so you can properly understand the documentation. Also, I would like to explain some ideas I didn’t quite understand.

Definitions

Kubernetes is an open-source container-orchestration system for automating application deployment, scaling, and management. It was originally designed by Google, and is now maintained by the Cloud Native Computing Foundation.

Docker is a set of platform-as-a-service products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels.

Virtualization refers to the act of creating a virtual version of something, including virtual computer hardware platforms, storage devices, and computer network resources.

A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A Docker container image is a lightweight, standalone, executable package of software that includes everything needed to run an application: code, runtime, system tools, system libraries and settings.

Ideas

When I first started learning about containers I thought you needed to find a way to mount your code inside the container. What I failed to realize, is that you build a new container with your code as part of the image. The Docker docs say:

Avoid storing application data in your container’s writable layer…

I understood that to mean you shouldn’t keep your code in the container, but I was wrong. That, as well as not wanting all my code to be public, I thought I was required to make all my images public and that it was common practice.

To be clear, you should put your code in your container.

alt text

I also hope to include a repository of my progress to give my posts context. Then I will deploy my project to DigitalOcean’s managed Kubernetes Service, or DOKS. I prefer to call it DOKU because that is closer to Goku.

Resources