kubernetes in 30 minutes (2017/03/10)

106
Kubernetes in 30 minutes Mar 10, 2017 Daisuke Maki @lestrrat

Upload: lestrrat

Post on 11-Apr-2017

3.995 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Kubernetes in 30 minutes (2017/03/10)

Kubernetes in 30 minutes

Mar 10, 2017

Daisuke Maki @lestrrat

Page 2: Kubernetes in 30 minutes (2017/03/10)
Page 3: Kubernetes in 30 minutes (2017/03/10)

Netscape Navigator

Page 4: Kubernetes in 30 minutes (2017/03/10)

Netscape Navigator

Page 5: Kubernetes in 30 minutes (2017/03/10)

Kubernetes

Page 6: Kubernetes in 30 minutes (2017/03/10)

κυβερνήτης

Page 7: Kubernetes in 30 minutes (2017/03/10)

k8s

Page 8: Kubernetes in 30 minutes (2017/03/10)

“Something to do with containers…?

Page 9: Kubernetes in 30 minutes (2017/03/10)

•You know about containers •You know about orchestration •You know about the painful art of deploying stuff

Assumptions

Page 10: Kubernetes in 30 minutes (2017/03/10)

Docker

Page 11: Kubernetes in 30 minutes (2017/03/10)

“Random containers doing their own sh*t”

Page 12: Kubernetes in 30 minutes (2017/03/10)

Compose

Page 13: Kubernetes in 30 minutes (2017/03/10)

“Foreman on Acid”

Page 14: Kubernetes in 30 minutes (2017/03/10)

Swarm

Page 15: Kubernetes in 30 minutes (2017/03/10)

“Clustering and Discovery” (hey, we’re getting somewhere!)

Page 16: Kubernetes in 30 minutes (2017/03/10)

=

Page 17: Kubernetes in 30 minutes (2017/03/10)

“Batteries Included”

Page 18: Kubernetes in 30 minutes (2017/03/10)

K8s on GCP

GKE GCE Networking

…and others

Page 19: Kubernetes in 30 minutes (2017/03/10)

Basic Concepts

Page 20: Kubernetes in 30 minutes (2017/03/10)

Node

Page 21: Kubernetes in 30 minutes (2017/03/10)

Hosts running k8s daemons

Page 22: Kubernetes in 30 minutes (2017/03/10)

Node

kubelet

Node

kubelet

Node

kubelet

Master

Scheduler

etc..

API

Page 23: Kubernetes in 30 minutes (2017/03/10)

Pod

Page 24: Kubernetes in 30 minutes (2017/03/10)

Basic unit of deployment in k8s

基本

Page 25: Kubernetes in 30 minutes (2017/03/10)

Group of Containers

Page 26: Kubernetes in 30 minutes (2017/03/10)

Container configurations

Page 27: Kubernetes in 30 minutes (2017/03/10)

Shared storage

Page 28: Kubernetes in 30 minutes (2017/03/10)

Pod

container

Page 29: Kubernetes in 30 minutes (2017/03/10)

Pod

container

container

Page 30: Kubernetes in 30 minutes (2017/03/10)

Pod

container

container

container

Page 31: Kubernetes in 30 minutes (2017/03/10)

Pod

container

container

container

nginx

app

redis/cache

e.g.

Page 32: Kubernetes in 30 minutes (2017/03/10)

Scheduled together(“co-scheduled”)

Page 33: Kubernetes in 30 minutes (2017/03/10)

Guaranteed to be on the same node

(“co-located”)

Page 34: Kubernetes in 30 minutes (2017/03/10)

Node NodeNode

Page 35: Kubernetes in 30 minutes (2017/03/10)

Node NodeNode

Depends on each node’s resource availability and each pod’s resource requirements

Page 36: Kubernetes in 30 minutes (2017/03/10)

Node Node

container

container

container

Page 37: Kubernetes in 30 minutes (2017/03/10)

Node Node

container

container

container

This will NEVER happen

Page 38: Kubernetes in 30 minutes (2017/03/10)

Miscellaneous

• Each pod has its own IP address • Pods are expected to be stateless

Page 39: Kubernetes in 30 minutes (2017/03/10)

Replica Set

Page 40: Kubernetes in 30 minutes (2017/03/10)

Keeps track of Pod replicas

Page 41: Kubernetes in 30 minutes (2017/03/10)

Replica Setreplicas: 3template:

Page 42: Kubernetes in 30 minutes (2017/03/10)

Replica Setreplicas: 3template:

A

Page 43: Kubernetes in 30 minutes (2017/03/10)

Replica Setreplicas: 3template:

A B

Page 44: Kubernetes in 30 minutes (2017/03/10)

Replica Setreplicas: 3template:

CA B

Page 45: Kubernetes in 30 minutes (2017/03/10)

Replica Setreplicas: 3template:

CA B

Page 46: Kubernetes in 30 minutes (2017/03/10)

Replica Setreplicas: 3template:

A B

Page 47: Kubernetes in 30 minutes (2017/03/10)

Replica Setreplicas: 3template:

A B D

Page 48: Kubernetes in 30 minutes (2017/03/10)

Deployment

Page 49: Kubernetes in 30 minutes (2017/03/10)

Manages Replica Set state transitions

Page 50: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Page 51: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Page 52: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Change some settings, please!

