Slide 1

Slide 1 text

From pets to cattle The way of Kubernetes

Slide 2

Slide 2 text

@agonzalezro

Slide 3

Slide 3 text

1. Why the title? 2. Containers 3. Kubernetes concepts 4. Kubernetes architecture 5. Questions

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

ContainerS

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

chroot Jails 1982 2000 2001 2006 2008 2009 2013 2014 Linux VServer Generic Process Containers cgroups LXC Kernel namespaces Mesos Docker Kubernetes Rocket

Slide 9

Slide 9 text

“Former” architecture Infrastructure Host Operating System Hypervisor Guest OS Guest OS Guest OS Bin/Libs Bin/Libs Bin/Libs App #1 App #2 App #3

Slide 10

Slide 10 text

Docker architecture Infrastructure Host Operating System Hypervisor Guest OS Guest OS Guest OS Bin/Libs Bin/Libs Bin/Libs App #1 App #2 App #3 Docker engine

Slide 11

Slide 11 text

Dockerfile FROM ubuntu:16.04 MAINTAINER Docker RUN apt-key adv --keyserver ... RUN echo "deb http://repo.mongodb.org/... RUN apt-get update && apt-get install -y mongodb-org RUN mkdir -p /data/db EXPOSE 27017 ENTRYPOINT ["/usr/bin/mongod"]

Slide 12

Slide 12 text

ExamplE

Slide 13

Slide 13 text

NGINX MySQL Ghost

Slide 14

Slide 14 text

NGINX MySQL Ghost Containers

Slide 15

Slide 15 text

NGINX MySQL Ghost Containers Registry

Slide 16

Slide 16 text

Nodes

Slide 17

Slide 17 text

Nodes NGINX MySQL Ghost

Slide 18

Slide 18 text

Nodes NGINX MySQL Ghost NGINX MySQL Ghost

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

OrchestratioN

Slide 21

Slide 21 text

OrchestratioN with Kubernetes

Slide 22

Slide 22 text

–k8s documentation “Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.”

Slide 23

Slide 23 text

Orchestration • Schedule containers in physicals machines • Control lifecycle of those containers • Private network & load balancing • Horizontal scaling • Rollouts & rollbacks • Extras: service discovery, storage, secrets…

Slide 24

Slide 24 text

NGINX MySQL Ghost Pods

Slide 25

Slide 25 text

NGINX MySQL Ghost Pods Secret

Slide 26

Slide 26 text

++ • Volumes (persistent and not)! • ConfigMaps • LivenessProbe and ReadinessProbe

Slide 27

Slide 27 text

NGINX MySQL Ghost • layer=web • env=production • v=v1_final_this_works_final2 • layer=db • backend=mysql Labels

Slide 28

Slide 28 text

NGINX MySQL Ghost Replica Sets

Slide 29

Slide 29 text

NGINX MySQL Ghost NGINX Ghost Replica Sets

Slide 30

Slide 30 text

Replica Set++ • Autoscalable!
 (based on Heapster)

Slide 31

Slide 31 text

NGINX MySQL Ghost NGINX Ghost Deployment

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

NGINX Ghost NGINX Ghost Service

Slide 34

Slide 34 text

NGINX NGINX Service Ingress Service Service

Slide 35

Slide 35 text

Deployments

Slide 36

Slide 36 text

Namespaces

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Special pets/cases • DaemonSet • PetSet

Slide 39

Slide 39 text

Kubernetes master Node #1 Node #1 Kubernetes master Node #1 Container engine Container #1 Container #2 … Kube proxy Kubelet etcd

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

YAMLs apiVersion: extensions/v1beta1 kind: Deployment metadata: name: ghost labels: k8s-app: "ghost" spec: replicas: 1 template: metadata: labels: k8s-app: "ghost" spec: containers: - name: “nginx” ...

Slide 42

Slide 42 text

Sweet End Jobs &
 Scheduled jobs

Slide 43

Slide 43 text

Thanks! @agonzalezro