229
#DevoxxFR Kubernetes University Cap sur l’orchestration ! Cédric Hauber @cedboss Gérôme Egron @geromeegron Jean-Baptiste Claramonte @jbclaramonte 1

Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

Embed Size (px)

Citation preview

Page 1: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Kubernetes UniversityCap sur l’orchestration !

Cédric Hauber @cedbossGérôme Egron @geromeegronJean-Baptiste Claramonte @jbclaramonte

1

Page 2: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR 2

Page 3: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Présentation des speakers

3

Page 4: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Gérôme

@geromeegron

4

Page 5: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Rejoignez-nous ☺

[email protected]

blog.xebia.fr

5

Page 6: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Jean-Baptiste

@jbclaramonte

6

Page 7: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Cedric

@cedboss

7

Page 8: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Echangeons !

[email protected]

8

Cloud Designer Cloud Builder Cloud Runner

Page 9: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Mais pourquoi Docker ?

9

Page 10: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Il y a eu du changement

10

Page 11: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Product Backlog Tâches du sprint

Planification de sprint

Revue de sprint

Sprint2 à 4

semaines

Produit enrichi

Les équipes sont devenues agiles

11

Page 12: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Backend

DB

Frontend

Les architectures micro-services se sont répandues

12

Page 13: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Backend

DB

Frontend

Gateway

DB

Frontend

Module 1 Module 2 Module 3

Les architectures micro-services se sont répandues

13

Page 14: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Agilité Augmentation du nombre de livraisons

Micro-service

Augmentation du nombre de modules à livrer

14

Page 15: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Amélioration des livraisons

15

Page 16: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Scalabilité

16

Page 17: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Et Docker est arrivé

17

Page 18: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

VM vs conteneurs

Guest OS

Bins /Libs

App#1

Hyperviseur

Host OS

Server

Guest OS

Bins /Libs

App#1

Guest OS

Bins /Libs

App#1

Bins /Libs

App#1

Host OS

Server

Bins /Libs

App#1

Bins /Libs

App#1

Docker engine

VM Container

18

Page 19: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Raison de son succès

19

Page 20: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Livraison

● Lorsque je livre mon application, je la livre avec son contexte d’exécution

● Je peux placer mon conteneur sur n’importe quelle machine où Docker est installé

20

Page 21: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

21

Page 22: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Les premiers problèmes

22

Page 23: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Application découpée en plusieurs conteneurs

Application Rethink db

23

Page 24: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

En local

● Partage du réseau hôte

● Utilisation de l’option Link de Docker

● Utilisation de l’API X-Networking

24

Page 25: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

25

Page 26: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Sur un cluster ?

Nouvelles problématiques :

- Comment savoir où se trouvent les conteneurs- Que faire si un noeud tombe- Comment correctement allouer les ressources

26

Page 27: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Comment les résoudre ?

27

Page 28: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

Orchestrateur

28

Page 29: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

- Fleet- Swarm- Cattle (Rancher)- Mesos- Kubernetes

Lequel choisir ?

29

Page 30: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Fleet

+

- Partie intégrante de CoreOS- Repose sur Etcd- Permet de maintenir des services systemd dans le cluster

-

- Orchestrateur bas niveau → Fonctions limitées

30

Page 31: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Swarm

+

- Créé par Docker pour Docker- Repose sur Consul- Très simple d’utilisation

-

- Forte adhérence à l’API Docker- Pas de Health-Check, pas de LoadBalancing...

31

Page 32: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Rancher

+

- Image minimaliste- OS orienté tout-conteneur- Interface de management- Kubernetes / Swarm / Cattle out of the box

-

- Installation parfois compliquée- Supporte uniquement Docker

32

Page 33: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Kubernetes

+

- Profite du savoir-faire de Google en matière de Conteneurs- Repose sur Etcd- Compatible avec Docker & Rocket- Une communauté très établie- Regorge de fonctionnalités

-

- Mise en place parfois ardue

33

Page 34: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Mesos - Marathon

+

- Déploiement rapide sur AWS / GCP / Azure- A fait ses preuves- Supporte plusieurs frameworks

-

- Une couche supplémentaire qui n’est pas nécessaire dans 90% des cas

34

Page 35: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

“When you are not using Kubernetes to orchestrate Docker containers”Chris Baun

35

Page 36: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pourquoi Kubernetes

● La solution la plus aboutie● Preuve d’une expérience de plus de 10 ans● Grosse communauté● Opinionated● Cloud-Provider Aware :)● Production-Ready !● C’est super cool !

