Slide 1

Slide 1 text

Comment gérer des applications nécessitant la persistance des données avec Kubernetes Devoxx France - 2018 1

Slide 2

Slide 2 text

Florian Woerner DevOps Engineer / Cloud Architect Onmyown @woernfl florian.woerner@onmyown.io 2

Slide 3

Slide 3 text

Agenda ● Contexte ● Volume provider ● Gestion le lifecycle de Volumes ● Demo ● Conclusion 3 @woernfl

Slide 4

Slide 4 text

Pourquoi choisir Kubernetes plutôt que des VMs ? 4 @woernfl

Slide 5

Slide 5 text

Parce que Kubernetes est un framework de gestion de système distribué 5

Slide 6

Slide 6 text

Pourquoi a-t-on besoin de gérer la persistance des données ? 6 @woernfl

Slide 7

Slide 7 text

Parce qu’une architecture stateless... ça n’existe pas 7

Slide 8

Slide 8 text

Types de volumes 8

Slide 9

Slide 9 text

Types de Volumes - Kubernetes Internals ● configMap ● downwardAPI ● emptyDir ● gitRepo ● hostPath ● local ● persistentVolumeClaim ● projected ● Secret ● csi 9 @woernfl

Slide 10

Slide 10 text

Types de Volumes - Public Cloud 10 @woernfl ● awsElasticBlockStore ● azureDisk ● azureFile ● gcePersistentDisk

Slide 11

Slide 11 text

Types de Volumes - Non Cloud Dependant ● cephfs ● fc (fibre channel) ● flocker ● glusterfs ● nfs ● iscsi ● portworxVolume ● quobyte ● rbd (Rados Block Device) ● scaleIO ● storageos ● vsphereVolume 11 @woernfl

Slide 12

Slide 12 text

Un problème ? 12 @woernfl

Slide 13

Slide 13 text

CSI à la rescousse 13

Slide 14

Slide 14 text

CSI c’est quoi ? ● Container Storage Interface ● Adopté par Kubernetes, Mesos et Cloud Foundry (pour l’instant) ● Supporté en beta dans Kubernetes 1.10 (planifié en stable pour 1.12) ● Un moyen standard d’exposer du storage au container 14 @woernfl

Slide 15

Slide 15 text

Pourquoi est ce important ? ● Interface commune à plusieurs plates-formes (standardisation) ● Permet l’évolution des storage provider en dehors des realease de Kubernetes 15 @woernfl

Slide 16

Slide 16 text

Mise en situation avec Bob le développeur et John le Sysadmin 16

Slide 17

Slide 17 text

Scénario: Persistent Volumes et Claims 17

Slide 18

Slide 18 text

Scénario: Persistent Volumes et Claims 18 @woernfl Kubernetes Node Storage (NFS, EBS, ...)

Slide 19

Slide 19 text

Scénario: Persistent Volumes et Claims 19 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume

Slide 20

Slide 20 text

Scénario: Persistent Volumes et Claims 20 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume Persistent Volume Claim

Slide 21

Slide 21 text

Scénario: Persistent Volumes et Claims 21 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume Persistent Volume Claim Pod

Slide 22

Slide 22 text

Scénario: Persistent Volumes et Claims 22 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume Persistent Volume Claim Pod

Slide 23

Slide 23 text

Scénario: Dynamic Provisioning 23

Slide 24

Slide 24 text

Scénario: Dynamic Provisioning 24 @woernfl Kubernetes Node Storage (NFS, EBS, ...)

Slide 25

Slide 25 text

Scénario: Dynamic Provisioning 25 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Storage Class - SDD Storage Class - HDD

Slide 26

Slide 26 text

Scénario: Dynamic Provisioning 26 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume Claim Storage Class - SDD Storage Class - HDD

Slide 27

Slide 27 text

Scénario: Dynamic Provisioning 27 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume Persistent Volume Claim Storage Class - SDD Storage Class - HDD

Slide 28

Slide 28 text

Scénario: Dynamic Provisioning 28 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume Persistent Volume Claim Pod Storage Class - SDD Storage Class - HDD

Slide 29

Slide 29 text

Scénario: Dynamic Provisioning 29 @woernfl Kubernetes Node Storage (NFS, EBS, ...) Persistent Volume Persistent Volume Claim Pod Storage Class - SDD Storage Class - HDD

Slide 30

Slide 30 text

Demo 30

Slide 31

Slide 31 text

Conclusion 31

Slide 32

Slide 32 text

Référence 32 ● Volumes Kubernetes Doc: https://kubernetes.io/docs/concepts/storage/volumes/ ● Kubernetes Tasks: https://kubernetes.io/docs/tasks/ ● Configure a Pod to Use a PersistentVolume for Storage: https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/ ● Run a Single-Instance Stateful Application: https://kubernetes.io/docs/tasks/run-application/run-single-instance-stateful-application/ ● Run a Replicated Stateful Application: https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/ ● StatefulSets Kubernetes Doc: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/ @woernfl

Slide 33

Slide 33 text

Merci ! 33 Link vers le repos: https://github.com/woernfl/k8s-stateful-demo