container orchestration: which conductor?

45
Container Orchestration: Which Conductor? ContainerCon Europe, Berlin, Oct 2016 Mike Bright, @mjbright Haikel Guemar, @hguemar Mario Loriedo, @mariolet

Upload: buithuy

Post on 13-Feb-2017

229 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Container Orchestration: Which Conductor?

ContainerOrchestration:WhichConductor?

ContainerConEurope,Berlin,Oct2016

MikeBright, @mjbright

HaikelGuemar, @hguemar

MarioLoriedo, @mariolet

Page 2: Container Orchestration: Which Conductor?

First...Alittlebitofhistory

Page 3: Container Orchestration: Which Conductor?

Solet'sfirstlookatrecentcontainerhistory...

Unix

con

tain

ers,

Unik

erne

lsLi

nux

cont

aine

rs(L

XC),

Mes

osLX

C(C

loud

Foun

dry,

Dot

Clou

dPa

aS)

Dock

er

Cont

aine

rOrc

hest

ratio

nOp

tions

PaaS

ado

ptio

nso

fDoc

ker

Dock

er"S

war

mm

ode"

,OCI

D...

Mic

ro-O

Ses,

Swar

m,R

kt,L

XD

Dock

erb

uysU

nike

rnel

Sys

tem

s

...2009 2013 2014 2016...2015

@hguemar@mjbright@mariolet

Page 4: Container Orchestration: Which Conductor?

History μ-OSesManyvendorsaredevelopingμ-OSes,smallOS(mainlyLinux-based)tobethebasisforcontainerenginehostswhethertheybebare-metalorvirtualhostmachines.

They'resmall,withfaststartup,usefewresourcesandhaveasmallattacksurfaceandoften"atomic"softwareupdates.

OS VendorCoreOS - (CoreOS)ProjectAtomic - (RedHat)RancherOS - (RancherLabs)Photon - (VMWare)NanoServerOS - (Microsoft)UbuntuSnappyCore - (Canonical)

...Unikernels

Page 5: Container Orchestration: Which Conductor?

μ-Services

Page 6: Container Orchestration: Which Conductor?

μ-services Frommonolithstoμ-services

Rememberwhenhighavailabilitymeantthis...?

Active StandbyAppApp

ServersrunningmonolithicapplicationsinActive-Standbymodes,as1+1,N+1,orN+Morsplitacross3tiers.

Scalingmeantto"scaleup"byaddingCPU,RAM,disk.Butthere'salimittothis...thenyouhaveto"scaleout"@hguemar@mjbright@mariolet

Page 7: Container Orchestration: Which Conductor?

μ-services Frommonolithstoμ-services

Thencameμ-services..

Astheindustrymovedtovirtualizedmicro-servicesthisallowedtoobtaingreaterefficiencies(higherutilisationofresources)andtheredesignofapplicationsallowstoscaleoutandachievehighavailability.

Containersfacilitatethismove,allowingfasterscalingandevengreaterefficiencieswithlessredundancy(noOStoreproduce).

@hguemar@mjbright@mariolet

Page 8: Container Orchestration: Which Conductor?

μ-services Howcontainershelp?

ContainersolutionssuchasDockergobeyondtheisolationcapabilitiesofLXCbyprovidingsimpletousetoolstoenablepackagingofappswiththeirdependenciesallowingportableapplicationsbetweensystems.

Containersarelightweight

Versionedimagescontainingalldependanciescanbeshared

Containersallowtousethesameapplicationbinariesondevelopment,testandproductionsystemswhetherthatbeonalaptop,serverorinthecloud.

It'sanobrainerfordevelopers,whocanbuildandsharetheirownimages

@hguemar@mjbright@mariolet

Page 9: Container Orchestration: Which Conductor?

μ-services Frommonolithstoμ-services

But1000'sofnodesareunmanageable...aren'tthey?

Wecan'ttakecareofour

,

sowehavetotreatthemlike

that'scloudnative!

@hguemar@mjbright@mariolet

Page 10: Container Orchestration: Which Conductor?

Soweneedcontainerorchestration

Page 11: Container Orchestration: Which Conductor?

OrchestrationWhatwasContainerOrchestrationagain?

Architecture-Composition&StitchingWorkflows&Policiesto

Scalein/out(maybeautomatically)Placeworkloadsfor