36

Page 37: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

37

Page 38: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Cluster Kubernetes

38

Page 39: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR 39

Page 40: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node

(physical or virtual machine)

cluster

node

(physical or virtual machine)

node

(physical or virtual machine)

node

(physical or virtual machine)

node

(physical or virtual machine)

node

(physical or virtual machine)

40

Page 41: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node

(physical or virtual machine)

cluster

Masternode

(physical or virtual machine)

Workernode

(physical or virtual machine)

Worker

node

(physical or virtual machine)

Workernode

(physical or virtual machine)

Workernode

(physical or virtual machine)

Worker

41

Page 42: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Demo

42

Page 43: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Kubernetes Binaries

43

Page 44: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Master)

API-Server

Scheduler

Controller-Manager

Etcd

Kubernetes Binaries

44

Page 45: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Etcd

● Développé par CoreOs● BDD Clé/Valeur distribuée ● Stocke l’état du cluster Kubernetes

45

Page 46: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

API-Server

● Point d’interface avec le cluster○ CLI: kubectl○ REST API

● Stateless○ Utilise etcd comme stockage

46

Page 47: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

API-Server

API-Server

SchedulerController-Manager

kubectl / http client

node (Master) node (Worker)

47

Page 48: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Scheduler

● Vision globale des ressources du cluster

● Distribue les conteneursd’applications dans le cluster

48

Page 49: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Scheduler

API-Server

SchedulerController-Manager

node (Master) node (Worker)

Pod

49

Page 50: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Controller-Manager

● C’est la boucle de contrôle pour toutes les ressources Kubernetes

● Assure l’état du cluster

50

Page 51: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Worker)

Kube-ProxyKubelet

Docker

Kubernetes Binaries

51

Page 52: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Kubelet

● Agent principal sur chaque Node● Reçoit les demandes de création

de Pod● Monte les Volumes des Pods● Lance les conteneurs● Rapporte l’état des

pods/conteneurs à l’API-Server

52

Page 53: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Kubelet

API-Server

Kubelet

Kube-Proxy

node (Master) node (Worker)

Pod

53

Page 54: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Kube-Proxy

● Observe l’ajout/suppression de Services et Endpoints

● Met à jour iptables

54

Page 55: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

API-Server

Kubelet

Kube-Proxy

node (Master) node (Worker)

watch

Kube-Proxy

55

Page 56: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

56

Page 57: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

57

Page 58: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

● Plus petite unité logique

● Encapsule un ou plusieurs conteneurs

○ Partage de contexte

● Unité pouvant être répliquée

● Lié à un node

● Existence temporaire

58

Page 59: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

IP

node Worker

kubernetes binaries

Virtual IP

Pod

Virtual IP

Pod

59

Page 60: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Labels

60

Page 61: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Labels (everywhere)

61

Page 62: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Labels

• Pairs clé/valeur

• Attachable à tous les éléments de kubernetes

• Donner du sens aux objets de kubernetes

62

Page 63: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node node node

node node node

disk: ssddisk: ssd

disk: ssd

gpu: true

disk: ssd

gpu: true

disk: ssd

63

Page 64: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

Pod

role: database

role: webfront

fwk: angular2

pods can have labels

64

Page 65: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

kubectl get pods -l release=stable, tier=frontend

kubectl get pods -l release in stable, tier in (frontend)’

kubectl get pods -l release in (stable, canary)’

kubectl get pods -l ‘release notin (stable)

Requêtage évolué

65

Page 66: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Replication controller

66

Page 67: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

role: database

selector

Replication controller

templatereplicas: 2

Pod

role: database

67

Page 68: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

role: database

selector

Replication controller

templatereplicas: 2

Pod

role: database

68

Page 69: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

role: database

selector

Replication controller

templatereplicas: 2

69

Page 70: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

role: database

selector

Replication controller

templatereplicas: 2

Pod

role: database

70

Page 71: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

role: database

selector

Replication controller

templatereplicas: 2

Pod

role: database

71

Page 72: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Replica Sets

72

Page 73: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

Pod

Create & healthcheck

ReplicaSet

73

Page 74: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Service

74

Page 75: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod

Load balancing Service

role: database

Pod

role: database

75

node Worker node Worker

Pod

role: application

Page 76: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

76

Page 77: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR 77

node Worker

PodService

rethinkdbdb: rethinkdbrole: replica

