clocker - the docker cloud maker

50
Clocker The Docker Cloud Maker

Upload: andrew-kennedy

Post on 18-Jul-2015

226 views

Category:

Software


1 download

TRANSCRIPT

Clocker  The  Docker  Cloud  Maker  

Andrew  Kennedy  @grkvlt  

Clocker  The  Docker  Cloud  Maker  

@grkvlt  

Introduc/on  •  Andrew  Kennedy  –  So6ware  Engineer  – Open  Source  and  Distributed  Systems  –  github.com/grkvlt  

•  Cloudso6  Corpora/on  – Open  Source  Applica/on  Management  Specialists  – We’re  Hiring…  

@grkvlt  

Agenda  •  Overview  •  Components  •  Deep  Dive  •  Demonstra/on  •  Roadmap  

Clocker  Overview  

@grkvlt  

What  does  it  do?  

1.  Spins  up  and  Manages  Docker  Clouds  

2.  Serves  up  Containers  on  Demand  3.  Manages  Composite  Applica/on  

Deployments  on  Docker  

@grkvlt  

What  does  it  provide?  •  Mul/  Host  and  Mul/  Container  Applica/ons  •  Seamless  Networking  – Communica/on  Between  Services  

•  Orchestra/on  and  Clustering  – Control  of  Containers  – Container  Management  

@grkvlt  

Who  is  using  it?  •  Tes/ng  and  Proof  of  Concept  Stage  –  Financial  Services  –  Insurance  

•  Produc/on  – Mul/-­‐tenant  Applica/on  Trial  –  Container  per  service  –  Via  IBM  BlueMix  

@grkvlt  

Where  can  I  find  it?  •  Open  Source  •  Apache  2.0  Licensed  •  hZp://clocker.io    

•  Status  •  0.7.0  Beta  Release  •  0.8.0-­‐SNAPSHOT  Development  

Clocker  Components  

@grkvlt  

Clocker  and  Brooklyn  •  What  is  it?  – Brooklyn  Applica/on  – Brooklyn  Loca/on  

•  What  does  it  provide?  – First  Class  Docker  Support  in  Brooklyn  – Op/mized  Brooklyn  Blueprints  for  Docker  

Apache  Brooklyn  •  Apache  Brooklyn  – Open  Source  –  Java  – Donated  to  the  Apache  So6ware  Founda/on  – ASF  Incubator  Status  

@grkvlt  

Apache  Brooklyn  •  Applica/on  Management  Pla^orm  •  Deploy,  Manage  and  Monitor  Blueprints  •  Provisioning,  Installa/on  and  Customiza/on  •  Management  – AutoScaling,  Resilience,  Performance,  Security  

Apache  jclouds  •  Java  Cloud  Library  •  API  Agnos/c  – CloudStack,  OpenStack,  AWS  EC2,  GCE…  

•  Create  Virtual  Machines  – Return  SSH  Endpoint  – Manage  Proper/es  

@grkvlt  

Apache  jclouds  •  Drivers  for  REST  APIs  •  Docker  Driver  – WriZen  by  @turlinux  

•  Virtual  Container  – Using  SSH  Daemon  –  Same  Endpoint  Type  as  VM  –  Composi/on  on  any  Image  or  Dockerfile  

@grkvlt  

Docker  Networking  101  •  Separate  Container  Network  •  RFC  1918  Private  Addresses  •  Non  Routable  

•  Bridged  to  Host  •  Port  Forwarding  •  Mul/ple  Endpoints  for  Services  

Docker  Topology  

@grkvlt  

So6ware  Defined  Networking  •  Overlay  Networks  •  Kernel  or  User  Space  •  Many  Op/ons  

–  Pipework  –  SocketPlane  –  Flannel  –  Open  vSwitch  –  Weave  

Weave  Topology  

@grkvlt  

Weave  •  Ethernet  Switch  –  User  Space  –  Docker  Container  

•  Mesh  Topology  •  Routes  TCP  Traffic  –  Sniffs  on  Host  –  Forwards  over  TCP  

Weave  

Clocker  Deep  Dive  

Clocker  Architecture  

Clocker  Architecture  

@grkvlt  

Clocker  Features  •  Applica/on  Deployment  – Oasis  CAMP  YAML  Blueprint  –  TOSCA  in  Development  –  Same  as  Core  Brooklyn  

•  Mixed  Des/na/ons  –  Some  Virtual  Machines  –  Some  Bare  Metal  –  Some  Containers  

@grkvlt  

Clocker  Features  •  Docker  Extensions  –  Container  or  Image  –  Placement  Strategy  – Dockerfiles  

•  Manages  Docker  –  Cloud  Deployment  –  Configura/on  –  Run/me  Control  

@grkvlt  

Container  Management  •  Sources  –  Docker  Image  Defini/on  –  Docker  Hub  –  Dockerfile  –  Brooklyn  En/ty  Defini/on  

•  Create  Image  Automa/cally  –  Commit  or  Push  for  Reuse  

@grkvlt  

Container  Management  •  Installa/on  of  Services  – Defined  by  Brooklyn  or  Dockerfile  –  Common  to  all  En/ty  Instances  

•  Commit  Image  – Available  for  next  En/ty  

•  Push  Image  – Available  for  all  Hosts  