Page 53: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

2Change some settings,

please!

Page 54: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Replica Set B

replicas: 2template:

2Change some settings,

please!

Page 55: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Replica Set B

replicas: 2template:

2Change some settings,

please!

Page 56: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Replica Set B

replicas: 2template:

2Change some settings,

please!

Page 57: Kubernetes in 30 minutes (2017/03/10)

Keeps track of state change history

Page 58: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Page 59: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Areplicas: 3template:

Page 60: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Areplicas: 3template:

Change some settings, please!

Page 61: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Areplicas: 3template:

2Change some settings,

please!

Page 62: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Areplicas: 3template:

Breplicas: 2template:

2Change some settings,

please!

Page 63: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Areplicas: 3template:

Breplicas: 2template:

2Change some settings,

please!

Page 64: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Breplicas: 2template:

2Change some settings,

please!

Page 65: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

Page 66: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

3

Page 67: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

rollback

3

Page 68: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

rollback

Areplicas: 3template:

3

Page 69: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

rollback

Areplicas: 3template:

3

Page 70: Kubernetes in 30 minutes (2017/03/10)

Deploymentreplicas: 3template:

2Oh wait, I actually

didn’t want to do that…

Areplicas: 3template:

3

Page 71: Kubernetes in 30 minutes (2017/03/10)

Services

Page 72: Kubernetes in 30 minutes (2017/03/10)

Logical set of Pods(and ways to access them)

Page 73: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.2

Pod 10.0.96.3

Pod 10.0.96.3

Raw Pod Access

Page 74: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.2

Pod 10.0.96.3

Pod 10.0.96.3

Raw Pod Access

Page 75: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.2

Pod 10.0.96.3

Pod 10.0.96.3

Raw Pod Access

Page 76: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.2

Pod 10.0.96.3

Raw Pod Access

Page 77: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.2

Pod 10.0.96.3

Raw Pod Access

Page 78: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.3

role=web

Access Via Service

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 79: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.3

role=web

Access Via Service

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 80: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.3

role=web

Access Via Service

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 81: Kubernetes in 30 minutes (2017/03/10)

Pod 10.0.96.3

role=web

Access Via Service

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 82: Kubernetes in 30 minutes (2017/03/10)

Access Via Service

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 83: Kubernetes in 30 minutes (2017/03/10)

Access Via Service

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 84: Kubernetes in 30 minutes (2017/03/10)

Access Via Service

Pod 10.0.96.6

role=web

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 85: Kubernetes in 30 minutes (2017/03/10)

Access Via Service

Pod 10.0.96.6

role=web

Pod 10.0.96.4

role=web

Servicematch role=web

Pod 10.0.96.2

role=web

Pod 10.0.96.5

role=db

Page 86: Kubernetes in 30 minutes (2017/03/10)

Secrets

Page 87: Kubernetes in 30 minutes (2017/03/10)

Store pieces of data in k8s

Page 88: Kubernetes in 30 minutes (2017/03/10)

e.g. Identity Information

Page 89: Kubernetes in 30 minutes (2017/03/10)

(securely)

Page 90: Kubernetes in 30 minutes (2017/03/10)

(…in the future)

Page 91: Kubernetes in 30 minutes (2017/03/10)

Secret

key1 → base64 value

key3 → base64 value

key2 → base64 value

Page 92: Kubernetes in 30 minutes (2017/03/10)

Pod

container

volumes

container: volumeMounts: - name: certificates mountPath: /etc/ssl/certs

volumes: - name: certificates secret: secretName: ca-certificates

Page 93: Kubernetes in 30 minutes (2017/03/10)

Pod

container

volumes

env: - name: foo-secret valueFrom:

secretKeyRef: name: foo value: secret-value

Page 94: Kubernetes in 30 minutes (2017/03/10)

ConfigMaps

Page 95: Kubernetes in 30 minutes (2017/03/10)

Same as Secrets (Unprotected)

Page 96: Kubernetes in 30 minutes (2017/03/10)

Ingress

Page 97: Kubernetes in 30 minutes (2017/03/10)

Services are for within the cluster only

(external IPs allowed, but don’ use that to serve external requests)

Page 98: Kubernetes in 30 minutes (2017/03/10)

(New since 1.2)

Inbound connections to internal cluster services

Page 99: Kubernetes in 30 minutes (2017/03/10)

Please checkout my presentation https://docs.google.com/presentation/d/

11ZN6qgiuZZfVyhBK2hjp1vhp_5N0DOGnAmhPreS3L5A/pub?start=false&loop=false&delayms=3000

Page 100: Kubernetes in 30 minutes (2017/03/10)

DaemonSets

Page 101: Kubernetes in 30 minutes (2017/03/10)

Ensure nodes run a copy of a Pod

Node

prometheus-exporter prometheus-exporter prometheus-exporter

Node Node

Page 102: Kubernetes in 30 minutes (2017/03/10)

PetSets

Page 103: Kubernetes in 30 minutes (2017/03/10)

PetSetsStatefulSets

Page 104: Kubernetes in 30 minutes (2017/03/10)

Use only when *really* needed

Page 105: Kubernetes in 30 minutes (2017/03/10)

Keeps unique IDs in replicas (x-0, x-1, x-2,…)

Page 106: Kubernetes in 30 minutes (2017/03/10)

Questions?