node Worker

Servicetodo-app

Pod

app: todo

Page 78: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

La communication inter-noeud

78

Page 79: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Plusieurs solutions

79

- Google Compute Advanced Routing- Flannel- OpenVSwitch- Weave- Calico- Romana

Page 80: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node

(physical or virtual machine)

Masternode

(physical or virtual machine)

Workernode

(physical or virtual machine)

Worker

node

(physical or virtual machine)

Workernode

(physical or virtual machine)

Workernode

(physical or virtual machine)

Worker

80

Page 81: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node

(physical or virtual machine)

Flannel

Masternode

(physical or virtual machine)

Workernode

(physical or virtual machine)

Worker

node

(physical or virtual machine)

Workernode

(physical or virtual machine)

Workernode

(physical or virtual machine)

Worker

81

Page 82: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

82

Page 83: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Virtual IP

Pod

ContainerContainer

Container

83

Page 84: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Virtual IP

Pod

ContainerContainer

Container

84

Page 85: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

rethinkdb1

Pod

app2

Pod

rethinkdb2

Pod

app1

10.2.1.2

10.2.1.5

10.2.2.3

10.2.2.2

Doc

ker

10.2

.1.1

/24

Flan

nel

10.2

.1.0

/16

Doc

ker

10.2

.2.1

/24

Flan

nel

10.2

.2.0

/16

Eth

erne

t19

2.16

8.0.

100

Eth

erne

t19

2.16

8.0.

100

85

Page 86: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

rethinkdb1

Pod

app2

Pod

rethinkdb2

Pod

app1

10.2.1.2

10.2.1.5

10.2.2.3

10.2.2.2

Doc

ker

10.2

.1.1

/24

Flan

nel

10.2

.1.0

/16

Doc

ker

10.2

.2.1

/24

Flan

nel

10.2

.2.0

/16

Eth

erne

t19

2.16

8.0.

100

Eth

erne

t19

2.16

8.0.

100

86

Page 87: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

rethinkdb1

Pod

app2

Pod

rethinkdb2

Pod

app1

10.2.1.2

10.2.1.5

10.2.2.3

10.2.2.2

Doc

ker

10.2

.1.1

/24

Flan

nel

10.2

.1.0

/16

Doc

ker

10.2

.2.1

/24

Flan

nel

10.2

.2.0

/16

Eth

erne

t19

2.16

8.0.

100

Eth

erne

t19

2.16

8.0.

100

MAC

Node IP

Container / Pod IP

Packet

Packet Flannel

87

Page 88: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

rethinkdb1

Pod

app2

Pod

rethinkdb2

Pod

app1

10.2.1.2

10.2.1.5

10.2.2.3

10.2.2.2

Doc

ker

10.2

.1.1

/24

Flan

nel

10.2

.1.0

/16

Doc

ker

10.2

.2.1

/24

Flan

nel

10.2

.2.0

/16

Eth

erne

t19

2.16

8.0.

100

Eth

erne

t19

2.16

8.0.

100

MAC

Node IP

Container / Pod IP

Packet

Packet Flannel

88

Page 89: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

rethinkdb1

Pod

app2

Pod

rethinkdb2

Pod

app1

10.2.1.2

10.2.1.5

10.2.2.3

10.2.2.2

Doc

ker

10.2

.1.1

/24

Flan

nel

10.2

.1.0

/16

Doc

ker

10.2

.2.1

/24

Flan

nel

10.2

.2.0

/16

Eth

erne

t19

2.16

8.0.

100

Eth

erne

t19

2.16

8.0.

100

MAC

Node IP

Container / Pod IP

Packet

Packet Flannel

89

Page 90: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

rethinkdb1

Pod

app2

Pod

rethinkdb2

Pod

app1

10.2.1.2

10.2.1.5

10.2.2.3

10.2.2.2

Doc

ker

10.2

.1.1

/24

Flan

nel

10.2

.1.0

/16

Doc

ker

10.2

.2.1

/24

Flan

nel

10.2

.2.0

/16

Eth

erne

t19

2.16

8.0.

100

Eth

erne

t19

2.16

8.0.

100

90

Page 91: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

rethinkdb1

Pod

app2

Pod

rethinkdb2

Pod

app1

10.2.1.2

10.2.1.5

10.2.2.3

10.2.2.2

Doc

ker

10.2

.1.1

/24

Flan

nel

10.2

.1.0

/16

Doc

ker

10.2

.2.1

/24

