Slide 1

Slide 1 text

Managed Containers, Open Source, and Google 2014 CloudOpen/LinuxCon Joe Beda Senior Staff Software Engineer jbeda@google.com @jbeda

Slide 2

Slide 2 text

Why Containers*? 1. Packaging 2. Efficiency and Speed 3. Security (?) (*) Container = Docker flavor container

Slide 3

Slide 3 text

Static application environment No stress deployment and update Repeatable portable artifact Develop here, run there Pick your cloud solely on its merits Loosely coupled = easier to build and manage Easier to build and manage Compose applications from micro-services Packaging

Slide 4

Slide 4 text

Everything at Google runs in a container. • Resource isolation • Predictability • Quality of service • Efficient overcommit • Resource accounting Google starts over 2 billion containers per week. Images by Connie Zhou Efficiency

Slide 5

Slide 5 text

Kubernetes κυβερνήτης: Greek for “pilot” or “helmsman of a ship” the open source cluster manager from Google

Slide 6

Slide 6 text

Kubernetes Inspired by Google's systems and experience Manage Containers, not Machines Efficient: optimized packing, better scaling Performant: active environment tuning Robust: active monitoring, self healing Organizationally Scalable: • Split sys ops and app ops • Enable micro-services Modern Open Source: • Extensible & portable, can run anywhere • Apache 2.0 licensed • Written in Go • Hosted on github

Slide 7

Slide 7 text

Node Container Manager Scheduled Containers Managed Base OS Managed Base OS Node Container Manager Scheduled Containers Cluster Scheduler Simplified Cluster Management Stack

Slide 8

Slide 8 text

Managed Base OS kubelet Scheduled Containers Managed Base OS kubelet + Docker Scheduled Containers Kubernetes Master etcd Kubernetes Container Stack

Slide 9

Slide 9 text

Kubernetes Master/Scheduler Kubernetes Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent

Slide 10

Slide 10 text

Log Roller Web Server Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes Master/Scheduler Pods

Slide 11

Slide 11 text

FE FE FE FE FE FE BE BE BE BE BE BE BE BE BE Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Too Many Pods

Slide 12

Slide 12 text

labels: role: frontend FE FE FE FE FE FE BE BE BE BE BE BE BE BE BE Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Labels

Slide 13

Slide 13 text

labels: role: frontend stage: production Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler FE FE FE FE FE FE BE BE BE BE BE BE BE BE BE Labels

Slide 14

Slide 14 text

Declarative Over Imperative Imperative: "for pod in pod{001..100} ; start $pod Declarative: "Run 100 copies of this pod with a target of <= 2 tasks down at any time" Pros: • Repeatable • "Set it and forget it" • Eventually consistent • Easily updatable Con: • Tracing action/reaction can be difficult. "I made a change, is it done?" Image: "Space Needle under construction, 1961" seattlemunicipalarchives CC-BY-2.0 http://www.flickr. com/photos/seattlemunicipalarchives/6847114249

Slide 15

Slide 15 text

FE FE FE FE replicas: 4 template: ... labels: role: frontend stage: production Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Replication Controller

Slide 16

Slide 16 text

FE replicas: 1 template: ... labels: role: frontend stage: production Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Replication Controller

Slide 17

Slide 17 text

FE FE FE replicas: 3 template: ... labels: role: frontend stage: production Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Replication Controller

Slide 18

Slide 18 text

id: backend-service port: 9000 labels: role: backend stage: production Backend Service BE BE BE BE Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Machine Host Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Container Agent Kubernetes - Master/Scheduler Service

Slide 19

Slide 19 text

Cat in a Container

Slide 20

Slide 20 text

We’re taking lessons we’ve learned and open sourcing them Kubernetes is evolving We’re eager to hear from you! 1 2 3 Summing Up

Slide 21

Slide 21 text

We are just getting started... Clone Kubernetes at: github.com/GoogleCloudPlatform/kubernetes IRC: #google-containers on Freenode Google group: google-containers Reach out: jbeda@google.com Twitter: @jbeda