Container orchestration: the cold war - Giulio De Donato - Codemotion Rome 2017
-
Upload
codemotion -
Category
Technology
-
view
26 -
download
0
Transcript of Container orchestration: the cold war - Giulio De Donato - Codemotion Rome 2017
Container orchestrations:
the cold war
Giulio De Donato @liuggio
Orchestration
Todays path
devops
Container
orchestrators principles
A Comparison THE BEST CONTAINER ORCHESTRATOR
And
how to make easy money
Talks end here
devops
Riusciamo a dare una definizione di devops?
Devops dev and ops
Riusciamo a dare una definizione di devops?
devops
Riusciamo a dare una definizione di devops?
non c una risposta definitiva, cisno molte opinioni su cosa c sotto
il tetto del devops e cosa no. una cultura? una job title? un modo
di organizzarsi o solo un modo di pensare,Possiamo anche pensare ad
un movimento che sia in evoluzione, quindi non fermiamoci troppo
nel dare una defizione adesso, Invece possiamo parlare di temi
comuni, strumenti e idee.Nato con lidea di migliorare il service
delivery agility, il devops enfatizza la comunicazione, la
collaborazione e lintegrazione tra software developer e IT
operations. Piu che guardare questi in silos separati e paralleli,
il DevOps riconosce che linterdipendenza del software dev e IT
operation e aiuta una organizzazione al fine di renderA perfect
storm of converging adjacent methodology including Agile,
Operations Management (Systems Thinking & Dynamics), Theory of
Constraints, LEAN and IT Service management came together in 2009
through a smattering of conferences, talks and Twitter (#devops)
debates worldwide that eventually became the philosophy behind
DevOps.Agile software development paved the way, steering away from
the waterfall method of software development toward a continuous
development cycle. Ma senza includere le operation side so while
development could be continuous, deployment was still
waterfall-oriented.In a DevOps environment, cross functionality,
shared responsibilities and trust are promoted. DevOps essentially
extends the continuous development goals of the Agile movement to
continuous integration and release. In order to accommodate
continuous releases, DevOps encourages automation of the change,
configuration and release processes.
devops is about dev and ops
devops is from to .
Certo idea money suonava male
Devops misconceptions
DEVOPS is not a verbDevops non descrive chi seiDEVOPS is not the
new OPSDEVOPS is not the new OPS with jenkins skillDEVOPS is
not
a pipelineDEVOPS is not
a new SIlos teamDEVOPS is not
about toolsDevOps mean giving developers the root password
New brain :)
Ok ci siamo puliti un po il cervello da alcuni concetti che Ora prendete tutti questi concetti e buttateli via perche si parla di orchestratoriiiuuiiiiii
Container
Orchestration
Once upon a time
MAINFRAIME
Ecco a voi il server Veniva dato un nome al server, veniva
installato UNA volta a mano veniva assunta una persona Le epoche
passavano e cosa succede niente la persona invecchia
Once upon a time
The old school:
Sostituibilit no Resilience no Scaling solo manualeMantenimento
solo manuale
Ecco a voi il server Veniva dato un nome al server, veniva installato UNA volta a mano veniva assunta una persona Le epoche passavano e cosa succede niente la persona invecchia
The evolution
..
Separation of concerns
Lot of containers
Nodes
Separiamo i concetti di nodo quindi macchina da containersQuindi i nodi macchineI container piccoli oggetti che giraano su un determinato kernelE il container runtime che un demone che serve a far girare i container.
Non poi proprio cos tecnicamnete potremmo andare ancora ad affettare pensando a macchine di computazioni, volumi e reti ma non compichiamo le cose...
Separation of concerns
Computation and Resources
Containers
Separiamo i concetti di nodo quindi macchina da containersQuindi i nodi macchineI container piccoli oggetti che giraano su un determinato kernelE il container runtime che un demone che serve a far girare i container.
Non poi proprio cos tecnicamnete potremmo andare ancora ad affettare pensando a macchine di computazioni, volumi e reti ma non compichiamo le cose...
This APP should be replicated at least 3 times.
The APP should communicate over
An overlay network called backend.
The Simple Containers Needs
APP (nginx)This APP need 3Gb Ram, 1 core, 20GB of SSD.
The APP must be load-balanced internally on 9000,
and health-checked on port 80 load-balanced.
All of the logs of my AP should go there.APP (nginx)APP
(nginx)809000
Definizione per un orchestratore dichiarativa
Container Orchestration duties
IMAGE BUILD
IMAGE PUSH
IMAGE REGISTRY
KNOW WHEN DEPLOY NEW VERSION
DEPLOY
...
NODefinizione per un orchestratore dichiarativa
Container Orchestration
Application Development lifecycleSource repo, CI, Artifact
repository
Container lifecycle
Container builder, Image repository
Container Orchestration
Scheduling, Resource management, Service management
Day 2 Operations
Debugging, Monitoring
SUPER-DASHBOARD?
NO
Definizione per un orchestratore dichiarativa
Container Orchestration duties
Karl di mesosphere: https://www.youtube.com/watch?v=C_u4_l84ED8Definizione per un orchestratore dichiarativa
Orchestration
Role 1 - the script
Role 2 - the masters
Role 3 - the workersNellimmagine non ci sono i container, i workers sono agenti nei nodi che muovono i container.
Orchestrations
the script
the master nodesthe agents nodethe orchestrator agentsthe container daemonsthe containers
The orchestrator managers
Distributed key value store
the script
the master nodesthe agents nodethe orchestrator agentsthe container daemonsthe containers
The orchestrator managers
Chi abituato a programmare nello sviluppo con docker cosa abituato ad usare?
SIMPLE NEEDS
CONTAINER ORCHESTRATIONS
IS ABOUT
SIMPLE NEEDS
Definizione per un orchestratore dichiarativa
BAD NEWS
CONTAINER ORCHESTRATIONS
IS ABOUT
DISTRIBUTED COMPUTING
Definizione per un orchestratore dichiarativa
BAD NEWS
AND
DISTRIBUTED COMPUTING
IS HARD STUFF
AH OK.
GOOD NEWS
THERE ARE SEVERAL ECOSYSTEMS
AH OK.
The open-source players
RancherHashicorp NomadDocker swarmKubernetesDC/OSPerch solo quelli opensource?Perche sono i driver dellecosistema.
Docker Swarmkit
Facilissimo da installare
Velocissimo ecosistema
Velocissimi cambiamenti
Facile per pochi nodi
Stessi tool di dev
Swarm si occupa solo di clustering e scheduling
Solo Command Line / no UI
Non appesantisce la computazione
Perch solo quelli opensource?Perche sono i driver dellecosistema.
kubernetes
Opinionated
Usatissimo
Ecosistema floridissimo
Supportato da Google, Redhat ...
Approccio dev
Ben integrato con i maggiori cloud provider
Forte storico
an open source system for automating deployment, scaling, and operations of applicationsPerch solo quelli opensource?Perche sono i driver dellecosistema.
DC/OS mesosphere
In produzione da mostri sacri
Package manager
UI ottima
Supporta piu team
Anche Big-data
Espone Servizi interni (eg. Jenkins abilit lOAuth2.0)
Complesso
Folders
DC/OS is based on the production proven Apache Mesos distributed systems kernel, combining years of real-life experience with best practices for building and running modern applications in production.
Perch solo quelli opensource?Perche sono i driver dellecosistema.
ServerDocker Swarmkit
Container
Server1Container
RedisTask==container
Service == group of task of the same imageNetworkVolume
Route mesh
volumevolume
useradminGolang -> mysql
agentsmanagersDocker Swarmkit
ServerContainer
Server1
Container
RedisTask==container
Service == group of task of the same imageNetworkVolume
Route mesh
volumevolume
Port: 80networksReplica:2useradmin
api
Golang -> mysql
Kubernetes
Container server2Container
Server1Container
RedisPod == group of containers that shares volumes and
Service == Abstraction and access
ReplicaSet == Handle the replica count
Volumes!
volume
useradmin
Pod che sono effimeri
Servizi che sono una astrazione a cui delegata lesposizioneUn
servizio scala insieme e contiene anche piu container
I volumi sono ben fatti essendo partiti su gcloud lo storage una
richiesta che deve essere fatta a priori e ci sono diversi driver
esempioLoad balancer
Kubernets ha un cronjob per schedulare operazioni
Ecosistema valido
Kubernetes
Container server2Container
Server1Container
RedisPod == group of containers that shares volumes and
Service == Abstraction and access
ReplicaSet == Handle the replica count
Volumes!
volume
Port: 80Replica:2useradmin
api
LOAD BALANCER
agentsmanagersPod che sono effimeri
Servizi che sono una astrazione a cui delegata lesposizioneUn
servizio scala insieme e contiene anche piu container
I volumi sono ben fatti essendo partiti su gcloud lo storage una
richiesta che deve essere fatta a priori e ci sono diversi driver
esempioLoad balancer
Kubernets ha un cronjob per schedulare operazioni
Ecosistema valido
DC/OS mesosphere
SchedulerDATACENTERSchedulerSchedulerGolang -> mysql
CronDATACENTERHadoop
Container OrchestratorkubernetesDC/OS mesosphere
Golang -> mysql
DC/OS mesosphere
ServerContainer
Server1
Container
RedisfolderService == group of container/command/script of the same
typeNetworkVolume
Internal VPNvolume
Load balancer is a ContainerDNS/networks/VIPuser
admin
agentsmanagers
apiStore
Stateful container are really important
Di giorno container di notte bigdataMonitoringUtile organizzare
tramite folders
Production
DichiarativoYAMLRude, evolve velocemente, no official ui (shipyard), target folli.
Production
JSONGoogle rilascia open-source il loro prodotto:CLI potente, grande ecosistema, package manager: target startup web ed enterprise
JSON
Target Enterprise, UI, cron, ecosistema florido, basato su mesos, Store per installazione pacchetti, riesce a far girare anche big-data e altri scheduler
Ma...
Path to prod
Community
docker-italia.slack.com
auto-invite: docker-italia.herokuapp.com
Docker documentation
Dev environment
Fail fast - with a simple orchestrator:
cloud.docker.com/mini kube
Move your company:
ECS|Kubernetes|DC/OS
Golang -> mysql
xpeppers.com/radar
docker-italia.slack.com
docker-italia.herokuapp.com
We are hiring great people
Giulio De Donato
@liuggio
Nome Speaker@twitter\