Flan

nel

10.2

.2.0

/16

Eth

erne

t19

2.16

8.0.

100

Eth

erne

t19

2.16

8.0.

100

91

Page 92: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

92

Page 93: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Service

93

Page 94: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

ServiceProblème :

un Pod est éphémèreson adresse IP également

Solution : le service joue le rôle d’ambassadeur en fournissant une adresse ip durable Il joue également le rôle de load balancer

94

Page 95: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Différents types de Service

• ClusterIP• NodePort• LoadBalancer

95

Page 96: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

ClusterIP

• Par défaut• IP Uniquement accessible depuis le cluster

• Virtual IP

96

Page 97: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Virt IP

Pod my-app

node Worker

IPIP

97

Page 98: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Virt IP

Pod my-app

node Worker

IPIP Pod another-app

98

Page 99: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Virt IP

Pod my-app

node Worker

IPIP Pod another-app

99

Page 100: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Virt IP

Pod my-app

Virt IPService my-app

node Worker

IPIP

100

Page 101: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Virt IP

Pod my-app

Virt IPService my-app

node Worker

IPIP Pod another-app

101

Page 102: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Virt IP

Pod my-app

Virt IPService my-app

node Worker

IPIP Pod another-app

102

Page 103: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

HOME=/rootHOSTNAME=another-app-a6nvu-ws5i4KUBERNETES_PORT_443_TCP_PORT=443KUBERNETES_PORT=tcp://10.0.0.1:443KUBERNETES_SERVICE_PORT=443KUBERNETES_SERVICE_HOST=10.0.0.1KUBERNETES_PORT_443_TCP_PROTO=tcpKUBERNETES_SERVICE_PORT_HTTPS=443KUBERNETES_PORT_443_TCP_ADDR=10.0.0.1KUBERNETES_PORT_443_TCP=tcp://10.0.0.1:443MY_APP_PORT_80_TCP=tcp://10.0.0.242:80MY_APP_SERVICE_PORT=80MY_APP_SERVICE_HOST=10.0.0.242MY_APP_PORT_80_TCP_PORT=80MY_APP_PORT=tcp://10.0.0.242:80MY_APP_PORT_80_TCP_PROTO=tcpMY_APP_PORT_80_TCP_ADDR=10.0.0.242NGINX_VERSION=1.9.14-1~jessiePATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPWD=/SHLVL=1

Dans le pod another-app

103

Page 104: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Accès via DNS

• Utilise le addon Kubernetes “SkyDNS”

<service-name>.<namespace>.svc.cluster.local

Ou tout simplement

<service-name>

104

Page 105: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

105

Page 106: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

NodePort

• Kubernetes alloue un port :• [30 000 - 32 767]

• Tous les Nodes du cluster vont exposer ce port

• Kubernetes expose alors le service :• <Node IP>:<NodePort>

106

Page 107: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod my-app

Service my-app

node WorkerLabel selector

107

Page 108: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod my-app

Service my-app

node Worker

IP:<NodePort>IP:<NodePort>

Label selector

108

Page 109: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod my-app

Service my-app

node Worker

IP:<NodePort>IP:<NodePort>

Label selector

109

Page 110: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod my-app

Service my-app

node Worker

IP:<NodePort>IP:<NodePort>

Label selector

110

Page 111: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod my-app

Service my-app

node Worker

IP:<NodePort>IP:<NodePort>

Label selector

111

Page 112: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod my-app

Service my-app

node Worker

IP:<NodePort>IP:<NodePort>

Label selector

112

Page 113: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Différences ClusterIP / NodePort

# type=NodePort

Name: my-app-node-portNamespace: defaultLabels: run=my-appSelector: run=my-appType: NodePortIP: 10.0.0.246Port: <unset> 80/TCPNodePort: <unset> 30084/TCPEndpoints: 172.17.0.2:80Session Affinity: None

# type=ClusterIP

Name: my-appNamespace: defaultLabels: run=my-appSelector: run=my-appType: ClusterIPIP: 10.0.0.242Port: <unset> 80/TCP

Endpoints: 172.17.0.2:80Session Affinity: None

113

Page 114: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Service load balancer

• Fonctionne uniquement pour certains Cloud Providers• GCP• AWS• RackSpace• OpenStack

114

Page 115: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node W

orker

Pod my-app

Cluster kubernetes

Cloud provider

node W

orkerPod my-app

node W

orker

Pod my-app

Load balancer

115

