Container Orchestration
Timo Derstappen @teemow
Giant Swarm
● PaaS for Simple Service Orchestration
● Based in Cologne
● Hiring Devs and DevOps
http://giantswarm.io
The Beginning
● Containers are not that new
● But Docker solved packaging and
distribution very well
● Standardization: libcontainer
● Open Source ecosystem is growing
Why Containers?
● SOA / Microservice Architectures
● Polyglot Persistence
● Fault tolerance / High Availability
● Scalability
● Utilization
Why Orchestration?
Orchestration Layer
● Schedule Containers
● Configuration Management
● Service Discovery
● Logging / Monitoring / Alerting
Many Choices
● CoreOS
● Kubernetes (Google)
● Apache Mesos (Twitter, Airbnb)
● Consul (Hashicorp)
● Project Atomic (Redhat)
Docker libswarm
● Primitives of container orchestration
● With adaptors to actual implementations
● Docker Remote API abstraction
● Will be probably rewritten a view times
before it will be released
Datacenter
Static Partitioning
Static Partitioning
http://cto.vmware.com/wp-content/uploads/2012/10/mesos_workloads.png
One Single Computer
Schedulers (High level)
● Google Borg (Monolithic)
● Apache Mesos (Two Level)
● Hadoop on Demand (Two Level)
● Google Omega (Shared State)
Read: “Omega: flexible, scalable schedulers for
large compute clusters”
http://research.google.com/pubs/pub41684.html
Mesos
● Primitives for distributed scheduling
● Meta Scheduler
● Writing your own scheduler is “easy”
● Mesosphere announced Kubernetes on
Mesos
Mesos Apps
Schedulers
● Mesos => Marathon/Aurora/Chronos/...
● Kubernetes (not Omega)
● CoreOS => Fleet
Consistent Cluster State
● Etcd (Raft)
● Consul (Raft)
● Doozer (Paxos)
● Zookeeper (Paxos)
● Spanner (Paxos)
http://raftconsensus.github.io/
Service Discovery
● Ambassador Pattern
● Consul
● Etcd
● Haproxy / confd
Ambassador
Pattern
Plan 9
Docker libchan
● Link containers from everywhere
● Unix Socket
● HTTP2 / TLS
● Messaging / Raw TCP
● Like Go Channels over the network
● Keep it outside of your containers
● Run it in separate but privileged containers
● Marathon /metrics
● cAdvisor
Monitoring / Logging
Mesos - Marathon
● Framework for long running processes
● Like init for a cluster
● Constraints
● Health Checks
● “Service Discovery” / Load balancing
● REST API
Demo
Kubernetes Design
Kubernetes Concepts
● Pods
○ A group of containers on the same host
○ They share the same network namespace
○ Eg. presence, ambassador, logging, monitoring,
caching, configuring sidekicks
● Labels
● Service
● Replication Controller
Kubernetes Master
● Apiserver
○ REST, Client kubecfg
● Controller Manager
● Scheduler
● Etcd
Kubernetes Node
● Docker
● Kubelet
○ Watches etcd or receives via HTTP a container
manifest
● cAdvisor
● Proxy
Demo
CoreOS
● Systemd / Fleet
● Etcd
● Locksmith
● Small Footprint
● Unix Philosophy
Fleet
● Systemd API for the cluster
● Simple scheduling via Metadata
● Health Check / Failover
Demo

Container orchestration