kubernetes, pourquoi et comment

66
Kubernetes Pourquoi et comment ?

Upload: jean-baptiste-claramonte

Post on 09-Jan-2017

638 views

Category:

Software


2 download

TRANSCRIPT

Page 1: kubernetes, pourquoi et comment

KubernetesPourquoi et comment ?

Page 2: kubernetes, pourquoi et comment

Qui sommes nous ?

2

@geromeegron@jbclaramonte

Page 3: kubernetes, pourquoi et comment

Agenda

Pourquoi ?

Orchestration, scheduler, cluster management …

Comment ?

Concepts

Spécificités

Cas Pratique

3

Page 4: kubernetes, pourquoi et comment

4

Orchestration, Scheduler,

Cluster management, … ?

Page 5: kubernetes, pourquoi et comment

5

Cela reste intuitif

Containers sur une machine

Apache Tomcat Postgres

Page 6: kubernetes, pourquoi et comment

6

Mais quand on passe à plusieurs serveurs on comprend vite qu’il faut un outil pour pouvoir garder le contrôle

Containers sur plusieurs machines

Apache

Tomcat

Tomcat

Postgres

Redis

Tomcat

Redis

Page 7: kubernetes, pourquoi et comment

Et si ...

Page 8: kubernetes, pourquoi et comment

… un container s’arrête … ?

Page 9: kubernetes, pourquoi et comment

… on veut scaler facilement … ?

Page 10: kubernetes, pourquoi et comment

Comment nos applications connaissent les endpoints des

services appellés ?

Page 11: kubernetes, pourquoi et comment

Comment se passe la persistance des données de certains de mes containers

Page 12: kubernetes, pourquoi et comment

12

En fait ...

Page 13: kubernetes, pourquoi et comment

13

Vous avez besoin d’un …Orchestrateur

(de containers)

Page 14: kubernetes, pourquoi et comment

14

Orchestration=

Cluster Management+

Container Scheduling

Page 15: kubernetes, pourquoi et comment

15

Cluster Management ?

Page 16: kubernetes, pourquoi et comment

16

Cluster Management

ClusterManager

Page 17: kubernetes, pourquoi et comment

17

Cluster Management

A

ClusterManager

Page 18: kubernetes, pourquoi et comment

18

Cluster Management

ClusterManager

AA

j’ai un nouveau serveur dans mon cluster

Page 19: kubernetes, pourquoi et comment

19

Container Scheduling ?

Page 20: kubernetes, pourquoi et comment

20

Container Scheduling

B

A

C

Scheduler

Page 21: kubernetes, pourquoi et comment

21

Deploy

Page 22: kubernetes, pourquoi et comment

22

Container Scheduling

B

A

C

Scheduler

deploy

Page 23: kubernetes, pourquoi et comment

23

Container Scheduling

B

A

C

Scheduler

deploy

Page 24: kubernetes, pourquoi et comment

24

Scale

Page 25: kubernetes, pourquoi et comment

25

Container Scheduling

B

A

C

Scheduler

scale

Page 26: kubernetes, pourquoi et comment

26

Container Scheduling

B

A

C

Scheduler

scale

Page 27: kubernetes, pourquoi et comment

27

Health check

Page 28: kubernetes, pourquoi et comment

28

Container Scheduling

B

A

C

Scheduler

Page 29: kubernetes, pourquoi et comment

29

Container Scheduling

B

A

C

Scheduler

Page 30: kubernetes, pourquoi et comment

30

Scheduler Classification

Page 31: kubernetes, pourquoi et comment

Monolithic

un cluster manager

+

un scheduler

Google Borg

31

Two Level

un cluster manager

+

plusieurs scheduler

Mesos Marathon

Shared State

plusieurs schedulers ”autonomes”

Omega, Kubernetes

Page 32: kubernetes, pourquoi et comment

Historique

Kubernetes

Page 33: kubernetes, pourquoi et comment

33

2004 : Google Borg

2006 : Google release les cgroups dans linux

2009 ? : Google Omega

2011 : Mesos

2014 : Google “open source” Kubernetes

2015 : Kubernetes V1.0

Page 34: kubernetes, pourquoi et comment

34

Page 35: kubernetes, pourquoi et comment

Concepts

Kubernetes

Page 36: kubernetes, pourquoi et comment

36

Master

Node

Node

ClusterKubelet

Kubelet

Page 37: kubernetes, pourquoi et comment

37

Node

Kubelet

Docker

Pod Pod Pod

Page 38: kubernetes, pourquoi et comment

38

Pod

● Plus petite unité logique du cluster

● Englobe un ou plusieurs conteneur(s) partageant un même

contexte (adresse IP, volumes)

● Unité pouvant être répliquée

● Lié à un node

● Existence temporaire

Page 39: kubernetes, pourquoi et comment

Replication controller

● Superviseur des pods à travers le cluster

● Se base sur un template de pod

● Son rôle est de s’assurer qu’un certain nombre de pods sont

actuellement en vie

● Ce n’est pas un load balancer!

39

Page 40: kubernetes, pourquoi et comment

Service

