70
Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski <[email protected]> Technical Leader & Engineering Manager @fgrzadkowski

Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

logo

Containers & KubernetesUmea University2017/05/11

Filip Grzadkowski <[email protected]>Technical Leader & Engineering Manager@fgrzadkowski

Page 2: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

So I have my app...

Page 3: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Old Way: Shared machines

kernel

libs

app

app app

app

Page 4: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

app

libskernel

libs

app app

kernel

app

libs

libskernel

kernel

Old Way: Virtual machines

Page 5: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

libs

app

kernel

libs

app

libs

app

libs

app

New Way: Containers

Page 6: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

How?

Implemented by a number of (unrelated) Linux APIs:

• cgroups: Restrict resources a process can consume• CPU, memory, disk IO, ...

• namespaces: Change a process’s view of the system• Network interfaces, PIDs, users, mounts, ...

• capabilities: Limits what a user can do• mount, kill, chown, ...

• chroots: Determines what parts of the filesystem a user can see

Page 7: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Google has been developing and using containers to manage our applications for over 12 years.

Images by Connie Zhou

Page 8: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Everything at Google runs in containers:• Gmail, Web Search, Maps, ...• MapReduce, batch, ...• GFS, Colossus, ...• Even GCE itself: VMs in

containers

Page 9: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Everything at Google runs in containers:• Gmail, Web Search, Maps, ...• MapReduce, batch, ...• GFS, Colossus, ...• Even GCE itself: VMs in

containers

We launch over 2 billion containers per week.

Page 10: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Docker

Source: Google Trends

Page 11: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Now that we have containers...

Isolation: Keep jobs from interfering with each other

Scheduling: Where should my job be run?

Lifecycle: Keep my job running

Discovery: Where is my job now?

Constituency: Who is part of my job?

Scale-up: Making my jobs bigger or smaller

Auth{n,z}: Who can do things to my job?

Monitoring: What’s happening with my job?

Health: How is my job feeling?

Page 12: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Enter Kubernetes

Manage applications,not machines

Page 13: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Part 1 - Basics

Page 14: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

App deployment

Page 15: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Pods

Example: data puller & web serverPod

File Puller Web Server

Volume

ConsumersContent Manager

Run my application.

Page 16: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

App: MyApp

Phase: prod

Role: FE

App: MyApp

Phase: test

Role: FE

App: MyApp

Phase: prod

Role: BE

App: MyApp

Phase: test

Role: BE

Labels

Page 17: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

App: MyApp

Phase: prod

Role: FE

App: MyApp

Phase: test

Role: FE

App: MyApp

Phase: prod

Role: BE

App: MyApp

Phase: test

Role: BE

App = MyApp

Selectors

Page 18: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

App: MyApp

Phase: prod

Role: FE

App: MyApp

Phase: test

Role: FE

App: MyApp

Phase: prod

Role: BE

App: MyApp

Phase: test

Role: BE

App = MyApp, Role = FE

Selectors

Page 19: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

App: MyApp

Phase: prod

Role: FE

App: MyApp

Phase: test

Role: FE

App: MyApp

Phase: prod

Role: BE

App: MyApp

Phase: test

Role: BE

App = MyApp, Role = BE

Selectors

Page 20: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Selectors

App: MyApp

Phase: prod

Role: FE

App: MyApp

Phase: test

Role: FE

App: MyApp

Phase: prod

Role: BE

App: MyApp

Phase: test

Role: BE

App = MyApp, Phase = prod

Page 21: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

App: MyApp

Phase: prod

Role: FE

App: MyApp

Phase: test

Role: FE

App: MyApp

Phase: prod

Role: BE

App: MyApp

Phase: test

Role: BE

App = MyApp, Phase = test

Selectors

Page 22: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

ReplicaSet ReplicaSet- name = “my-rc”- selector = {“App”: “MyApp”}- podTemplate = { ... }- replicas = 4

API Server

How many?

3

Start 1 more

OK

How many?

4

Run N copies of my application.

Page 23: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

node 1

f0118

node 3

node 4node 2

d9376

b0111

a1209

Replication Controller- Desired = 4- Current = 4

ReplicaSet

Page 24: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

node 1

f0118

node 3

node 4node 2

Replication Controller- Desired = 4- Current = 4

d9376

b0111

a1209

ReplicaSet

Page 25: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

node 1

f0118

node 3

node 4

Replication Controller- Desired = 4- Current = 3

b0111

a1209

ReplicaSet

Page 26: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

node 1

f0118

node 3

node 4

Replication Controller- Desired = 4- Current = 4

b0111

a1209

c9bad

ReplicaSet

Page 27: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Networking

Page 28: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