loadbalancing,faulttolerance,resourceoptimization

Adapttofaults

....

....

Master

Worker Worker Worker

....App1 AppNDistrib

Cluster

Config

(quorum)

Master Master

WorkerTasks:

Page 12: Container Orchestration: Which Conductor?

OrchestrationGettingto"DesiredState"Tomanage100's,1000's,10,000'sofnodesweneedtoexpress"desiredstate"ratherthan"dothis".

Imperative DeclarativeTellsystem Dothis desiredstate

"startanewnode" "3mysqlnodes".

Intelligence Operator OrchestrationEngine.

Flexibility Best Least.

Itisnotlongerfeasibleforanoperatorto

knowtheresourcesavailable(e.g.SSD/HDD,GPU,...)reacttofailure,knowwhentoscale...

@hguemar@mjbright@mariolet

Page 13: Container Orchestration: Which Conductor?

Choiceisgreat-whenyouknowwhatyouwant...

Page 14: Container Orchestration: Which Conductor?

Orchestration

TheBig3-MainOrchestrationChoices

DockerSwarm("SwarmMode")

ApacheMesos

Kubernetes

Page 15: Container Orchestration: Which Conductor?

Orchestration

TheBig3-MainOrchestrationChoices

DockerSwarm("SwarmMode")

ApacheMesos

Kubernetes

...moreChoices...

Rancher(RancherLabs)

Fleet(CoreOS)

Nomad(HashiCorp)

Kontena

OpenStackMagnum@hguemar@mjbright@mariolet

Page 16: Container Orchestration: Which Conductor?

OrchestrationTheBig3-WhatdoesGoogleTrendssay?

ClearlyKuberneteshasaleadinGoogle"searchtrends"

Butwecanexpect"DockerSwarm"tomakequickprogressthankstothenew"swarmmode"

Page 17: Container Orchestration: Which Conductor?

DockerSwarm

Page 18: Container Orchestration: Which Conductor?

DockerSwarm

Dec2014 ...DockerSwarmisannounced

OrchestrationusingDockerCompose

Jun2016 ... SwarmToolkitreleasedOpenSourceOrchestrationToolkit

Jun2016 ... SwarmModeannouncedOrchestrationintegratedintoDockerEngine

Docker1.12isthefirstreleasetointegrate"SwarmMode"TheoriginalDockerSwarmismaintainedforlegacyuse.

"SwarmMode"isarevolutionbringing:

OrchestrationdirectlyintheDockerEngineAdvancednetworkingfeatures

meshnetwork,vxlanLoadbalancingServiceDiscoveryDockertraditionaleaseofuse

docker.com @hguemar@mjbright@mariolet

Page 19: Container Orchestration: Which Conductor?

DockerSwarm

Architecture

....

....

Master

Worker Worker Worker

....App1 AppN DistribClusterConfig(quorum)

Master Master

WorkerTasks:

GossipNetwork

DockerEngine DockerEngine DockerEngine DockerEngine

gRPC

docker.com @hguemar@mjbright@mariolet

Page 20: Container Orchestration: Which Conductor?

DockerSwarm

UsingDocker"SwarmMode"Createanewswarmbycreatingthemasternode:

$dockerswarminit--advertise-addr192.168.2.100Swarminitialized:currentnode(dxn1zf6l61qsb1josjja83ngz)isnowamanager.

JoinanewWorkernodetotheswarm:

$dockerswarmjoin--tokenTOKEN192.168.2.100:2377

JoinanewMasternodetotheswarm:

$dockerswarmjoin-tokenmanager

docker.com @hguemar@mjbright@mariolet

Page 21: Container Orchestration: Which Conductor?

DockerSwarmDemo

Page 22: Container Orchestration: Which Conductor?

DockerSwarm

DockerSwarmDemoCreationofa3nodecluster

Runaserviceontheclusterandscaleitto3replicas

Makearollingupdateoftheservice

Drainanodeofthecluster

docker.com @hguemar@mjbright@mariolet

Page 23: Container Orchestration: Which Conductor?

DockerSwarm

Gettingstarted

BrunoCornecs'Docker101LabNewtoDocker?Cometohttp://sched.co/7oHf

Docker101Lab,9am-Friday7thOctober

https://github.com/bcornec/Labs/tree/master/Docker

Followedby..