Container  Management  id:  dockerfile-­‐mysql  name:  "Docker  Hub  MySQL  Application"  origin:  "https://registry.hub.docker.com/_/mysql/"  locations:  -­‐  my-­‐docker-­‐cloud  services:  -­‐  serviceType:  brooklyn.entity.container.docker.application.DockerfileApplication      id:  mysql      name:  "MySQL"      brooklyn.config:          docker.dockerfile.url:              "https://s3-­‐eu-­‐west-­‐1.amazonaws.com/brooklyn-­‐clocker/mysql-­‐5.6.tgz"          docker.container.environment:              MYSQL_ROOT_PASSWORD:  "s3cr3t”  

 

@grkvlt  

Container  Placement  •  Demand  

–  Adding  an  Applica/on  –  Scaling  exis/ng  Applica/on  

•  Requirements  –  Host  Loca/on  –  Service  Resources  –  CPU,  Memory    

@grkvlt  

Container  Placement  •  Supply  – Choose  a  Host  from  available  – Create  new  Host  

•  Start  Container  –  Set  CPU  and  Memory  –  AZach  to  Network  

@grkvlt  

Container  Placement  •  Placement  Strategies  

–  Filter  Hosts  –  Sort  Hosts  

•  Informa/on  from  –  Docker  –  Underlying  Machine  –  Cloud  Environment  –  En/ty  or  Service  

@grkvlt  

Container  Placement  •  Placement  Strategies  –  Random,  Depth  or  Breadth  First  –  CPU  or  Memory  Usage  – Memory,  CPU  or  Container  Limits  –  Geographic  Constraints  

•  User  Defined  –  Java  Predicate  

Placement  Strategy  •  Determinis/c  •  Simple  – Predicate  and  Comparator  

docker.container.strategies:      -­‐  $brooklyn:object:              type:  "brooklyn.location.docker.strategy.MaxContainersPlacementStrategy”              brooklyn.config:                  maxContainers:  16      -­‐  $brooklyn:object:              type:  "brooklyn.location.docker.strategy.CpuUsagePlacementStrategy”              brooklyn.config:                  maxCpu:  0.75  

@grkvlt  

Container  Provisioning  •  Provisioning  Strategy  – New  Docker  Host  Loca/on  

•  Constraints  – Docker  Infrastructure  Constraints  –  En/ty  or  Applica/on  Constraints  

•  User  Defined  Strategies  •  Intelligent  Container  Orchestra/on  

@grkvlt  

Container  Provisioning  •  Headroom  –  Ensure  resources  available  –  Based  on  MaxContainers  strategy  limit  – Or  CPU  and  RAM  alloca/on  

•  Scale  Docker  Host  Cluster  Automa/cally    – Add  new  Docker  hosts  –  Remove  empty  Docker  hosts  

@grkvlt  

Networking  •  Shared  Weave  LAN  – Common  to  All  Containers  – Private  (Link  Local)  Addresses  

•  Clocker  Controls  IP  Alloca/on  – Applica/ons  Segmented  by  CIDR  

•  Docker  Port  Forwarding  Access  

@grkvlt  

Networking  •  Work  in  Progress  •  Name  Resolu/on  – BIND  and  DNSmasq  or  Weave  DNS  – Needed  for  JMX  et  al  – Enables  Many  More  En//es  

•  Adding  More  Supported  Blueprints  

Demonstra>on  

@grkvlt  

Roadmap  •  Latest  Docker  Feature  Support  •  Swarm  

–  Same  API  –  Can  re-­‐use  our  jclouds  Driver  

•  Machine  –  Cloud  agnos/c  provisioning  via  jclouds  already  –  Could  support  as  an  op/on  

@grkvlt  

Roadmap  •  Networking  – DNS  and  DNSmasq  Integra/on  – Rancher  Integra/on  – Open  vSwitch  Integra/on  

•  Gelng  Started  – Clocker  Dockerfile  

@grkvlt  

Roadmap  •  Repositories  –  Docker  Repository  –  Bintray,  Ar/factory,  Quay.io  –  Private  Repositories  

•  Applica/on  Defini/on  –  TOSCA  –  Fig  

@grkvlt  

Roadmap  •  Plugin  API  may  be  helpful?  •  Provide  services  to  Docker  this  way  •  Orchestra/on  •  Policies  

•  Consume  wider  range  of  services  •  Networking  

@grkvlt  

Summary  •  Clocker  –  Brooklyn  +  jclouds  +  Docker  +  Weave  +  …  – @clockercentral  

•  Solves  –  Composite  Applica/on  Management  – Docker  Cloud  Networking  –  Container  Placement  and  Provisioning  

@grkvlt  

Audience  Ques/ons?  1.  What  networking  features  would  

make  Docker  easier  to  use?  2.  What  other  features  would  be  most  

useful  to  enhance  Docker  usability?  3.  Will  you  be  tes/ng  Swarm  and  

Machine  or  would  you  prefer  an  external  orchestra/on  tool?  

@grkvlt  

Web  Resources  http://clocker.io/  http://brooklyn.io/  http://docker.io/  http://github.com/zettio/weave/  http://abstractvisitorpattern.co.uk/  https://speakerdeck.com/grkvlt/clocker-­‐the-­‐docker-­‐cloud-­‐maker    

Thanks!  Ques>ons?