containers, clusters and kubernetes - brendan burns - defrag 2014

29
Containers, Clusters & Kubernetes Brendan Burns Staff Software Engineer

Upload: brendandburns

Post on 15-Jul-2015

4.360 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Containers, Clusters & Kubernetes

Brendan BurnsStaff Software Engineer

Page 2: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Motivations

Make writing BigTable a CS 101

Exercise

Page 3: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

What is a container?

What is a container?

● Lightweight Linux environment● Hermetically sealed, deployable

application● Introspectable, runnable artifact● Recently popularized by Docker

Page 4: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

What is a cluster?

Page 5: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

The transition to logical compute

VM

Logical Compute Substrate

Container

Container

Container

Container

Container

Container

Container

Container

Container

VM VM VM VM VM VM VM VMVM

Container

Container

Container

Container

Container

Container

Container

Container

Container

Page 6: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Modular Application Design

VM

Database

Dependencies

WebServer

MiddleWareVM

DatabaseContainer

Dependency

WebServerContainer

Dependency

MiddlewareContainer

Dependency

vs.

Page 7: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Modular Scaling

VMDatabase

Dependencies

WebServerMiddleWare

DatabaseContainer

Dependency

WebServerContainer

Dependency

MiddlewareContainer

Dependency

vs.

VM

Dependencies

WebServerMiddleWare

Database

VM

Dependencies

WebServerMiddleWare

Database

VM VM

MiddlewareContainer

Dependency

WebServerContainer

Dependency

WebServerContainer

Dependency

Page 8: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

What is Kubernetes?

● Open source container cluster manager● Inspired by the technology that drives

Google

● Runs anywhere:○ Public Cloud○ Private Cloud○ Bare Metal

● Strong ecosystem○ Partners: Red Hat, VMWare, CoreOS,

Microsoft, ...○ Community: Client libs, integration, ...

Page 9: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

The Cloud Dichotomy

IaaS

PaaS

Page 10: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

A brief history of programming languages

Assembly

PostScript

Assembly

Page 11: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

A brief history of programming languages

Assembly

PostScript

AssemblyObject Oriented Languages

Page 12: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

The Cloud Dichotomy

PaaS

IaaS

IaaSCaaS

Page 13: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Components

Page 14: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Kubernetes Pod

Components: Pods

Container-1 Container-2

Shared Volume(s)

Page 15: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Kubernetes Pod

Components: Sidecars

Serving Container

Git Sync Container

Shared Volume

Git Repo

Sidecars Extend and Enhance

Page 16: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Components: Adapters

Kubernetes Pod

Redis Service Redis Adapter

Kubernetes PodMongoDB Service

MongoDB Adapter

Kubernetes PodMySQL Service

MySQL Adapter

Monitoring Service

Adapters Normalize and Abstract

Page 17: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Kubernetes Pod

Components: Ambassadors

Frontend Container

MySQL Ambassador

Write Master

Read Slaves

Container Container Container

Container

localhost

Ambassadors Proxy and Represent

Page 18: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Encapsulation

Page 19: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Abstractions, ftw! : Reliability

{Container, Health Check}

Kubernetes

Container

Web: http://<container>/some/path/to/healthShell: exec /some/path/health.shTCP: open <container> <port>

Page 20: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Abstractions, ftw! : Replication

{Template, Identifier, Num. Replicas}

Replication Controller

Container Container Container Container

Page 21: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Abstractions, ftw! : Services

{IP:Port, Identifier, Name}

DiscoverableService

Container Container Container Container

DNS

Service IPContainer

Page 22: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Patterns

Page 23: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Patterns and Interfaces: Master Election

Container Container Container Container

Cluster Manager

Lock Service

http://<container>/healthz

Page 24: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Patterns and Interfaces: Master Election

Container Container Container Container

Lock Service

Cluster Manager

http://.../master?master=container1

Page 25: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Patterns: Sharded HTTP Service

Container Container Container

Kubernetes Service

http://foo.com/beta http://foo.com/gammahttp://foo.com/alpha

http://foo.com/alphahttp://foo.com/betahttp://foo.com/gamma

Page 26: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Patterns: Hot Sharded HTTP Service

Container Container Container

http://foo.com/alpha http://foo.com/betahttp://foo.com/gamma

http://foo.com/alpha

http://foo.com/alpha @ 20 qpshttp://foo.com/beta @ 5 qpshttp://foo.com/gamma @ 5 qps

Kubernetes Service

Page 27: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

http://.../api/get?key=<key>http://.../api/set?key=<k>&val=<v>

Patterns: Bigtable

Container

Kubernetes Service

http://.../manage/shard/<shard>/splithttp://.../manage/shard/<shard>/mergehttp://.../manage/shard/<shard>/loadhttp://.../manage/shard/<shard>/unload

Data Interface

Management Interface

Page 28: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

We’re building an os for the datacenter.

Join us!#google-containers on FreeNodehttps://github.com/GoogleCloudPlatform/kuberneteshttps://cloud.google.com/container-engine/

Page 29: Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014

Stop