JeromePetazzoni'sOrchestrationWorkshopormoreadvanced?Cometohttp://sched.co/7oHx

OrchestratingContainersinProductionatScalewithDockerSwarm,Friday7thOctober

https://github.com/jpetazzo/orchestration-workshop

docker.com @hguemar@mjbright@mariolet

Page 24: Container Orchestration: Which Conductor?

Kubernetes

FromtheGreek:"Steersman,helmsman,sailingmaster"

Page 25: Container Orchestration: Which Conductor?

Kubernetes

Googlecreatedbasedonextensiveexperiencerunningcontainersinternally~billionsofcontainersayear

StartedOct2014,reachedv1.0inJuly2015,nowatv1.4

ManagedbytheCloudNativeComputingFoundationhttps://cncf.io/

CommercialofferingsfromCoreOS(Tectonic)andCanonical

Integratedin:

GKE(GoogleContainerEngine)OpenStackaboveKubernetes

Stackanetes(CoreOS,usesTectonic)SelfhealingOpenStackdemo

Mirantis(OpenStackCI/CDbasedonKolla)VariousPaaS:

RedHatOpenShiftCPHPEStackatov.40Deis

kubernetes.io @hguemar@mjbright@mariolet

Page 26: Container Orchestration: Which Conductor?

Kubernetes

Architecture

....

....

Master

Worker Worker Worker

....App1 AppN etcd

Master Master

WorkerPods: 192.168.100.10

ServicesLabels,Selectors

kubernetes.io @hguemar@mjbright@mariolet

Page 27: Container Orchestration: Which Conductor?

ApacheMesos

Page 28: Container Orchestration: Which Conductor?

ApacheMesos

Themostprovenorchestratortoday,existssince2009.

Canscaleto~10,000nodes.

Usedinproductionby:

UberTwitterPaypalHubspotAirbnbeBayGrouponNetflix

SupportsContainerizerstoisolatetasks

mesos.apache.org

Page 29: Container Orchestration: Which Conductor?

ApacheMesos

Architecture

....

....

Master

Worker(agent)

....Spark AppNDistrib

Cluster

Config

(quorum)

Master Master

WorkerTasks:

ResourcesAvailable

Scheduler

SparkExecutor SparkExecutor Executor

Offer

AcceptRegister

Worker(agent) Worker(agent)

mesos.apache.org

Page 30: Container Orchestration: Which Conductor?

ApacheMesos

MesosisusedinconjunctionwithFrameworkssuchas

Forlongrunningtasks:

Marathon(Mesosphere),AuroraorSingularity

Forjoborchestration:

Chronos"cron",Jenkins

ForBigDataProcessing:

Hadoop,Spark,StormCassandra,ElasticSearch,...

mesos.apache.org@hguemar@mjbright@mariolet

Page 31: Container Orchestration: Which Conductor?

Soisn'tittimewetoldyouwhattochoose?

...let'sjustcomparethem...

Page 32: Container Orchestration: Which Conductor?

What'scommon

DockerSwarmandKubernetesarecreatingrichOrchestrationstackswithintegratedruntimes.

They'removingincrediblyquicky...

Theyareaddingfeaturessuchasnetworkingcapabilities,loadbalancing,services,labels.

Theyhaveamore'declarative'approach

Theysupportorarelookingtosupportdifferentruntimeengines(*)

@hguemar@mjbright@mariolet

Page 33: Container Orchestration: Which Conductor?

Whatadvantages?Docker"Swarm

Mode"Simpletouse(despiteunderlyingcomplexity)

All-in-onecontainerengineplusorchestration

UsesDockerAPIandfamiliardockercommands

Advancednetworking

-meshnetworking-LoadBalancingandServiceDiscovery

Replication

@hguemar@mjbright@mariolet

Page 34: Container Orchestration: Which Conductor?

Whatadvantages?Kubernetes

Richconceptualmodel

Podsasgroupingsofcontainers

LabelsandSelectors(forallcomponents)

Largeecosystem

Networking

-LoadBalancingandServiceDiscovery

Replication

@hguemar@mjbright@mariolet

Page 35: Container Orchestration: Which Conductor?

Whatadvantages?ApacheMesos

Mostmature

Battletestedbymanyserviceproviders

Scalesto10,000nodes

DataCenterOS-appearsas1resource

Notjustcontainers

Manyframeworksavailable