10.1.1.0/24

172.16.1.1

172.16.1.2

Docker networking

10.1.2.0/24172.16.1.1

10.1.3.0/24172.16.1.1

Page 29: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

10.1.1.0/24

172.16.1.1

172.16.1.2

Docker networking

10.1.2.0/24172.16.1.1

10.1.3.0/24172.16.1.1

NAT

NAT

NAT

NAT

NAT

Page 30: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Kubernetes networking

IPs are routable• vs docker default private IP

Pods can reach each other without NAT• even across nodes

No brokering of port numbers• too complex, why bother?

This is a fundamental requirement• can be L3 routed• can be underlayed (cloud)• can be overlayed (SDN)

Page 31: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

10.1.1.0/24

172.16.1.1

172.16.1.2

Kubernetes networking

10.1.2.0/24172.16.1.1

10.1.3.0/24172.16.1.1

Page 32: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Services

IP / DNS

Client

Expose my application.

selector = {“App”: “MyApp”}

Page 33: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

...and more!

Page 34: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

More

• Resource isolation• L7 Load Balancing• ConfigMap• Secret• Deployment• Job• DaemonSet• PersistentVolumes• Rolling updates• DNS• Autoscaling

• Monitoring• Logging• Rkt, Hyper• Authorization• Dashboard• ...

Page 35: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Some takeaways

Page 36: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Modularity

Loose coupling is a goal everywhere• simpler• composable• extensible

Code-level plugins where possible

Isolate risk by interchangeable parts

Example: ReplicaSetExample: Scheduler

Page 37: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Control loops

Drive current state -> desired state

Act independently

APIs - no shortcuts or back doors

Example: ReplicaSet

observe

diff

act

Page 38: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Part 2 - auto-recovery

Page 39: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Autoscaling

Page 40: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Autoscaling

Pod Autoscaling Cluster Autoscaling

Page 41: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google confidential │ Do not distribute

Autoscaling

Pod Autoscaling Cluster Autoscaling

Page 42: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

HorizontalPodAutoscaler

Page 43: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Configuration spec: scaleTargetRef: kind: ReplicationController name: my-rc minReplicas: 2 maxReplicas: 10 targetCPUUtilizationPercentage: 70

$ kubectl autoscale rc my-rc --min=2 --max=10 --cpu-percent=70

Page 44: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

How does it work?

Page 45: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

More users

observes

Page 46: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

More pods

resizes

Page 47: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Scaling algorithm

sum(utilization)

target utilizationceil( )

min <= target # instances <= max

target # instances =

Page 48: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Cluster Autoscaling

Page 49: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Overview

Node A Node B

?

Page 50: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Overview

Node A Node B Node C

Page 51: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Overview

Node A Node B Node C

Page 52: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Overview

Node A Node B Node C

Page 53: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Overview

Node A Node B Node C

Page 54: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Overview

Node A Node B

Page 55: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

• Scale UP when pod is pending• Scale DOWN when node not needed for

long time• Simulations

Status: beta since v1.3

Overview

Page 56: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Page 57: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node A Node B

Page 58: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node A Node B

Page 59: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node A Node B

Node Controller● Unresponsive

node

Page 60: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node A Node B

Node Controller● Unresponsive

node

Page 61: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node A Node B

Node Controller● Unresponsive

node

ReplicaSet Controller● desired: 4● actual: 3

Page 62: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node A Node B

Node Controller● Unresponsive

node

ReplicaSet Controller● desired: 4● actual: 4

Page 63: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node ATaint=BrokenDisk

Node B

Node Controller● BrokenDisk

Page 64: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node ATaint=BrokenDisk

Node B

?

Page 65: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node ATaint=BrokenDisk

Node B

Page 66: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node ATaint=BrokenDisk

Node B

?Toleration=BrokenDisk

Page 67: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Machine failures

Node ATaint=BrokenDisk

Node B

Toleration=BrokenDisk

Page 68: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Is it useful?

Page 69: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

AWS S3 outage

Realistically this kind of failure on a day like Tuesday could have resulted in hours of downtime. With Kubernetes, there was never a moment of panic, just a sense of awe watching the automatic mitigation as it happened.

Rob Scott,VP of Software Architecture @Spire

source

Page 70: Containers & Kubernetespeople.cs.umu.se/cklein/wasp-slides/Grzadkowski...Google Cloud Platform logo Containers & Kubernetes Umea University 2017/05/11 Filip Grzadkowski

Google Cloud Platform

Kubernetes is Open

https://kubernetes.io

Code: github.com/kubernetes/kubernetesChat: slack.k8s.ioTwitter: @kubernetesio

open community

open design

open source

open to ideas