Page 116: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

116

Page 117: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Deployments

- Permet de déployer facilement des applications- Supporte plusieurs types de mises à jour :

- Rolling Update- Replace- A/B Deployment

- Il n’a pas vocation à remplacer le ReplicationController

117

Page 118: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Rolling Update

● Une application sera mise à jour de multiples fois au cours de son existence

● Cette procédure de mise à jour doit donc être simple et automatisée

● C’est d’autant plus vrai dans un cluster● Kubernetes a pensé à vous

118

Page 119: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1

119

Page 120: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1 Pod v.2

120

Page 121: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.2

121

Page 122: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1 Pod v.2

node Worker

Pod v.2

122

Page 123: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.2

node Worker

Pod v.2

123

Page 124: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

Pod v.2

ReplicaSet

node Worker

Pod v.2

node Worker

Pod v.2

124

Page 125: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

ReplicaSet

Pod v.2

ReplicaSet

node Worker

Pod v.2

node Worker

Pod v.2

125

Page 126: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.2

ReplicaSet

node Worker

Pod v.2

node Worker

Pod v.2

126

Page 127: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

127

Page 128: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

A/B Deployment

● Nous déployons une nouvelle version de l’application● Une fois testée, nous redirigons le trafic sur celle-ci

128

Page 129: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1

Service

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

129

Page 130: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1 Pod v.2

Service

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v2

130

Page 131: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1 Pod v.2Pod v.2

Service

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v2

app: todoversion: v2

131

Page 132: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1 Pod v.2Pod v.2Pod v.2

Service

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

132

Page 133: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1 Pod v.2Pod v.2Pod v.2

Service

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

133

Page 134: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

ReplicaSet

node Worker node Worker

Pod v.2Pod v.2Pod v.2

Service

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

134

Page 135: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

135

Page 136: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Replace

● L’ancienne version de l’application est supprimée● La nouvelle version nest déployée

136

Page 137: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

Pod v.1

ReplicaSet

ReplicaSet

node Worker

Pod v.1

node Worker

Pod v.1

Service

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

app: todoversion: v1

137

Page 138: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

ReplicaSet

node Worker node Worker

Pod v.2

Service

app: todoversion: v2

app: todoversion: v2

138

Page 139: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

ReplicaSet

node Worker node Worker

Pod v.2Pod v.2

Service

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

139

Page 140: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node Worker

ReplicaSet

node Worker node Worker

Pod v.2Pod v.2Pod v.2

Service

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

app: todoversion: v2

140

Page 141: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

141

Page 142: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Health checking

142

Page 143: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Cycle de vie

Pending

143

Page 144: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Cycle de vie

Pending Running

144

Page 145: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Cycle de vie

Pending Running

Failed

Succeeded

145

Page 146: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Cycle de vie

Pending Running

Failed

Succeeded

Unknown

146

Page 147: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Connaître l’état d’un conteneur

Rôle de l’agent Kubelet qui est présent sur chacun des nodes.

Est-ce que mon conteneur est prêt ?

→ Readiness probe

Est-ce que mon conteneur est vivant ?

→ Liveness probe

147

Page 148: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Handlers disponibles

- HTTP Health checks

- Container exec

- TCP Socket

148

Page 149: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Résultats possibles

- Success

- Failure

- Unknown

149

Page 150: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Et la réaction ?

Readiness échoue → le pod garde son état mais n’est plus accessible

Liveness échoue → dépend de la politique de redémarrage

150

Page 151: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Politique de redémarrage

- Always

- On failure

- Never

151

Page 152: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Worker)

Kube-ProxyKubelet

Docker

Pod

152

running

Conteneur

Restart policy : never

Page 153: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Worker)

Kube-ProxyKubelet

Docker

Pod

153

running

Conteneur

Restart policy : never

Page 154: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Worker)

Kube-ProxyKubelet

Docker

Pod

154

failed

Conteneur

Restart policy : never

Page 155: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Worker)

Kube-ProxyKubelet

Docker

Pod

155

running

Conteneur

Restart policy : Always ou onFailure

Page 156: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Worker)

Kube-ProxyKubelet

Docker

Pod

156

running

Conteneur

Restart policy : Always ou onFailure

Page 157: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

node (Worker)

Kube-ProxyKubelet

Docker

Pod

157

running

Conteneur

Restart policy : Always ou onFailure

Page 158: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Volumes

158

Page 159: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Le problème

Les Pods sont éphémères

