scheduling containers on amazon ecs

45
© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Chad Schmutzer, AWS Solutions Architect October 24 th , 2016 Scheduling Containers on Amazon ECS

Upload: amazon-web-services

Post on 13-Jan-2017

168 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Scheduling Containers on Amazon ECS

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

Chad Schmutzer, AWS Solutions Architect

October 24th, 2016

Scheduling Containers on

Amazon ECS

Page 2: Scheduling Containers on Amazon ECS
Page 3: Scheduling Containers on Amazon ECS

What is Amazon ECS?

Amazon EC2 Container Service (ECS) is a highly scalable,

high performance container management service. You

can use Amazon ECS to schedule the placement of

containers across your cluster. You can also integrate your

own scheduler or third-party scheduler to meet business

or application specific requirements.

Page 4: Scheduling Containers on Amazon ECS

Agenda

Container Management

Scheduling

Benefits

Demo

Page 5: Scheduling Containers on Amazon ECS

Container Management

Page 6: Scheduling Containers on Amazon ECS

Maintains Available Resources

Tracks Resource Changes

Accepts Resource Requests

Guarantees Accuracy and Consistency

What is a Container Manager?

Page 7: Scheduling Containers on Amazon ECS

CPU

Memory

Ports

Disk Space

Disk IOPS

Network Bandwidth

Resources

Page 8: Scheduling Containers on Amazon ECS

ECS

Agent

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

Page 9: Scheduling Containers on Amazon ECS

Instance Registration

register-container-instance --total-resources

[

{

“name” : “cpu”,

“type” : “integerValue”,

“integerValue” : 2048

},

]

Page 10: Scheduling Containers on Amazon ECS

Modifying Exposed Resources

Page 11: Scheduling Containers on Amazon ECS

Accepting Resource Requests

Page 12: Scheduling Containers on Amazon ECS

Tasks

Shared Data Volume

Containers

launchContainer

Instance

Volume Definitions

Container Definitions

Page 13: Scheduling Containers on Amazon ECS

Starting a Task

API

User /

Scheduler

StartTask

Page 14: Scheduling Containers on Amazon ECS

Starting a Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Page 15: Scheduling Containers on Amazon ECS

Starting a Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Agent Communication

Page 16: Scheduling Containers on Amazon ECS

Starting a Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Agent Communication

Docker

Container Instance

ECS Agent

Task

Container

WebSocket

Page 17: Scheduling Containers on Amazon ECS

Starting a Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Agent Communication

Docker

Task

Container Instance

Container

ECS Agent

Task

Container

SubmitStateChange

Page 18: Scheduling Containers on Amazon ECS

Tracking Resource Changes

Page 19: Scheduling Containers on Amazon ECS

Terminated Task

API

User /

Scheduler

StartTask

Cluster Management Engine

Agent Communication

Docker

Task

Container Instance

Container

ECS Agent

SubmitStateChange

Page 20: Scheduling Containers on Amazon ECS

Missing Container Instance

API

User /

Scheduler

StartTask

Cluster Management Engine

Docker

Task

Container Instance

Container

ECS Agent

?

Agent Communication

Page 21: Scheduling Containers on Amazon ECS

Terminated Container Instance

API

User /

Scheduler

StartTask

Cluster Management Engine

Agent Communication

Termination

Notifier

Docker

Task

Container Instance

Container

ECS Agent

Page 22: Scheduling Containers on Amazon ECS

Guaranteeing Accuracy and

Consistency

Page 23: Scheduling Containers on Amazon ECS

Amazon ECS under the Hood

IDN-1 IDN IDN+1 IDN+2 IDN+3 IDN+4 IDN+5

IDN+6

IDN+5

WRITE

READ

Page 24: Scheduling Containers on Amazon ECS

Amazon ECS under the Hood

IDN-1 IDN IDN+1 IDN+2 IDN+3 IDN+4 IDN+5

IDN+6IDN+3

IDN+5IDN+2

WRITE WRITE

READREAD

Page 25: Scheduling Containers on Amazon ECS

Schedulers

Page 26: Scheduling Containers on Amazon ECS

What is a Scheduler?

Determine Desired State

Check Against Current State

Perform Action

Page 27: Scheduling Containers on Amazon ECS

ECS Schedulers

Batch Jobs

ECS Task scheduler

Run tasks once

Batch jobs

RunTask (random)

StartTask (placed)

Long-Running Apps

ECS Service scheduler

Health management

Scale-up and scale-down

AZ aware

Grouped Containers

Page 28: Scheduling Containers on Amazon ECS

Custom Schedulers

1. Calls the ECS List* and Describe* API operations to

determine the current state of the cluster.

2. Selects one (or more) container instances according to

the logic implemented.

3. Calls StartTask API to start a task on the selected

container instance.

Page 29: Scheduling Containers on Amazon ECS

Integration with third party schedulers

ECS allows you to use third party schedulers, e.g.

Marathon and Chronos

Integration via ECS API

For Mesos schedulers, the ECSSchedulerDriver interprets

the command given when scheduling jobs with Mesos and

starts a task with TaskDefinition family:revision

Page 30: Scheduling Containers on Amazon ECS

Amazon ECS Service Scheduler

Page 31: Scheduling Containers on Amazon ECS

Discovering DifferencesDeployment Status Desired Pending Running

ecs-svc/1 PRIMARY 5 0 0

Minimum Healthy Maximum Healthy

50% 200%

Page 32: Scheduling Containers on Amazon ECS

Steady State

Determine

Placement Options

Deploy Task

Service State Machine

RUNNING == DESIRED

RUNNING != DESIRED &&

STATUS == PRIMARY

ALL_RUNNING < MAX_HEALTHY

Page 33: Scheduling Containers on Amazon ECS

Discovering DifferencesDeployment Status Desired Pending Running

ecs-svc/2 PRIMARY 10 0 0

ecs-svc/1 ACTIVE 5 0 5

Minimum Healthy Maximum Healthy

50% 200%

Page 34: Scheduling Containers on Amazon ECS

Steady State

Determine

Placement Options

Deploy Task

RUNNING == DESIRED

RUNNING != DESIRED &&

STATUS == PRIMARY

ALL_RUNNING < MAX_HEALTHY

Service State Machine

Clear Deployment Kill Task

ALL_RUNNING >

MAX_HEALTHY

RUNNING != DESIRED &&

STATUS == ACTIVE

Page 35: Scheduling Containers on Amazon ECS

Other Considerations

ELB Registration/Deregistration

Permissions and Errors

Task Health

Scale Down Requests

Page 36: Scheduling Containers on Amazon ECS
Page 37: Scheduling Containers on Amazon ECS

Multiple Schedulers

Page 38: Scheduling Containers on Amazon ECS

Amazon ECS – Scheduling

Page 39: Scheduling Containers on Amazon ECS

Amazon ECS – Scheduling

Page 40: Scheduling Containers on Amazon ECS

Amazon ECS – Scheduling

Page 41: Scheduling Containers on Amazon ECS

Amazon ECS – Scheduling

Page 42: Scheduling Containers on Amazon ECS

Demo

Page 43: Scheduling Containers on Amazon ECS

© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

All attendees will receive a special giveaway gift!

Please join us for the

AWS DevDay Networking Reception

5:00 - 6:30 PM

JW Grand Foyer

Page 44: Scheduling Containers on Amazon ECS

Thank You!

Page 45: Scheduling Containers on Amazon ECS

Don’t Forget Evaluations!