Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Orchestrator
comparison
11th Docker Switzerland User Group Meetup
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
How important is orchestration and what is it for ?
- Might not need it for small apps
- No orchestration == manual orchestration
- Manually place containers, network, scale, check, update
- Microservices | Cloud Native Applications
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Design principles for Cloud Native Applications:
- Design for Performance: responsive; concurrency; efficiency
- Design for Automation: automate dev & ops tasks
- Design for Resiliency: fault-tolerant; self-healing
- Design for Elasticity: automatically scale
- Design for Delivery: short roundtrips; automated delivery
- Design for Diagnosability: cluster-wide logs, traces, metrics
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Welcome to the socks shop
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Microservice reference application
- Intended to help people get started with microservices
- Great for comparing frameworks etc
- Similar to "Pet Store"for Java
- ... or TodoMVC for JavaScript
Lots of implementations already
https://github.com/microservices-demo/microservices-demo/tree/master/dep
loy
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Architecture
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Comparing
Orchestrators
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Comparing orchestrators
- All work and are improving rapidly
- Understand the differences
- Understand your requirements
- Please don't roll your own!
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
The players
- Kubernetes
- Mesos (different workloads)
- Docker Swarm Mode
- Plus others
- Nomad, PaaSs...
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Side note - The Borg/Omega paper
- Influential papers from Google
- Lessons learnt from 10 years with containers
- Google contributed cgroups to the Linux kernel, cgroups and linux
namespaces are the heart of containers
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Docker swarm mode
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Swarm mode
- New in Docker 1.12
- Docker Inc's official solution
- Part of core distribution
- Major improvement over old Swarm
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Core components
- Manager nodes
- coordinate via Raft
- no need for separate etcd/zookeeper
- Worker nodes
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Usability
- Docker native uses concepts from single-node Docker and extends them to
the Swarm.
- If you are up to date on Docker concepts, the learning curve is fairly
gradual.
- The setup for a swarm is trivial
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Easy to install
docker swarm init
Swarm initialized: current node (10vh26gyxppo6j2vyb8rcvjwj) is now a
manager.
To add a worker to this swarm, run the following command:
docker swarm join 
--token
SWMTKN-1-5td5x39z8jw69aloe8aaqs26c9vf6nc7pzfepsq0xfmo9ldfk2-2747zp8w
0enbccrjmkt1o8du3 
172.17.9.102:2377
To add a manager to this swarm, run 'docker swarm join-token
manager' and follow the instructions.
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Secure communication by default
- TLS set up using self-signed certs
- Certificates automatically rotated
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Feature Set
- Services
- Networks
- Constraints and labels
- Support of volume drivers
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Services
- Services
- Set of containers that are launched and a certain number of
containers are kept running at all times.
- There are two types of services, replicated or global.
- Replicated services maintain a specified number of containers
across the cluster
- Global services run one instance of a container on each of your
swarm nodes.
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Networks
- You can create named overlay networks
- Using the named overlay network you can create isolated, flat, encrypted
virtual networks across your set of nodes to launch your containers into.
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
- Control which node a container can be scheduled on
- E.g:
- Only nodes labeled "staging"
- Only nodes which have the image
- Only the node running a given container (affinity)
Constraints and Filters
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Other features
- Spread scheduling
- chooses "least loaded" node
- more options later
- Mesh Networking
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Application definition
- Apps are defined in DAB can be deployed on a Swarm cluster
- Possible to scale individual containers defined in the DAB file (manual)
Testing Swarm Mode with Sock Shop:
https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/swarmk
it/start-swarmkit-services.sh
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Swarm mode advantages
- Easy to install
- Secure by default
- “Bundled with Docker”
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Swarm Mode disadvantages
- New
- Some Docker features unsupported (privileged,
- DAB still WIP
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Kubernetes
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Kubernetes
- Based on Google's experience running containers
- Bakes in various features
- Load-balancing, secret management, RBAC, …
- More opinionated
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Core concepts
- Pods
- Labels
- Services
- Deployments
- ReplicaSets
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Pods
- Groups of containers deployed and scheduled together
- Atomic unit
- Containers in a pod share IP address
- Single container pods are common
- Pods are ephemeral
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Labels
- K/V pairs attached to objects (primarily pods)
- e.g:"version: dev","tier: frontend"
- Label selectors then used to identify groups
- Used for load-balancing etc
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Services
- Stable endpoints addressed by name
- Forward traffic to pods
- Pods are selected by labels
- Round-robin load-balancing
- Separates endpoint from implementation
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Deployments & ReplicaSets
- ReplicaSets monitor status of Pods
- start/stop pods as needed
- Deployments start/create ReplicaSets
- Rollout/Rollback & Updates
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Usability
- Setting up a production grade Kubernetes-cluster from scratch requires
setting up etcd, networking plugins, DNS servers and certificate authorities.
- Will change pretty soon. kubeadm already existing
- Beyond initial setup, Kubernetes still has a steep learning curve
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Snap to install
kubeadm init
<master/tokens> generated token: "f0c861.753c505740ecde4c"
<master/pki> created keys and certificates in "/etc/kubernetes/pki"
<util/kubeconfig> created "/etc/kubernetes/kubelet.conf"
<util/kubeconfig> created "/etc/kubernetes/admin.conf"
<master/apiclient> created API client configuration
<master/apiclient> created API client, waiting for the control plane to become ready
<master/apiclient> all control plane components are healthy after 61.346626 seconds
<master/apiclient> waiting for at least one node to register and become ready
<master/apiclient> first node is ready after 4.506807 seconds
<master/discovery> created essential addon: kube-discovery
<master/addons> created essential addon: kube-proxy
<master/addons> created essential addon: kube-dns
Kubernetes master initialised successfully!
You can connect any number of nodes by running:
kubeadm join --token <token> <master-ip>
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Application Definition
- A combination of Pods, Replication Controllers, Replica Sets, Services and
Deployments
- Each application tier is defined as a pod and can be scaled when managed
by a Deployment or ReplicationController/ReplicaSet. The scaling can be
manual or automated
- Auto-scaling using a simple number-of-pods target is defined declaratively
with the API exposed by ReplicationControllers or ReplicaSets
Testing kubernetes with Sock Shop:
https://github.com/microservices-demo/microservices-demo/blob/master/dep
loy/kubernetes/complete-demo.yaml
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Kubernetes Advantages
- Snap to install
- Currently limited to a single master installation
- Currently limited to a single etcd installation
- Advanced features baked-in
- Lot of momentum behind the community
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Kubernetes disadvantages
- Harder to get started
- Extra concepts
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_
Conclusion
- Different options with different strengths
- In some ways surprisingly similar (k8s deployment | Swarm service)
- Hard to predict a winner
- All are much better than rolling-your-own
Docker Meetup | container-solutions.com | info@container-solutions.com | @michmueller_

11thDockerMeetupSwitzerland

  • 1.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Orchestrator comparison 11th Docker Switzerland User Group Meetup
  • 2.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ How important is orchestration and what is it for ? - Might not need it for small apps - No orchestration == manual orchestration - Manually place containers, network, scale, check, update - Microservices | Cloud Native Applications
  • 3.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Design principles for Cloud Native Applications: - Design for Performance: responsive; concurrency; efficiency - Design for Automation: automate dev & ops tasks - Design for Resiliency: fault-tolerant; self-healing - Design for Elasticity: automatically scale - Design for Delivery: short roundtrips; automated delivery - Design for Diagnosability: cluster-wide logs, traces, metrics
  • 4.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Welcome to the socks shop
  • 5.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Microservice reference application - Intended to help people get started with microservices - Great for comparing frameworks etc - Similar to "Pet Store"for Java - ... or TodoMVC for JavaScript Lots of implementations already https://github.com/microservices-demo/microservices-demo/tree/master/dep loy
  • 6.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Architecture
  • 7.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Comparing Orchestrators
  • 8.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Comparing orchestrators - All work and are improving rapidly - Understand the differences - Understand your requirements - Please don't roll your own!
  • 9.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ The players - Kubernetes - Mesos (different workloads) - Docker Swarm Mode - Plus others - Nomad, PaaSs...
  • 10.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Side note - The Borg/Omega paper - Influential papers from Google - Lessons learnt from 10 years with containers - Google contributed cgroups to the Linux kernel, cgroups and linux namespaces are the heart of containers
  • 11.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Docker swarm mode
  • 12.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Swarm mode - New in Docker 1.12 - Docker Inc's official solution - Part of core distribution - Major improvement over old Swarm
  • 13.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Core components - Manager nodes - coordinate via Raft - no need for separate etcd/zookeeper - Worker nodes
  • 14.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Usability - Docker native uses concepts from single-node Docker and extends them to the Swarm. - If you are up to date on Docker concepts, the learning curve is fairly gradual. - The setup for a swarm is trivial
  • 15.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Easy to install docker swarm init Swarm initialized: current node (10vh26gyxppo6j2vyb8rcvjwj) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-5td5x39z8jw69aloe8aaqs26c9vf6nc7pzfepsq0xfmo9ldfk2-2747zp8w 0enbccrjmkt1o8du3 172.17.9.102:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
  • 16.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Secure communication by default - TLS set up using self-signed certs - Certificates automatically rotated
  • 17.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Feature Set - Services - Networks - Constraints and labels - Support of volume drivers
  • 18.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Services - Services - Set of containers that are launched and a certain number of containers are kept running at all times. - There are two types of services, replicated or global. - Replicated services maintain a specified number of containers across the cluster - Global services run one instance of a container on each of your swarm nodes.
  • 19.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Networks - You can create named overlay networks - Using the named overlay network you can create isolated, flat, encrypted virtual networks across your set of nodes to launch your containers into.
  • 20.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ - Control which node a container can be scheduled on - E.g: - Only nodes labeled "staging" - Only nodes which have the image - Only the node running a given container (affinity) Constraints and Filters
  • 21.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Other features - Spread scheduling - chooses "least loaded" node - more options later - Mesh Networking
  • 22.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Application definition - Apps are defined in DAB can be deployed on a Swarm cluster - Possible to scale individual containers defined in the DAB file (manual) Testing Swarm Mode with Sock Shop: https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/swarmk it/start-swarmkit-services.sh
  • 23.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Swarm mode advantages - Easy to install - Secure by default - “Bundled with Docker”
  • 24.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Swarm Mode disadvantages - New - Some Docker features unsupported (privileged, - DAB still WIP
  • 25.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Kubernetes
  • 26.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Kubernetes - Based on Google's experience running containers - Bakes in various features - Load-balancing, secret management, RBAC, … - More opinionated
  • 27.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Core concepts - Pods - Labels - Services - Deployments - ReplicaSets
  • 28.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Pods - Groups of containers deployed and scheduled together - Atomic unit - Containers in a pod share IP address - Single container pods are common - Pods are ephemeral
  • 29.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Labels - K/V pairs attached to objects (primarily pods) - e.g:"version: dev","tier: frontend" - Label selectors then used to identify groups - Used for load-balancing etc
  • 30.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Services - Stable endpoints addressed by name - Forward traffic to pods - Pods are selected by labels - Round-robin load-balancing - Separates endpoint from implementation
  • 31.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Deployments & ReplicaSets - ReplicaSets monitor status of Pods - start/stop pods as needed - Deployments start/create ReplicaSets - Rollout/Rollback & Updates
  • 32.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Usability - Setting up a production grade Kubernetes-cluster from scratch requires setting up etcd, networking plugins, DNS servers and certificate authorities. - Will change pretty soon. kubeadm already existing - Beyond initial setup, Kubernetes still has a steep learning curve
  • 33.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Snap to install kubeadm init <master/tokens> generated token: "f0c861.753c505740ecde4c" <master/pki> created keys and certificates in "/etc/kubernetes/pki" <util/kubeconfig> created "/etc/kubernetes/kubelet.conf" <util/kubeconfig> created "/etc/kubernetes/admin.conf" <master/apiclient> created API client configuration <master/apiclient> created API client, waiting for the control plane to become ready <master/apiclient> all control plane components are healthy after 61.346626 seconds <master/apiclient> waiting for at least one node to register and become ready <master/apiclient> first node is ready after 4.506807 seconds <master/discovery> created essential addon: kube-discovery <master/addons> created essential addon: kube-proxy <master/addons> created essential addon: kube-dns Kubernetes master initialised successfully! You can connect any number of nodes by running: kubeadm join --token <token> <master-ip>
  • 34.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Application Definition - A combination of Pods, Replication Controllers, Replica Sets, Services and Deployments - Each application tier is defined as a pod and can be scaled when managed by a Deployment or ReplicationController/ReplicaSet. The scaling can be manual or automated - Auto-scaling using a simple number-of-pods target is defined declaratively with the API exposed by ReplicationControllers or ReplicaSets Testing kubernetes with Sock Shop: https://github.com/microservices-demo/microservices-demo/blob/master/dep loy/kubernetes/complete-demo.yaml
  • 35.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Kubernetes Advantages - Snap to install - Currently limited to a single master installation - Currently limited to a single etcd installation - Advanced features baked-in - Lot of momentum behind the community
  • 36.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Kubernetes disadvantages - Harder to get started - Extra concepts
  • 37.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_ Conclusion - Different options with different strengths - In some ways surprisingly similar (k8s deployment | Swarm service) - Hard to predict a winner - All are much better than rolling-your-own
  • 38.
    Docker Meetup |container-solutions.com | info@container-solutions.com | @michmueller_