Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Les applications stateful dans Kubernetes par Cédric Hauber

WeScale
January 23, 2017

Les applications stateful dans Kubernetes par Cédric Hauber

Retrouvez ici les slides de la présentation de Cédric Hauber au dernier meetup CNCF Paris du 23 janvier 2017

WeScale

January 23, 2017
Tweet

More Decks by WeScale

Other Decks in Technology

Transcript

  1. #whoami Cédric Hauber Cloud Builder @ WeScale Kubernaut de la

    première heure Coding Lover 2 Les applications stateful dans Kubernetes
  2. Kubernetes 4 •L’orchestrateur par excellence de conteneurs Docker / Rkt

    •Initiative lancée par Google •17 000+ stars, 5 700+ forks et 900+ contributeurs •Pokemon Go possède le plus gros cluster Kubernetes hébergé chez Google ! Les applications stateful dans Kubernetes
  3. Pod •Plus petite unité logique •Encapsule un ou plusieurs conteneurs

    •Partage de contexte •Unité pouvant être répliquée •Liée à un node •Existence temporaire 7 Les applications stateful dans Kubernetes
  4. ReplicationController •Permet de maintenir un nombre constant de Pod d’un

    même type (replicas) •Utilise un sélecteur pour connaitre le nombre de Pods en activité (selector) •Un template permet de définir les Pods à créer (template) 8 Les applications stateful dans Kubernetes
  5. Service 9 Node Worker Pod role: database Node Worker Pod

    role: database Node Worker Pod role: application Service role: database Selector: Les applications stateful dans Kubernetes
  6. Deployment •Permet de déployer facilement des applications •Supporte plusieurs types

    de mises à jour : •Rolling Update •Replace •A/B Deployment 10 Les applications stateful dans Kubernetes
  7. Deployment 11 Cluster Pod role: application version: 1 Pod role:

    application version: 2 Pod role: application version: 1 Pod role: application version: 2 Pod role: application version: 1 Pod role: application version: 2 Pod role: application version: 1 Pod role: application version: 2 Les applications stateful dans Kubernetes
  8. PersistentVolume •Permet de définir un type de volume •GlusterFS •Ceph

    •GCE Persistent Disk •AWS Blockstore •… 12 Les applications stateful dans Kubernetes
  9. PersistentVolumeClaim •Permet de demander un volume •Se rattache a un

    ou plusieurs Pods 13 Les applications stateful dans Kubernetes
  10. StorageClass •Permet de provisionner à la volée des PersistentVolume •Fonctionne

    avec : •Ceph •GlusterFS •GCE Persistent Disk •AWS Block store •Cinder •… 14 Les applications stateful dans Kubernetes
  11. Les descripteurs Kubernetes 16 apiVersion: v1 kind: Pod metadata: labels:

    app: nginx version: v1 spec: containers: - name: nginx image: nginx:1.10 Les applications stateful dans Kubernetes
  12. Les descripteurs Kubernetes 17 apiVersion: extensions/v1beta1 kind: Deployment metadata: name:

    deployment-example spec: replicas: 3 template: metadata: labels: app: nginx version: v1 spec: containers: - name: nginx image: nginx:1.10 Les applications stateful dans Kubernetes
  13. Les descripteurs Kubernetes 18 apiVersion: v1 kind: Service metadata: name:

    service-example spec: ports: - name: http port: 80 targetPort: 80 selector: app: nginx version: v1 type: LoadBalancer Les applications stateful dans Kubernetes
  14. Un peu de rangement •Les descripteurs sont des fichiers, profitons

    en ! •Nous avons souvent besoin de les rendre dynamiques •Les dépendances c’est important ! •Corrélation image - descripteur 20 Les applications stateful dans Kubernetes
  15. Cycle de vie d’un Pod 24 Pending Running Unknown Failed

    Succeeded Les applications stateful dans Kubernetes
  16. Cycle de vie d’un Pod •Des hooks pour les conteneurs

    existent : •PreStart •PreStop 25 Les applications stateful dans Kubernetes
  17. Mon application n’est pas cloud-native •Ne supporte pas d’être relancée

    à n’importe quel moment •J’ai des données en session •Je stocke des choses sur le disque •Je connais à l’avance les noms de mes instances •Je créé le cluster à la main. 26 Les applications stateful dans Kubernetes
  18. StatefulSet •Des noms de Pods simples et prédictifs •Une découverte

    des noeuds par DNS •Du storage persistant provisionné dynamiquement •Conservation, autant que possible, de la localisation des Pods •Déploiement ordonné •Destruction ordonnée 28 Les applications stateful dans Kubernetes
  19. Et mes données ? •Nous ne pouvons y échapper, il

    faut stocker nos données quelque-part •Trois solutions s’offrent à nous : •Services managés (S3, RDS…) •Disque persistant (GCE Persistent Disk, AWS Blockstore…) •Stockage distribué (Ceph, GlusterFS…) 30 Les applications stateful dans Kubernetes
  20. Ceph 32 •Un système qui a fait ses preuves •Extensible

    jusqu’à l’exaoctet •Son approche micro-services en fait un système parfait pour Kubernetes •Un scaling vertical et horizontal •Aucun SPOF •Supporté par Kubernetes Les applications stateful dans Kubernetes
  21. Exemple: ElasticSearch •Trois composants principaux •Master •Client •Data •Tous ou

    presque nécessite des noms persistant, une découverte par DNS et des volumes persistant. •Notre application s’y connectera et injectera des données 34 Les applications stateful dans Kubernetes
  22. Exemple: ElasticSearch 35 Les applications stateful dans Kubernetes client-xx client-yy

    master-0 master-2 master-1 data-0 data-2 data-1 Discovery Service master-0.elasticsearch- discovery.cluster.svc.local master-2.elasticsearch- discovery.cluster.svc.local master-1.elasticsearch- discovery.cluster.svc.local data data data data data data
  23. weScale 38 Passion Fun Ecoute Partage Amélioration continue Sim plicité

    Am itié Ouverture Tolérance Les applications stateful dans Kubernetes