● Point d’accès à un pod ou à un ensemble de pods

● N’est pas lié au Replication Controller

● Load balancer

40

{ "kind": "Service", "apiVersion": "v1", "metadata": { "name": "my-service" }, "spec": { "selector": { "app": "MyApp" }, "ports": [ { "protocol": "TCP", "port": 80, "targetPort": 9376 } ] }}

Page 41: kubernetes, pourquoi et comment

41

Service [name=my-service]{

selector: MyApp}

Pod 1{

label: MyApp}

Pod 2{

label: MyApp}

Page 42: kubernetes, pourquoi et comment

En résumé

● Node / Master● Pods● Replication Controller● Service

42

Page 43: kubernetes, pourquoi et comment

Spécificités

Kubernetes

Page 44: kubernetes, pourquoi et comment

Appel du service intra-cluster

$client = new redis_client([ 'scheme' => 'tcp', 'host' => 'my-service', 'port' => 80, ]);

44

Page 45: kubernetes, pourquoi et comment

Et de l’extérieur?

45

Lors de la configuration d’un service, un champ type est à configurer:

● cluster IP (par défaut et non accéssible de l’extérieur)

● node port

● load balancer

Page 46: kubernetes, pourquoi et comment

Node

Node

8888

8888

Pod

Pod

46

Page 47: kubernetes, pourquoi et comment

Composition du master

● Expose une API REST

● Replication controller

● Scheduler

● etcd

● Node controller

47

Page 48: kubernetes, pourquoi et comment

48

Node controller

● S’occupe de vérifier le statut des nodes

● N’est pas capable de provisionner les nodes

● Ajoute les nodes qui sont configurés au cluster

● Supporte jusqu’à 100 noeuds (objectifs: 1000 pour 2016)

Page 49: kubernetes, pourquoi et comment

Configuration d’un node

● Kubelet

● Kube-proxy

● Docker

● Flannel (ou autre surcouche réseau)

49

Page 50: kubernetes, pourquoi et comment

Health checking

Trois types:

● HTTP Health checks

● Container exec

● TCP Socket

50

Page 51: kubernetes, pourquoi et comment

Volume

● Cycle de vie lié à celui du pod le contenant, selon le type● Un pod peut être lié à plusieurs volumes● Plusieurs types de volumes sont disponibles:

○ emptyDir○ gcePersistentDisk○ awsElasticBlockStore○ nfs○ gitRepo○ secret○ etc ...

51

Page 52: kubernetes, pourquoi et comment

Comment déployer un cluster?

● En local○ Vagrant○ Docker○ Cluster en local

● Solution hôte○ Google Container Engine

● Solution Cloud○ GCE○ AWS○ Azure

● Autres

52

Page 53: kubernetes, pourquoi et comment

Cas pratique

Kubernetes

Page 54: kubernetes, pourquoi et comment

Comment déployer mon application ?

Nous allons déployer une application constitué de:

● Un master redis

● Deux slaves redis

● Trois frontends accessibles de l’extérieur

54

Page 55: kubernetes, pourquoi et comment

55

Redis Master

Redis Slave

Frontend

Frontend

Frontend

Load Balancer

Redis Slave

Page 56: kubernetes, pourquoi et comment

56

Pod Redis Master

Replication Controller

Page 57: kubernetes, pourquoi et comment

57

Pod Redis Master

Replication Controller

Service Redis Master

Page 58: kubernetes, pourquoi et comment

58

Pod Redis Master

Replication Controller

Service Redis Master

Pod Redis Slave

Pod Redis Slave

Replication Controller

Page 59: kubernetes, pourquoi et comment

59

Pod Redis Master

Replication Controller

Service Redis Master

Service Redis Slave

Pod Redis Slave

Pod Redis Slave

Replication Controller

Page 60: kubernetes, pourquoi et comment

60

Pod Redis Master

Replication Controller

Service Redis Master

Service Redis Slave

Pod Redis Slave

Pod Redis Slave

Replication Controller

Pod Frontend

Pod Frontend

Pod Frontend

Replication Controller

Page 61: kubernetes, pourquoi et comment

61

Pod Redis Master

Replication Controller

Service Redis Master

Service Redis Slave

Pod Redis Slave

Pod Redis Slave

Replication Controller

Pod Frontend

Pod Frontend

Pod Frontend

Replication Controller

Service Frontend en mode load balancer

Page 62: kubernetes, pourquoi et comment

Comment puis-je monitorer mon cluster?

62

Master

Node

PodPod

Node

Heapster

Kubelet

Kubelet

cAdvisor

cAdvisor

Storage Backend

Page 63: kubernetes, pourquoi et comment

Conclusion

Kubernetes

Page 64: kubernetes, pourquoi et comment

Conclusion

● Un projet stabilisé pour la V1

● Amélioration de la documentation, mais peut encore mieux

faire

● Beaucoup de choses à venir○ provisionning de node

○ migration de pod

● Cherche à être totalement adaptable

64

Page 65: kubernetes, pourquoi et comment

Questions / Réponses

Kubernetes

Page 66: kubernetes, pourquoi et comment

Merci

Kubernetes