SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
A la découverte de Kubernetes
Introduction à Kubernetes et son utilisation
Qui suis-je ?
• Julien Maitrehenry
• DevOps, Cloud Architect, Développeur
• Co-fondateur, CEO @Kumojin
• Kumojin.com
• Github.com/jmaitrehenry
• jmaitrehenry.ca
Agenda
• Petit rappel de Docker
• Problématique lié à Docker
• Qu’est-ce qu’un orchestrateur de containeur
• Présentation de Kubernetes
• Élément d’un cluster
• Principaux objets dans Kubernetes
• Outils pratiques
Petit rappel de Docker
• Permet de créer, gérer et exécuter des images et des containeurs
• Basé sur une structure client <> serveur
• Ne gère que les images et containeurs sur le quel le serveur Docker s’exécute
Docker
client
Docker
server
containerd
runc Containeur
runc Containeur
runc Containeur
REST call gRPC call
Problématiques
•Que se passe t’il si le serveur devient indisponible ?
•Que faire quand le serveur manque de ressources ?
Un seul serveur
•Gestion des pannes
•Gestion des mises à jour
•Gestion de la haute disponibilité
•Gestion de la charge et des ressources
Gestion des containeurs
•Comment les services se découvrent ?
•Comment les services se parlent entre eux ?
Gestion réseau
Qu’est-ce qu’un orchestrateur de containeur ?
• Déploiement
• Déployer le bon nombre de
containeurs demandé
• Gérer le nombre de containeurs
pouvant être indisponible
• Arrêter le déploiement en cas
d’erreur
• Possibilité de revenir en arrière
• Gérer les ressources disponibles et
allouable par containeurs
• Réseau
• Permettre aux containeurs de
communiquer entre eux
• Permettre aux containeurs de se
découvrir (service discovery) par
nom plutôt que par IP
• Gérer l’équilibrage de charge entre
les containeurs
• Pouvoir exposer des containeurs
sur le réseau externe
Qu’est-ce qu’un orchestrateur de containeur ?
• Stockage
• Permettre de donner accès aux
volumes aux containeurs
• Abstraire le stockage réel
• Stockage pouvant être local ou
distant
• Scalability
• Augmenter ou réduire le nombre de
containeur pour une app suivant
différents critères
• Augmenter ou réduire le nombre
d’hôte pour répondre à la demande
• Haute disponibilité
• Gérer les pannes d’un containeur
• Gérer les pannes d’un hôte
• Vérifie l’état fonctionnel des
containeurs suivant nos règles
• Monitoring
• Exposer des métriques standards
pour les containeurs et les hôtes
• Exposer les logs des containeurs de
manière standards
Kubernetes
• Projet open source initié par Google
• Donnée à la CNCF en 2014
• Veut dire Capitaine en grec
• Abrégé en k8s (K……..S)
• Orchestrateur de container
• Alternative: Nomad, Mesos
• Système déclaratif et impératif
• Déclaratif: On défini un état voulu et on laisse k8s le
gérer
• Impératif: On peut créer, modifier, supprimer un objet
manuellement
Variant de Kubernetes: Vanille
Minikube
Variant de Kubernetes: Cloud
Azure
AKS
Scaleway
Kapsule
AWS
EKS
Google
GKE
Variant de Kubernetes: autres
Rancher
Élément
d’un cluster
• Master
• Nommé Control Plane
• Responsable de la gestion du
cluster
• Possibilité d’en avoir
plusieurs
• Workers
• Contiennent les containeurs
du cluster
• Peuvent être regroupé en
plusieurs pools
• Utilisent un container
runtime
Master
node
• API Server
• Expose l’API de Kubernetes aux clients et
aux nodes
• Controller Manager
• Node Controller
• Job Controller
• Endpoint controller
• Service Account & Token controller
• Scheduler
• Assigne les pods aux nodes
• etcd
• Key-Value store utilisé pour stocker les
données de Kubernetes
Worker
node
• Kube-Proxy
• Maintient les règles réseau
• Règles permettant la communication intra et
extra cluster
• Délègue la gestion des paquets à l’OS
(iptables/vips) quand c’est possible
• Kubelet
• Gère les containeurs créés par Kubernetes
• S’assure de leurs états de santé
• Container Runtime
• Responsable de l’exécution des containeurs
• Peut être containerd, cri-o, rktlet, …
Principaux
objets dans
Kubernetes
Pod Représentation d’une application
ReplicaSet Regroupement de Pod identique
Deployment Représentation de l’état voulu de notre application
Service Mettre les pods sur le réseau
Ingress Rend les services disponibles depuis l’externe
Volumes Stockage persistent pour les pods
Namespace Regroupement logique de ressources
Tout est
YAML, tout
est dans les
labels
• Les objets sont écrits en YAML (😍/🤢 au choix)
• Les sélecteurs sont basés sur les labels (key-value)
• Chaque objet appel une API Kubernetes et une
version d’API
• Chaque objet possède un nom et un type
Pod
• Objet de référence dans Kubernetes
• Représente une application
• Peut être constitué d’un ou plusieurs
containeurs
• Chaque containeur d’un même pod
doivent utiliser des ports différents
• La communication entre les containeurs
d’un même pod utilise localhost
• Chaque pod possède un nom et une IP
unique
Pod
API et version à utiliser
Type d’objet
Liste de labels
Spec de l’objet
ici, une liste de containers
Replica Set
• Maintient un ensemble stable de Pod à un moment donné
• Possède le nombre de Pod voulue (déclaratif)
• Pour atteindre son objectif, il va supprimer ou créer des Pods
• Le nombre de pod peut être 0
Deployment
• Représente notre application
• Responsable des pods qu’il gère indirectement
• Créer des ReplicaSet pour déployer une version de l’application
• Déploie selon 2 modes:
• Rolling Update
• Réduit la taille du ReplicaSet existant
• Créer un nouveau ReplicaSet pour la nouvelle version
• Scale le nouveau / downscale l’ancien pour avoir toujours au moins
un Pod disponible
• Recreate
• L’ancien ReplicaSet sera mis à 0 avant de créer le nouveau
• Possibilité de revenir en arrière (rollback)
• Utilisé pour des services Stateless
Deployment
ReplicaSet ReplicaSet
Deployment
ReplicaSet ReplicaSet
Deployment
ReplicaSet ReplicaSet
Deployment
Nombre de pod voulu
Définition du ReplicaSet / Pods
Autre objet pour déployer des Pods
• StatefulSet
• Comme un déploiement mais pour les services ayant besoin d’un stockage persistant
ou de nom fixe
• DaemonSet
• Déploie l’application sur tous les noeuds
• CronJob
• Exécute un pod suivant une fréquence écrite comme les cronjobs
Service
• Abstraction d’un groupe de Pod
• Map un port du service vers un ou port d’un pod
• Peut mapper plus d’un port
• Peut mapper un service hors Kubernetes
• Un service possède un enregistrement DNS (mon-service, mon-service.namespace)
• Différent type de service:
• ClusterIP: expose le service avec une IP interne au cluster, type par défaut
• NodePort: expose le service sur l’IP de chaque node du cluster, sur un port static, rendant le service
disponible à l’extérieur du cluster
• LoadBalancer: expose le service à l’extérieur du cluster à l’aide d’un load balanceur de la plateforme
cloud
Service
Type de service
Port mappé
Pod(s) sélectionné(s)
Ingress
• Expose des services à l’extérieur du cluster
• Le routage du traffic est controllé par des règles
• Basé sur le path, le domaine, etc
• Peut gérer la terminaison SSL
Ingress: exemple
Gestion du certificat SSL via Let’s Encrypt
Redirection http -> https
Terminaison SSL
Règle de routage
Volumes
• Un containeur ne possède qu’un stockage
éphémère
• Pour persister des fichiers, Docker possède la
notion de Volume
• Kubernetes pousse le concept plus loin
• Représente un dossier pour un/des containeur(s)
d’un pod
• Possibilité de monter un même volume dans
plusieurs pods
Volumes
Persistent
Volume
Storage Class
Persistent
Volume Claim
Persistent Volume (PV)
•Représente le volume
Persistent Volume Claim (PVC)
•Représente une demande pour un PV
Storage Class (SC)
•Fournit dynamiquement un PV sur demande
•Généralement fournit par le fournisseur cloud
Volumes: Persistent Volume
• Peut être provisionné statiquement:
• Les volumes doivent être créé à l’avance par un
administrateur
• Ou dynamiquement:
• Si la demande (PVC) n’en trouve pas de libre, il demande au
Storage Class de lui en fournir un
• Une fois le PV créé ou si un est disponible, il sera attaché au
pod le demandant
Persistent Volume
(PV)
Storage Class (SC)
Persistent Volume
Claim (PVC)
Attention !
Le PV possède une propriété qui va déterminer ce qu’il se passe une fois le PVC supprimé:
- Doit-il se supprimer ?
- Doit-il continuer d’exister ?
Le Storage Class peut en définir une par défaut, sinon, par défaut, K8S supprimera le volume
Namespace
• Regroupement de ressource Kubernetes
• Par projet
• Par équipe
• Par environnement
• (Presque) tous les objets sont attachés à un namespace
• Supprimer un namespace supprime tous les objets dans le namespace
Outils pratiques
• kubectl (https://kubernetes.io/docs/reference/kubectl/)
• Ligne de commande de Kubernetes
• (https://infra.app)
• Application desktop pour visualiser un ou plusieurs cluster kubernetes
• Permet de modifier des objets du cluster mais pas d’en créer
• Made in Canada
• Lens (https://k8slens.dev)
• IDE pour Kubernetes
• (http://helm.sh)
• Packager des applications complexes et les partager

Contenu connexe

Tendances

Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Julien Maitrehenry
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiquesdenier
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèseCOMPETENSIS
 
Formation libre OpenStack en Français
Formation libre OpenStack en FrançaisFormation libre OpenStack en Français
Formation libre OpenStack en FrançaisOsones
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionPeng Xiao
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueVincent Composieux
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiquesJoseph Glorieux
 

Tendances (20)

Docker
DockerDocker
Docker
 
Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?Docker, mais qu’est-ce que c’est ?
Docker, mais qu’est-ce que c’est ?
 
Intro to docker
Intro to dockerIntro to docker
Intro to docker
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 
Docker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatiqueDocker - un outil pour faciliter le développement et le déploiement informatique
Docker - un outil pour faciliter le développement et le déploiement informatique
 
Intro docker
Intro dockerIntro docker
Intro docker
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèse
 
Formation libre OpenStack en Français
Formation libre OpenStack en FrançaisFormation libre OpenStack en Français
Formation libre OpenStack en Français
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
DEVOPS
DEVOPSDEVOPS
DEVOPS
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
Alphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et ConfigurationAlphorm.com Formation Kubernetes : Installation et Configuration
Alphorm.com Formation Kubernetes : Installation et Configuration
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiques
 

Similaire à A la découverte de kubernetes

Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation ConteneurisationTADx
 
Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...Florian Woerner
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueAZUG FR
 
UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...
UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...
UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...NinaSAMMUT
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsFactoVia
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsAZUG FR
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationWescale
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerJean-Baptiste Claramonte
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaCédric Leblond
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxAnisSalhi3
 
Zimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra
 
slides meetup devops aix-marseille - juillet 2023
slides meetup devops aix-marseille - juillet 2023slides meetup devops aix-marseille - juillet 2023
slides meetup devops aix-marseille - juillet 2023Frederic Leger
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 

Similaire à A la découverte de kubernetes (20)

Tadx - Présentation Conteneurisation
Tadx -  Présentation ConteneurisationTadx -  Présentation Conteneurisation
Tadx - Présentation Conteneurisation
 
What is Docker
What is Docker What is Docker
What is Docker
 
Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...Comment gérer des applications nécessitant la persistance des données avec Ku...
Comment gérer des applications nécessitant la persistance des données avec Ku...
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
Cloud Computing.pdf
Cloud Computing.pdfCloud Computing.pdf
Cloud Computing.pdf
 
UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...
UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...
UE 2 PROJET - GROUPE MENANT--FERRY Th‚o, DO Alexandre, NADJAR Matt et Massi...
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Cedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds JavaMigrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Zimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and Ceph
 
slides meetup devops aix-marseille - juillet 2023
slides meetup devops aix-marseille - juillet 2023slides meetup devops aix-marseille - juillet 2023
slides meetup devops aix-marseille - juillet 2023
 
Openstack framework Iaas
Openstack framework IaasOpenstack framework Iaas
Openstack framework Iaas
 
Docker & Azure
Docker & AzureDocker & Azure
Docker & Azure
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 

Plus de Julien Maitrehenry

Comment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commitsComment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commitsJulien Maitrehenry
 
Global Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureGlobal Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureJulien Maitrehenry
 
Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure Julien Maitrehenry
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logJulien Maitrehenry
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printempsJulien Maitrehenry
 
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbotSécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbotJulien Maitrehenry
 
Fullstack monitoring - Overview
Fullstack monitoring - OverviewFullstack monitoring - Overview
Fullstack monitoring - OverviewJulien Maitrehenry
 
Docker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateDocker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateJulien Maitrehenry
 

Plus de Julien Maitrehenry (11)

Comment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commitsComment maitriser git et produire de beaux commits
Comment maitriser git et produire de beaux commits
 
Docker, but what it is?
Docker, but what it is?Docker, but what it is?
Docker, but what it is?
 
Global Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on AzureGlobal Azure Bootcamp Québec - Container on Azure
Global Azure Bootcamp Québec - Container on Azure
 
Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure Build a Docker Swarm cluster on Azure
Build a Docker Swarm cluster on Azure
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
 
Docker, ça mange quoi au printemps
Docker, ça mange quoi au printempsDocker, ça mange quoi au printemps
Docker, ça mange quoi au printemps
 
Code, ship and run
Code, ship and runCode, ship and run
Code, ship and run
 
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbotSécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
Sécuriser Docker - Utilisation du CIS Docker 1.12 by @guytalbot
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Fullstack monitoring - Overview
Fullstack monitoring - OverviewFullstack monitoring - Overview
Fullstack monitoring - Overview
 
Docker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-templateDocker cluster with swarm, consul, registrator and consul-template
Docker cluster with swarm, consul, registrator and consul-template
 

A la découverte de kubernetes

  • 1. A la découverte de Kubernetes Introduction à Kubernetes et son utilisation
  • 2. Qui suis-je ? • Julien Maitrehenry • DevOps, Cloud Architect, Développeur • Co-fondateur, CEO @Kumojin • Kumojin.com • Github.com/jmaitrehenry • jmaitrehenry.ca
  • 3. Agenda • Petit rappel de Docker • Problématique lié à Docker • Qu’est-ce qu’un orchestrateur de containeur • Présentation de Kubernetes • Élément d’un cluster • Principaux objets dans Kubernetes • Outils pratiques
  • 4. Petit rappel de Docker • Permet de créer, gérer et exécuter des images et des containeurs • Basé sur une structure client <> serveur • Ne gère que les images et containeurs sur le quel le serveur Docker s’exécute Docker client Docker server containerd runc Containeur runc Containeur runc Containeur REST call gRPC call
  • 5. Problématiques •Que se passe t’il si le serveur devient indisponible ? •Que faire quand le serveur manque de ressources ? Un seul serveur •Gestion des pannes •Gestion des mises à jour •Gestion de la haute disponibilité •Gestion de la charge et des ressources Gestion des containeurs •Comment les services se découvrent ? •Comment les services se parlent entre eux ? Gestion réseau
  • 6. Qu’est-ce qu’un orchestrateur de containeur ? • Déploiement • Déployer le bon nombre de containeurs demandé • Gérer le nombre de containeurs pouvant être indisponible • Arrêter le déploiement en cas d’erreur • Possibilité de revenir en arrière • Gérer les ressources disponibles et allouable par containeurs • Réseau • Permettre aux containeurs de communiquer entre eux • Permettre aux containeurs de se découvrir (service discovery) par nom plutôt que par IP • Gérer l’équilibrage de charge entre les containeurs • Pouvoir exposer des containeurs sur le réseau externe
  • 7. Qu’est-ce qu’un orchestrateur de containeur ? • Stockage • Permettre de donner accès aux volumes aux containeurs • Abstraire le stockage réel • Stockage pouvant être local ou distant • Scalability • Augmenter ou réduire le nombre de containeur pour une app suivant différents critères • Augmenter ou réduire le nombre d’hôte pour répondre à la demande • Haute disponibilité • Gérer les pannes d’un containeur • Gérer les pannes d’un hôte • Vérifie l’état fonctionnel des containeurs suivant nos règles • Monitoring • Exposer des métriques standards pour les containeurs et les hôtes • Exposer les logs des containeurs de manière standards
  • 8. Kubernetes • Projet open source initié par Google • Donnée à la CNCF en 2014 • Veut dire Capitaine en grec • Abrégé en k8s (K……..S) • Orchestrateur de container • Alternative: Nomad, Mesos • Système déclaratif et impératif • Déclaratif: On défini un état voulu et on laisse k8s le gérer • Impératif: On peut créer, modifier, supprimer un objet manuellement
  • 9. Variant de Kubernetes: Vanille Minikube
  • 10. Variant de Kubernetes: Cloud Azure AKS Scaleway Kapsule AWS EKS Google GKE
  • 11. Variant de Kubernetes: autres Rancher
  • 12. Élément d’un cluster • Master • Nommé Control Plane • Responsable de la gestion du cluster • Possibilité d’en avoir plusieurs • Workers • Contiennent les containeurs du cluster • Peuvent être regroupé en plusieurs pools • Utilisent un container runtime
  • 13. Master node • API Server • Expose l’API de Kubernetes aux clients et aux nodes • Controller Manager • Node Controller • Job Controller • Endpoint controller • Service Account & Token controller • Scheduler • Assigne les pods aux nodes • etcd • Key-Value store utilisé pour stocker les données de Kubernetes
  • 14. Worker node • Kube-Proxy • Maintient les règles réseau • Règles permettant la communication intra et extra cluster • Délègue la gestion des paquets à l’OS (iptables/vips) quand c’est possible • Kubelet • Gère les containeurs créés par Kubernetes • S’assure de leurs états de santé • Container Runtime • Responsable de l’exécution des containeurs • Peut être containerd, cri-o, rktlet, …
  • 15. Principaux objets dans Kubernetes Pod Représentation d’une application ReplicaSet Regroupement de Pod identique Deployment Représentation de l’état voulu de notre application Service Mettre les pods sur le réseau Ingress Rend les services disponibles depuis l’externe Volumes Stockage persistent pour les pods Namespace Regroupement logique de ressources
  • 16. Tout est YAML, tout est dans les labels • Les objets sont écrits en YAML (😍/🤢 au choix) • Les sélecteurs sont basés sur les labels (key-value) • Chaque objet appel une API Kubernetes et une version d’API • Chaque objet possède un nom et un type
  • 17. Pod • Objet de référence dans Kubernetes • Représente une application • Peut être constitué d’un ou plusieurs containeurs • Chaque containeur d’un même pod doivent utiliser des ports différents • La communication entre les containeurs d’un même pod utilise localhost • Chaque pod possède un nom et une IP unique
  • 18. Pod API et version à utiliser Type d’objet Liste de labels Spec de l’objet ici, une liste de containers
  • 19. Replica Set • Maintient un ensemble stable de Pod à un moment donné • Possède le nombre de Pod voulue (déclaratif) • Pour atteindre son objectif, il va supprimer ou créer des Pods • Le nombre de pod peut être 0
  • 20. Deployment • Représente notre application • Responsable des pods qu’il gère indirectement • Créer des ReplicaSet pour déployer une version de l’application • Déploie selon 2 modes: • Rolling Update • Réduit la taille du ReplicaSet existant • Créer un nouveau ReplicaSet pour la nouvelle version • Scale le nouveau / downscale l’ancien pour avoir toujours au moins un Pod disponible • Recreate • L’ancien ReplicaSet sera mis à 0 avant de créer le nouveau • Possibilité de revenir en arrière (rollback) • Utilisé pour des services Stateless Deployment ReplicaSet ReplicaSet Deployment ReplicaSet ReplicaSet Deployment ReplicaSet ReplicaSet
  • 21. Deployment Nombre de pod voulu Définition du ReplicaSet / Pods
  • 22. Autre objet pour déployer des Pods • StatefulSet • Comme un déploiement mais pour les services ayant besoin d’un stockage persistant ou de nom fixe • DaemonSet • Déploie l’application sur tous les noeuds • CronJob • Exécute un pod suivant une fréquence écrite comme les cronjobs
  • 23. Service • Abstraction d’un groupe de Pod • Map un port du service vers un ou port d’un pod • Peut mapper plus d’un port • Peut mapper un service hors Kubernetes • Un service possède un enregistrement DNS (mon-service, mon-service.namespace) • Différent type de service: • ClusterIP: expose le service avec une IP interne au cluster, type par défaut • NodePort: expose le service sur l’IP de chaque node du cluster, sur un port static, rendant le service disponible à l’extérieur du cluster • LoadBalancer: expose le service à l’extérieur du cluster à l’aide d’un load balanceur de la plateforme cloud
  • 24. Service Type de service Port mappé Pod(s) sélectionné(s)
  • 25. Ingress • Expose des services à l’extérieur du cluster • Le routage du traffic est controllé par des règles • Basé sur le path, le domaine, etc • Peut gérer la terminaison SSL
  • 26. Ingress: exemple Gestion du certificat SSL via Let’s Encrypt Redirection http -> https Terminaison SSL Règle de routage
  • 27. Volumes • Un containeur ne possède qu’un stockage éphémère • Pour persister des fichiers, Docker possède la notion de Volume • Kubernetes pousse le concept plus loin • Représente un dossier pour un/des containeur(s) d’un pod • Possibilité de monter un même volume dans plusieurs pods
  • 28. Volumes Persistent Volume Storage Class Persistent Volume Claim Persistent Volume (PV) •Représente le volume Persistent Volume Claim (PVC) •Représente une demande pour un PV Storage Class (SC) •Fournit dynamiquement un PV sur demande •Généralement fournit par le fournisseur cloud
  • 29. Volumes: Persistent Volume • Peut être provisionné statiquement: • Les volumes doivent être créé à l’avance par un administrateur • Ou dynamiquement: • Si la demande (PVC) n’en trouve pas de libre, il demande au Storage Class de lui en fournir un • Une fois le PV créé ou si un est disponible, il sera attaché au pod le demandant Persistent Volume (PV) Storage Class (SC) Persistent Volume Claim (PVC) Attention ! Le PV possède une propriété qui va déterminer ce qu’il se passe une fois le PVC supprimé: - Doit-il se supprimer ? - Doit-il continuer d’exister ? Le Storage Class peut en définir une par défaut, sinon, par défaut, K8S supprimera le volume
  • 30. Namespace • Regroupement de ressource Kubernetes • Par projet • Par équipe • Par environnement • (Presque) tous les objets sont attachés à un namespace • Supprimer un namespace supprime tous les objets dans le namespace
  • 31. Outils pratiques • kubectl (https://kubernetes.io/docs/reference/kubectl/) • Ligne de commande de Kubernetes • (https://infra.app) • Application desktop pour visualiser un ou plusieurs cluster kubernetes • Permet de modifier des objets du cluster mais pas d’en créer • Made in Canada • Lens (https://k8slens.dev) • IDE pour Kubernetes • (http://helm.sh) • Packager des applications complexes et les partager