Quand ils disparaissent leurs données disparaissent également

159

Page 160: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

La Solution

Les Volumes

Un Volume permet de créer un point de montage dans le conteneur d’un pod

160

Page 161: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Plusieurs types de Volumes

● emptyDir● hostPath● gitRepo● Secret

● nfs● iscsi● flocker● glusterfs● Rbd (Ceph)

● gcePersistentDisk● awsElasticBlockStore● azureFileVolume

● persistentVolumeClaim

Sur le NodeNon persistent

161

Page 162: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Plusieurs types de Volumes

● emptyDir● hostPath● gitRepo● Secret

● nfs● iscsi● flocker● glusterfs● Rbd (Ceph)

● gcePersistentDisk● awsElasticBlockStore● azureFileVolume

● persistentVolumeClaim

Sur le NodeNon persistant

Partage RéseauPersistant

162

Page 163: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Plusieurs types de Volumes

● emptyDir● hostPath● gitRepo● Secret

● nfs● iscsi● flocker● glusterfs● Rbd (Ceph)

● gcePersistentDisk● awsElasticBlockStore● azureFileVolume

● persistentVolumeClaim

Sur le NodeNon persistant

Partage RéseauPersistant

Accès stockage Cloud ProviderPersistant

163

Page 164: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Plusieurs types de Volumes

● emptyDir● hostPath● gitRepo● Secret

● nfs● iscsi● flocker● glusterfs● Rbd (Ceph)

● gcePersistentDisk● awsElasticBlockStore● azureFileVolume

● persistentVolumeClaim

Sur le NodeNon persistant

Partage RéseauPersistant

Accès stockage Cloud ProviderPersistant

Représente une demande d’espace de stockage

164

Page 165: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

emptyDir

Répertoire créé sur le host et alloué au conteneur

Survit au crash du conteneur

Peut être associé à de la RAM

Supprimé lors de l’arrêt/déplacement du Pod

A utiliser typiquement comme espace de travail temporaire

165

Page 166: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

emptyDirapiVersion: v1kind: Podmetadata: name: redisspec: containers: - name: redis image: redis volumeMounts: - name: redis-storage mountPath: /data/redis volumes: - name: redis-storage emptyDir: {}

La déclaration du volume

166

Page 167: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

emptyDirapiVersion: v1kind: Podmetadata: name: redisspec: containers: - name: redis image: redis volumeMounts: - name: redis-storage mountPath: /data/redis volumes: - name: redis-storage emptyDir: {}

La déclaration du volume

Montage du volume dans le conteneur

167

Page 168: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

hostPath

Accès à un répertoire spécifique du Node

Suppose que tous les Nodes ont la même arborescence

En général utilisation déconseillée sauf si vous savez ce que vous faites

168

Page 169: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Secret

- Permettent de stocker des informations sensibles:- Mot de passe- Clés SSH- Information d’authentification- …

- Stockés en clair dans Etcd- Ne sont pas cryptés- Ne sont pas stockés sur les noeuds

169

Page 170: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Secret$ echo "1f2d1e2e67df" | base64MWYyZDFlMmU2N2RmCg==

$ echo "admin" | base64YWRtaW4K

170

apiVersion: v1kind: Secretmetadata: name: mysecrettype: Opaquedata: password: MWYyZDFlMmU2N2RmCg== username: YWRtaW4K

Page 171: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Secret

171

apiVersion: v1kind: Secretmetadata: name: mysecrettype: Opaquedata: password: MWYyZDFlMmU2N2RmCg== username: YWRtaW4K

apiVersion: v1kind: Podmetadata: name: mysql labels: name: mysqlspec: containers: - image: mysql:5.6 name: mysql volumeMounts: - name: mysql-secret mountPath: /etc/mysql reaOnly: true volumes: - name: mysql-secret secret: secretName: mysecret

Récupération comme un Volume

Page 172: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Secret

172

apiVersion: v1kind: Secretmetadata: name: mysecrettype: Opaquedata: password: MWYyZDFlMmU2N2RmCg== username: YWRtaW4K

apiVersion: v1kind: Podmetadata: name: mysql labels: name: mysqlspec: containers: - image: mysql:5.6 name: mysql env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password

Récupération dans des variables d’environnement

Page 173: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nfs

Permet de monter un partage NFS

Pour pré-charger des données utilisées par le Pod

Pour persister les données au delà de la vie du Pod

173

