Upload
danilo-poccia
View
611
Download
1
Embed Size (px)
Citation preview
Managing Containers at Scale
Danilo PocciaAWS Technical Evangelist
@danilopdanilop
Containers
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2Containers
OS virtualization Process isolation
Images Automation
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Portable
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Flexible
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Fast
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Efficient
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Host
Guest OS
Bins / Libs Bins / Libs
App 1 App 2
Amazon EC2 Container Service (ECS)
{ "containerDefinitions": [ { "name": "simple-app", "image": "httpd:2.4", "cpu": 10, "memory": 300, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "essential": true, "mountPoints": [ { "containerPath": "/usr/local/apache2/htdocs", "sourceVolume": "my-vol" } ] },
{ "name": "busybox", "image": "busybox", "cpu": 10, "memory": 200, "volumesFrom": [ { "sourceContainer": "simple-app" } ], "command": [ "/bin/sh -c \"...\"" ], "essential": false } ], "volumes": [ { "name": “my-vol" } ] }
Task Definition
{ "containerDefinitions": [ { "name": "simple-app", "image": "httpd:2.4", "cpu": 10, "memory": 300, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "essential": true, "mountPoints": [ { "containerPath": "/usr/local/apache2/htdocs", "sourceVolume": "my-vol" } ] },
Task Definition
10 CPU units (1024 is a full CPU)500 MB of memory
Expose port 80 in containerto port 80 on host
Create and mount volumes
Essential to our task
{ "name": "busybox", "image": "busybox", "cpu": 10, "memory": 200, "volumesFrom": [ { "sourceContainer": "simple-app" } ], "command": [ "/bin/sh -c \"...\"" ], "essential": false } ], "volumes": [ { "name": “my-vol" } ] }
Task Definition
From Docker Hub
Mount volume from other container
Command to exec
Volumes
Internet
AZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
Key / Value Store
Cluster Management Engine
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
Key / Value Store
Cluster Management Engine
Create Cluster
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management Engine
Register Container Instance(s)
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Key / Value Store
Cluster Management Engine
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
Container Instance Container Instance Container Instance Container Instance Container Instance
Task Definitions
Task Definitions
Container Instance
Task Definitions
Register Task Definition(s)
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
TaskC
C CVV
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Run Task “C”
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS AgentECS Agent ECS Agent ECS Agent ECS Agent ECS Agent
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS AgentECS Agent
TaskA
CV
C CV
ECS Agent
TaskA
CV
C CV
ECS Agent ECS Agent ECS Agent
Service A
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Create Service “A”
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS AgentECS Agent
TaskA
CV
C CV
ECS Agent
TaskA
CV
C CV
ECS Agent ECS Agent
TaskA
CV
C CV
ECS Agent
Service A
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Update Service “A”
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
ECS Agent
TaskB
C CV
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Create Service “B”
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskC
C CV
ECS Agent
TaskB
C CV
Service A Service B
V
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Run Task “C”
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
ECS Agent
TaskB
C CV
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
User / Scheduler
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
ECS Agent
TaskB
C CV
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
Custom Scheduler
Internet
ClusterAZ #1 AZ #2 AZ #3
AmazonECS
Agent Communication Service API
User / Scheduler
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskA
CV
C CV
TaskB
C CV
ECS Agent
TaskB
C CV
ECS Agent
TaskA
CV
C CV
ECS Agent
TaskB
C CV
Service A Service B
Container Instance Container Instance Container Instance Container Instance Container Instance Container Instance
Key / Value Store
Cluster Management EngineTask
DefinitionsTask
DefinitionsTask
Definitions
ClusterContainer InstanceAmazon ECS Agent
Task DefinitionsTasks
Services
Designed for use with other AWS services
Elastic Load BalancingAmazon Elastic Block Store
Amazon Virtual Private CloudAWS Identity and Access Management (IAM)
AWS CloudTrail
Elastic Load Balancing
Circuit breaker
"Jtecul" by own - Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons
http://commons.wikimedia.org/wiki/File:Jtecul.jpg#/media/File:Jtecul.jpg
Best P
ractic
e
Infrastructure as Code
Manage your Cluster(s) withAWS CloudFormation + Auto Scaling
Best P
ractic
e
Extensible
Comprehensive APIsOpen source agentCustom schedulers
https://github.com/aws/amazon-ecs-agent
https://github.com/awslabs/ecs-mesos-scheduler-driver
“awslogs” driver for Amazon CloudWatch Logs
https://github.com/cloudbees/amazon-ecs-plugin
http://gliderlabs.com/registratorhttps://www.consul.io
Service Discovery via Consul with Amazon ECS
Service Discovery and Load Balancing with Weave on Amazon ECS
http://weave.works/guides/service-discovery-with-weave-aws-ecs.html
“Amazon ECS enabled Coursera to focus on releasing new software
rather than spending time managing clusters.”
Frank ChenSoftware Engineer
<demo> …
</demo>
You will soon be able to useDocker Compose and Docker Swarm
to develop your application cluster on your desktopand then scale into the AWS Cloud
Coming Soon
Open Contai
ner
Initiativ
e
Your feedback is important to AWS
Tell us what you think
Focus on You Idea
No additional costfor using Amazon ECS
You pay for the underlingresources you use
aws.amazon.com/free
Managing Containers at Scale
Danilo PocciaAWS Technical Evangelist
@danilopdanilop