Page 1
© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
November 13, 2014 | Las Vegas
APP313
Amazon EC2 Container Service Highly Scalable, High Performance Container Management Service
Deepak Singh (@mndoci), Amazon Web ServicesDan Gerdesmeier, Amazon Web Services
Page 3
Image: Izabella Reimers
Page 6
Image: Stéphanie Kilgast
Page 7
Why are customers running Docker in the
cloud?
Page 8
Environment fidelity
Page 10
Better fleet management
Page 11
Distributed applications
Page 12
We want to make running Docker-enabled applications in the cloud awesome
Image: colinaut
Page 13
Listening to our customersImage: highersights
Page 14
Cluster management
Configuration management
Scaling
SecurityAvailabilityContainer sprawl
Image: RaSeLaSeD - ll Pinguino
Page 15
Elastic Load Balancing
ENIs
Auto Scaling
Security Groups
IAM
Image: xmatt
Tagging
Multi-AZ
Amazon EBS
Page 16
Image: Timothy Krause
First class APIs
Page 17
Image
Amazon EC2 Container Service
Page 18
What is Amazon EC2 Container Service?
Image: nolifebeforecoffee
Page 19
Building block service
Image: ntr23
Page 20
Cluster management service
Page 21
Manages your containers
Page 22
Manages cluster state
Page 23
Schedules containers onto your cluster
Page 27
Your containers, your instances
Page 32
Tasks Containers
Clusters Container Instances
Page 33
Task: A grouping of related containers
Nginx Web Server Rails Application
MySQL Database
Log Collector
Page 34
Task Definition{ “family” : “my-website”, “version” : “1.0” “containers” : [ <<CONTAINER DEFINTIONS>> ] }
Page 35
Container Definition
• Names and identifies your image • Includes default runtime attributes for your container
– Environment Variables – Port Mappings – Container entry point and commands – Resource constraints – Etc..
Page 36
Example{ “name” : “webServer”, “image” : “nginx:latest” “cpu” : 512, “memory” : 128, “portMappings” : [ { “containerPort” : 9443, “hostPort” : 443 }], “links” : [“rails”], “essential” : true }
Page 37
Tasks Containers
Clusters Container Instances
Page 38
Cluster
• Provides a pool of resources for your Tasks • A grouping of Container Instances • Starts empty, dynamically scalable
Page 39
Container Instance
• An instance on which Tasks are scheduled • Runs AMI with ECS Agent installed • Registers into cluster on launch
Page 41
The following are in lieu of the demo which is available on Youtube. The demo shows a more complex use case
Page 42
$ aws ecs create-cluster default { "cluster_arn": "arn:aws:ecs:us-west-2:956941867282:cluster/c1a329a8-ec8a-41dc-82f6-294434861bd1", "cluster_name": "default", "status": "ACTIVE" }
Page 44
$ aws ecs list-container-instances –c default arn:aws:ecs:us-west-2:956941867282:container-instance/01be44c0-4d45-4c1f-b2ae-1fce16c35ab6 arn:aws:ecs:us-west-2:956941867282:container-instance/1c81279b-4b39-4985-b76d-224e0385b219 arn:aws:ecs:us-west-2:956941867282:container-instance/04c11c0e-94df-4334-b55c-200cd5d08007 arn:aws:ecs:us-west-2:956941867282:container-instance/a0c6fef9-4b7a-46b2-a89f-6340fc204958 arn:aws:ecs:us-west-2:956941867282:container-instance/eb974a8-23b6-4f15-88c5-f6ee4f10cdb1
Page 45
$ cat wordpress.json { "containers" : [ { "image" : "tutum/wordpress-stackable", "name" : "wordpress", "cpu" : 10, "memory" : 50, "links" : ["db"], "environment" : [{ "name" : "DB_USER", "value" : "root"}, { "name" : "DB_PASS", "value" : "pass" }], "portMappings" : [{ "containerPort" : 80, "hostPort" : 80}] }, { "image" : "mysql", "name" : "db", "cpu" : 10, "memory" : 50, "environment" : [{ "name" : "MYSQL_ROOT_PASSWORD", "value" : "pass"}], } ] }
Page 46
$ aws register-task-definition wordpress:1.0 –-file wordpress.json { “family” : “wordpress”, “version” : “1.0”, "containers" : [ { "image" : "tutum/wordpress-stackable", "name" : "wordpress", "cpu" : 100, "memory" : 100, "links" : ["db"], "environment" : [{ "name" : "DB_USER", "value" : "root"}, { "name" : "DB_PASS", "value" : "pass" }], "portMappings" : [{ "containerPort" : 80, "hostPort" : 80}] }, { "image" : "mysql", "name" : "db", "cpu" : 100, "memory" : 100, "environment" : [{ "name" : "MYSQL_ROOT_PASSWORD", "value" : "pass"}], } ] }
Page 47
$ aws ecs run-task wordpress:1.0 { "tasks": [ { "task_arn": "arn:aws:ecs:us-west-2:956941867282:task/29da33da-1d71-454f-b036-df0da0284266", "task_definition_arn": "arn:aws:ecs:us-west-2:956941867282:task-definition/7fc71808-5102-47d3-9f76-0bded26a932b", "container_instance_arn": "arn:aws:ecs:us-west-2:956941867282:container-instance/01be44c0-4d45-4c1f-b2ae-1fce16c35ab6", "overrides": {}, "last_status": "PENDING", "desired_status": "RUNNING", "containers": [ { "arn": "arn:aws:ecs:us-west-2:956941867282:container/1b33848e-1933-43b5-b9c7-4581efb70504", "task_arn": "arn:aws:ecs:us-west-2:956941867282:task/29da33da-1d71-454f-b036-df0da0284266", "name": "wordpress", "last_status": "PENDING", "exit_code": 0 }, { "arn": "arn:aws:ecs:us-west-2:956941867282:container/89c0d451-75d3-41c2-9b82-84b4e3affa47", "task_arn": "arn:aws:ecs:us-west-2:956941867282:task/29da33da-1d71-454f-b036-df0da0284266", "name": "db", "last_status": "PENDING", "exit_code": 0 } ] } ] }
Page 48
$ aws ecs describe-container-instance { "container_instance_arn": "arn:aws:ecs:us-west-2:956941867282:container-instance/31ccf300-2b6f-4919-81d4-0b6e61aae089", "ec2_instance_id": "i-a7d37cad", "ec2_instance_type": "t2.micro", "remaining_resources": [ { "name": "CPU", "integer_value": 824 }, { "name": "MEMORY", "integer_value": 796 } ], "registered_resources": [ { "name": "CPU", "integer_value": 1024 }, { "name": "MEMORY", "integer_value": 996 } ], "status": "ACTIVE" }
Page 50
Coming Soon !Elastic Load Balancing integration Amazon CloudWatch integration Amazon CloudWatch Logs integration AWS CloudFormation support Support for Tagging AWS Management Console Partner AMIs (including CoreOS)
Page 52
Pricing
No additional charge You only pay for the AWS resources you consume
Page 53
Sign up for the preview !
http://aws.amazon.com/ecs
Page 54
Please give us your feedback on this presentation
© 2014 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.
Join the conversation on Twitter with #reinvent
APP313