Page 174: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nfsapiVersion: v1kind: Podmetadata: name: redisspec: containers: - name: redis image: redis volumeMounts: - name: nfs-redis-storage mountPath: /data/redis volumes: - name: nfs-redis-storage nfs: 192.168.10.3 path: /export/redis

La déclaration du volume nfs

174

Page 175: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nfsapiVersion: v1kind: Podmetadata: name: redisspec: containers: - name: redis image: redis volumeMounts: - name: nfs-redis-storage mountPath: /data/redis volumes: - name: nfs-redis-storage nfs: 192.168.10.3 path: /exports/redis

La déclaration du volume

Montage du volume dans le conteneur

175

Page 176: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Plusieurs types de Volumes

● emptyDir● hostPath● gitRepo● Secret

● nfs● iscsi● flocker● glusterfs● Rbd (Ceph)

● gcePersistentDisk● awsElasticBlockStore● azureFileVolume

● persistentVolumeClaim

Celui-ci est particulier !

176

Page 177: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

persistentVolumeClaim

Permet une abstraction du type de volume utilisé

Sépare l’offre et la demande d’utilisation d’espace de stockage

177

Page 178: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

1. L’admin créee un PV

nfs-pv

NFSStockage Réseau:

Persistent Volume:

Provisionning

178

Page 179: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nfs-pv.yaml

apiVersion: v1kind: PersistentVolumemetadata: name: nfs-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: server: 10.20.23.43 path: "/some/path"

Provisioningpar l’admin du cluster de 1 Go

179

Page 180: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nfs-pv.yaml

apiVersion: v1kind: PersistentVolumemetadata: name: nfs-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: server: 10.20.23.43 path: "/some/path"

Le PV autorise ici la lecture et l’écriture par un seul container

180

Page 181: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nfs-pv.yaml

apiVersion: v1kind: PersistentVolumemetadata: name: nfs-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: server: 10.20.23.43 path: "/some/path"

Possible aussi:● ReadOnlyMany● ReadWriteMany

181

Page 182: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

my-redis-persistence-volume-claim2. Le Dev “claims” des PV

nfs-pv

NFSStockage Réseau:

Persistent Volume:

Binding

182

Page 183: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

apiVersion: v1kind: PersistentVolumeClaimapiVersion: v1metadata: name: my-redis-persistence-volume-claimspec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi

my-redis-persistence-volume-claim.yamlapiVersion: v1kind: PersistentVolumemetadata: name: nfs-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: server: 10.20.23.43 path: "/some/path"

Bindingpar un développeur

ReadWriteOnceReadOnlyManyReadWriteMany

183

Page 184: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

my-redis-persistence-volume-claim

3. Le Dev utilise le claim dans un pod

nfs-pv

NFSStockage Réseau:

Persistent Volume:

Poddb

node (Worker) Using

184

Page 185: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

apiVersion: v1kind: Podmetadata: name: redisspec: containers: - name: redis image: redis volumeMounts: - name: my-redis-persistence-volume mountPath: "/data/redis volumes: - name: my-redis-persistence-volume persistentVolumeClaim: claimName: my-redis-persistence-volume-claim

apiVersion: v1kind: PersistentVolumeClaimapiVersion: v1metadata: name: my-redis-persistence-volume-claimspec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi

my-redis-pod.yamlapiVersion: v1kind: PersistentVolumemetadata: name: nfs-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: server: 10.20.23.43 path: "/some/path"

185

Page 186: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

apiVersion: v1kind: Podmetadata: name: redisspec: containers: - name: redis image: redis volumeMounts: - name: my-redis-persistence-volume mountPath: "/data/redis volumes: - name: my-redis-persistence-volume persistentVolumeClaim: claimName: my-redis-persistence-volume-claim

apiVersion: v1kind: PersistentVolumeClaimapiVersion: v1metadata: name: my-redis-persistence-volume-claimspec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi

my-redis-pod.yamlapiVersion: v1kind: PersistentVolumemetadata: name: nfs-pvspec: capacity: storage: 1Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: server: 10.20.23.43 path: "/some/path"

Montage

186

Page 187: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

my-redis-persistence-volume-claim4. Le Dev supprime le Pod et le PVC

nfs-pv

NFSStockage Réseau:

Persistent Volume:

Releasing

Poddb

node (Worker)

187

Page 188: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Le Persistent Volume passe à l’état “released”

nfs-pv

NFSStockage Réseau:

Persistent Volume:

node (Worker) Releasing

188

Page 189: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

