Alternatives to Kubernetes

Kubernetes manages containerized applications. These were other tools people reached for at the time.

Docker Swarm

Native clustering for Docker. It turns a pool of Docker hosts into one virtual Docker host. Because Swarm serves the standard Docker API, a tool that already talks to a Docker daemon can use Swarm to scale across hosts. Tools that fit that pattern included the Docker client, Dokku, Docker Compose, Docker Machine, and Jenkins. Docker Swarm overview

Apache Mesos

A platform for fine-grained resource sharing in the data center. Introduction

Nomad

Manages a cluster of machines and runs applications on them. You declare what you want to run. Nomad decides where and how. Nomad introduction

Marathon

A framework for orchestrating containers. Marathon introduction

Written in December 2017, and left as a record of that moment. Newer writing here is on VMware Cloud Foundation, Avi, and NSX.

High-level architecture of Kubernetes

A functioning cluster needed six components:

  1. API server
  2. Scheduler
  3. Controller manager
  4. kubelet
  5. kube-proxy
  6. etcd

Each one could run as a normal Linux process, or inside a container.

Control plane

The master ran the API server, the scheduler, and the controller manager. It could be set up as multi-master. The scheduler and the controller manager elect a leader. The API servers can sit behind a load balancer.

The API server exposes a REST interface to Kubernetes resources and is configurable. The scheduler places containers on nodes using policies, metrics, and resource requests, and it can be tuned with command-line flags. The controller manager reconciles the cluster’s actual state with the desired state from the API. It is a control loop, and it is configurable too.

Workers

Every worker ran kubelet, kube-proxy, and the Docker engine. kubelet talked to Docker and kept the containers that should be running actually running. kube-proxy handled network connectivity to those containers.

The post also pointed at rkt as an alternative to the Docker engine: rkt getting started guide.

The diagram was from a Kubernetes training slide by @wattsteve.

Written in December 2017. Newer writing here is on VMware Cloud Foundation, Avi, and NSX.