Kubernetes notes

Russell Bateman
February 2019
last update:

Kubernetes is a cluster-orchestration system. It's not the same thing, nor a competitor to Docker, but can use Docker containers. The point of Kubernetes is to build and manage distributed systems simplifying the organization and scheduling of the resulting application cluster.

Kubernetes is different from Docker Swarm, also an orchestrator for Docker, in that it's an open system whereas Docker Swarm is closed and only able to use Docker containers. Kubernetes occupies most of the market (at about 51% to Swarm's 11%). Swarm is less scalable and offers no load-balancing support except for its own, fixed-port service. Docker Swarm does not auto-scale. It's more difficult to monitor without proprietary, commercial tools. Persistent storage for application state only works with network-attached storage.

Container orchestration is crucial as soon as an application grows beyond a single service or container.

In Kubernetes, the smallest unit or building block is the pod (rather than the container). Usually, a pod hosts only a single container, but this is not a limitation.

Kubernetes offers built-in service discovery assigning unique domain names to services which are listed in etcd, flexible manifests for the deployment of applications using different strategies, canary deployment for A/B testing, built-in health checks, and a rolling-update strategy to update the service version running in pods. Rolling updates helps to save the application downtime by maintaining some (older, existing) instances while performing updates shutting down the older ones slowly.

The Illustrated Children's Guide to Kubernetes