La “reclaim policy” utilisée lors de la création du PV indique la strategie de remise dans le pool:

Retain : opération manuelleRecycle : nettoyage auto (rm -rf /thevolume/*)

nfs-pv

NFSStockage Réseau:

Persistent Volume:

node (Worker) Reclaiming

189

Page 190: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

PV concernés

● GCEPersistentDisk● AWSElasticBlockStore● NFS● iSCSI● RBD (Ceph Block Device)● Glusterfs● HostPath

190

Page 191: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Namespace

191

Page 192: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

A quoi ça sert ?

Différents environnements

Cloisonnement

192

Page 193: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nodePod nodePod node PodPodPod

Node 1 Node 2 Node 3

Namespace A

Namespace B

193

Page 194: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nodePod nodePod node PodPodPod

Node 1 Node 2 Node 3

Namespace A

Namespace B

194

Page 195: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nodePod nodePod node PodPodPod

Node 1 Node 2 Node 3

Namespace A

Namespace B

195

Page 196: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

nodePod nodePod node PodPodPod

Node 1 Node 2 Node 3

Namespace A

Namespace B

196

Page 197: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démo

197

Page 198: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

D’autres possibilités de Kubernetes

198

Page 199: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Limiter l’utilisation des ressources par un Pod

199

Page 200: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Limitations

Limitation du CPU

Limitation de la mémoire

Configuration par conteneur

200

Page 201: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

resourcesapiVersion: v1kind: Podmetadata: labels: run: my-nginx name: my-nginx namespace: default spec: containers: - image: nginx name: my-nginx resources: requests: memory: "64Mi" cpu: "250m" limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 80 protocol: TCP

201

Page 202: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Horizontal scaling

202

Page 203: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Horizontal scaling

Ajuste automatiquement le nombre de réplicas pour satisfaire la demande

Utilise l’utilisation de CPU comme mesure pour déterminer le nombre de réplicas nécessaires

203

Page 204: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Pod

ReplicaSet

Pod

Pod

204

HorizontalPod

Autoscaler Scale

Page 205: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Stratégie de placement des pods

205

Page 206: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

• Par défaut : “n’importe où dans le cluster”• Il est possible d’orienter le scheduler avec l’

attribut• nodeSelector + l’utilisation des labels

206

Page 207: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

apiVersion: v1kind: Podmetadata: labels: run: my-nginx name: my-nginx namespace: default spec: containers: - image: nginx name: my-nginx ports: - containerPort: 80 protocol: TCP nodeSelector: disktype: ssd

nodeSelector

207

Page 208: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Daemon Sets

208

Page 209: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Daemon Sets

- S’assure que tous les nodes exécute un Pod définit en tant que template

- Très utile pour des services de supervision

209

Page 210: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Jobs

210

Page 211: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Jobs

- Lance un ou plusieurs Pods et renvoie le résultat (success, fail) d’exécution de ceux-ci

- Il nettoie ensuite les Pods et garde en mémoire une trace des exécutions

211

Page 212: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Je veux tester !

Kubernetes.io

kmachine

Google Container Engine

Open Shift v3

212

Page 213: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Haute disponibilité

213

Page 214: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

3 règles

214

- Un cluster Etcd

- Volume durable

- Un master par zone

Page 215: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR 215

nodeMaster

Zone A

nodeWorker

nodeMaster

Zone B

nodeWorker

nodeMaster

Zone C

nodeWorker

podmaster podmaster podmaster

Page 216: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Kubernetes dans la vraie vie ?

216

Page 217: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Bi-Sam

- Solution BI à destination des fonds d’investissements- Hébergée chez RackSpace (Openstack)- Base de données Oracle → Cloud hybride- Besoin

- Haute disponibilité- Cloisonnement entre les clients- Scaling rapide

217

Page 218: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Episode I

Docker, en avant toute !

218

Page 219: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Episode II

CoreOS, Fleet, Etcd → Mes conteneurs tu protègeras

219

Page 220: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Episode III

Par l’orchestration du vainqueras

220

Page 221: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Episode IV

À mon environnement tu t’adapteras

221

Page 222: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Episode V

Des statistiques et des logs tu m’enseigneras

222

Page 223: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Episode VI

À la production tu survivras

223

Page 224: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Démos raspberry

224

Page 225: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR 225

Page 226: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Page 227: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR 227

Disclaimer

Page 228: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Questions ?

228

Page 229: Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !

#DevoxxFR

Merci

229