Kubernetes in 20 minutes - HDE Monthly Technical Session 24

105
Kubernetes in 20 minutes HDE Monthly Technical Session July 22, 2016 Daisuke Maki @lestrrat

Transcript of Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Page 1: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Kubernetes in 20 minutes

HDE Monthly Technical Session July 22, 2016

Daisuke Maki @lestrrat

Page 2: Kubernetes in 20 minutes - HDE Monthly Technical Session 24
Page 3: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Netscape Navigator

Page 4: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Netscape Navigator

Page 5: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Kubernetes

Page 6: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

κυβερνήτης

Page 7: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

k8s

Page 8: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

“Something to do with containers…?

Page 9: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

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

Assumptions

Page 10: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Docker

Page 11: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

“Random containers doing their own sh*t”

Page 12: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Compose

Page 13: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

“Foreman on Acid”

Page 14: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Swarm

Page 15: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

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

Page 16: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

=

Page 17: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

“Batteries Included”

Page 18: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

K8s on GCP

GKE GCE Networking

…and others

Page 19: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Basic Concepts

Page 20: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Node

Page 21: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Hosts running k8s daemons

Page 22: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Node

kubelet

Node

kubelet

Node

kubelet

Master

Scheduler

etc..

API

Page 23: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod

Page 24: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Basic unit of deployment in k8s

Page 25: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Group of Containers

Page 26: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Container configurations

Page 27: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Shared storage

Page 28: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod

container

Page 29: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod

container

container

Page 30: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod

container

container

container

Page 31: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod

container

container

container

nginx

app

redis/cache

e.g.

Page 32: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Scheduled together(“co-scheduled”)

Page 33: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Guaranteed to be on the same node

(“co-located”)

Page 34: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Node NodeNode

Page 35: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Node NodeNode

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

Page 36: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Node Node

container

container

container

Page 37: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Node Node

container

container

container

This will NEVER happen

Page 38: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Miscellaneous

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

Page 39: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Set

Page 40: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Keeps track of Pod replicas

Page 41: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Setreplicas: 3template:

Page 42: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Setreplicas: 3template:

A

Page 43: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Setreplicas: 3template:

A B

Page 44: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Setreplicas: 3template:

CA B

Page 45: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Setreplicas: 3template:

CA B

Page 46: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Setreplicas: 3template:

A B

Page 47: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Replica Setreplicas: 3template:

A B D

Page 48: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deployment

Page 49: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Manages Replica Set state transitions

Page 50: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Page 51: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Page 52: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Change some settings, please!

Page 53: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

2Change some settings,

please!

Page 54: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Replica Set B

replicas: 2template:

2Change some settings,

please!

Page 55: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Replica Set A

replicas: 3template:

Replica Set B

replicas: 2template:

2Change some settings,

please!

Page 56: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Replica Set B

replicas: 2template:

2Change some settings,

please!

Page 57: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Keeps track of state change history

Page 58: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Page 59: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Areplicas: 3template:

Page 60: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Areplicas: 3template:

Change some settings, please!

Page 61: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Areplicas: 3template:

2Change some settings,

please!

Page 62: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Areplicas: 3template:

Breplicas: 2template:

2Change some settings,

please!

Page 63: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Areplicas: 3template:

Breplicas: 2template:

2Change some settings,

please!

Page 64: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Breplicas: 2template:

2Change some settings,

please!

Page 65: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

Page 66: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

3

Page 67: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

rollback

3

Page 68: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

rollback

Areplicas: 3template:

3

Page 69: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

Breplicas: 2template:

2Oh wait, I actually

didn’t want to do that…

rollback

Areplicas: 3template:

3

Page 70: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Deploymentreplicas: 3template:

2Oh wait, I actually

didn’t want to do that…

Areplicas: 3template:

3

Page 71: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Services

Page 72: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Logical set of Pods(and ways to access them)

Page 73: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod 10.0.96.2

Pod 10.0.96.3

Pod 10.0.96.3

Raw Pod Access

Page 74: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod 10.0.96.2

Pod 10.0.96.3

Pod 10.0.96.3

Raw Pod Access

Page 75: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod 10.0.96.2

Pod 10.0.96.3

Pod 10.0.96.3

Raw Pod Access

Page 76: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod 10.0.96.2

Pod 10.0.96.3

Raw Pod Access

Page 77: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod 10.0.96.2

Pod 10.0.96.3

Raw Pod Access

Page 78: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

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 20 minutes - HDE Monthly Technical Session 24

Secrets

Page 87: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Store pieces of data in k8s

Page 88: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

e.g. Identity Information

Page 89: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

(securely)

Page 90: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

(…in the future)

Page 91: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Secret

key1 → base64 value

key3 → base64 value

key2 → base64 value

Page 92: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Pod

container

volumes

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

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

Page 93: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

ConfigMaps

Page 94: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Same as Secrets (Unprotected)

Page 95: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Ingress

Page 96: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Services are for within the cluster only

Page 97: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

(New since 1.2)

Inbound connections to internal cluster services

Page 98: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

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

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

Page 99: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

DaemonSets

Page 100: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Ensure nodes run a copy of a Pod

Node

prometheus-exporter prometheus-exporter prometheus-exporter

Node Node

Page 101: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

PetSets

Page 102: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

snip.

Page 103: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Questions?

Page 104: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

Appendix: ECS vs GKE

https://railsadventures.wordpress.com/2015/12/06/why-we-chose-kubernetes-over-ecs/

Page 105: Kubernetes in 20 minutes - HDE Monthly Technical Session 24

If you want to play with k8s, I’m doing this entirely on GCP/GKE…

Come Join https://slack-invite-dot-builderscon-1248.appspot.com/