Difficultramp-up

@hguemar@mjbright@mariolet

Page 36: Container Orchestration: Which Conductor?

Handson...

@hguemar@mjbright@mariolet

Page 37: Container Orchestration: Which Conductor?

Hands-on Comealong

Thisafternoon'stutorialsessionledbyMario:Tuesday,October4-15:30-16:20

5Containersfor5Languages:PatternsforSoftwareDevelopmentUsingContainers-MarioLoriedo,RedHat

Tomorrow'slabsessionledbyHaikel:Wednesday,October5-11:00-12:50

ContainerOrchestrationLab:Swarm,Mesos,Kubernetes-HaïkelGuémar,FedoraProject

Labsetupinstructionshere

DockerSwarmKubernetesApacheMesos

@hguemar@mjbright@mariolet

Page 38: Container Orchestration: Which Conductor?

Questions?Thankyou

@hguemar@mjbright@mariolet

Page 39: Container Orchestration: Which Conductor?

Resources

@hguemar@mjbright@mariolet

Page 40: Container Orchestration: Which Conductor?

ResourcesBooksPublisher Title AuthorOReilly DockerCookbook SébastienGoasguen

OReilly DockerUp&Running

KarlMatthias,SeanP.Kane

OReilly UsingDocker AdrianMouat

OReilly[EarlyAccess]KubernetesUp&Running

KelseyHightower

Manning [MEAP]CoreOSinAction MattBailey

Manning [MEAP]KubernetesinAction MarkoLukša

@hguemar@mjbright@mariolet

Page 41: Container Orchestration: Which Conductor?

ResourcesArticles/OrganismsCloudNativeComputingFoundation-Kubernetes,Prometheushttps://cncf.io/

"KubernetestheHardWay,KelseyHightower"-https://github.com/kelseyhightower/kubernetes-the-hard-way

"KubernetesUserGuide,Walkthrought"-http://kubernetes.io/docs/user-guide/walkthrough/

@hguemar@mjbright@mariolet

Page 42: Container Orchestration: Which Conductor?

ResourcesVideosJune2016-ContainerOrchestrationWars,KarlIsenberg,Mesosphere

Mar2016-ContainerOrchestrationwithKubernetes,DockerSwarm&Mesos-Marathon-AdrianMouat,ContainerSolutions

Jan2016-Docker,Kubernetes,andMesos:Compared.,,AdrianOtto,SouthernCaliforniaLinuxExpo

Repos

@hguemar@mjbright@mariolet

Page 43: Container Orchestration: Which Conductor?

Kubernetes

DocumentationGettingstartedguides

CreatingaKubernetesClusterportKubernetestoanewenvironment

inGettingStartedfromScratchUserdocumentation

torunprogramsonanexistingKubernetescluster

KubernetesUserGuide:ManagingApplications

theKubectlCommandLineInterfaceisadetailedreferenceonthekubectlCLIUserFAQ

kubernetes.io @hguemar@mjbright@mariolet

Page 44: Container Orchestration: Which Conductor?

Kubernetes

Documentation-2

ClusteradministratordocumentationforpeoplewhowanttocreateaKubernetesclusterandadministeritintheKubernetesClusterAdminGuide

DeveloperandAPIdocumentationtowriteprogramsusingtheKubernetesAPI,writepluginsorextensions,ormodifycorecodeKubernetesDeveloperGuidenotesontheAPIAPIobjectdocumentation,adetaileddescriptionofallfieldsfoundinthecoreAPIobjects

Walkthroughsandexampleshands-onintroductionandexampleconfigfilesintheuserguideinthedocs/examplesdirectory

ContributionsfromtheKubernetescommunity

inthedocs/contribdirectory

kubernetes.io @hguemar@mjbright@mariolet

Page 45: Container Orchestration: Which Conductor?

Kubernetes

Documentation3Designdocumentationanddesignproposals

tounderstandthedesignofKubernetes,andfeatureproposalsKubernetesDesignOverviewandthedocs/designdirectorydocs/proposalsdirectory

Wiki/FAQthewikitroubleshootingguide

Community,discussion,contribution,andsupport

ConsiderjoiningtheCloudNativeComputingFoundation.Fordetailsaboutwho'sinvolvedandhowKubernetesplaysarole,readtheirannouncement.

kubernetes.io @hguemar@mjbright@mariolet