SlideShare une entreprise Scribd logo
Métriques applicatives dans K8s
Arnaud Mazin
Aurélien Gabet
Meetup Kubernetes #5
OCTO Technology
14 mars 2017
Aurélien Gabet
Consultant Senior
OCTO Technology
agabet@octo.com
@aGabet
Arnaud Mazin
Senior Manager Référent
OCTO Technology
amazin@octo.com
@ArnaudMAZIN
« Ce que je ne mesure pas
ne m’appartient pas »
(Rocco S.)
Architecture Technique Kubernetes
4
WWW
VIRTUAL MACHINE
KUBERNETES
MASTER DAEMONS
VIRTUAL MACHINE
KUBERNETES
MASTER DAEMONS
VIRTUAL MACHINE
KUBERNETES
MASTER DAEMONS
VIRTUAL MACHINE
ETCD
VIRTUAL MACHINE
ETCD
VIRTUAL MACHINE
ETCD
VIRTUAL MACHINE
KUBELET - DMZ
VIRTUAL MACHINE
Ingress-Controller
KUBELETES - DMZ
Ingress-Controller
VIRTUAL MACHINE
KUBELET - App
VIRTUAL MACHINE
App
KUBELET - App
App
VIRTUAL MACHINE
KUBELET - Infra
VIRTUAL MACHINE
InfrApp
KUBELET - Infra
InfrApp
Concepts Kubernetes
5
Isolation
Quotas
Pod Pod Pod
Service
ReplicatSet
Namespaces
VIP
Exposition
Load-Balancing
Monitoring
Provisioning
Ingress
Deployment
Routage HTTP
Terminaison SSL
Cycle de vie
(versioning,
rolling-update…)
StatefulSet
DaemonSet
ConfigMap
Secret
...
Beaucoup trop de solutions disponibles...
Heapster
collecte
graphes
alertes
dashboard
stockage
À regrouper en catégories...
collecte
graphes
alertes
dashboard
stockage
Au programme
collecte
graphes
alertes
dashboard
stockage
Au programme
Heapster
collecte
graphes
alertes
dashboard
stockage
Au programme
Heapster
collecte
graphes
alertes
dashboard
stockage
Au programme
Heapster
Architecture de Prometheus
curl http://localhost:8080/metrics
# HELP rest_client_request_status_codes Number of http requests, partitioned by metadata
# TYPE rest_client_request_status_codes counter
rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="DELETE"} 3
rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="GET"} 2758
rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="PATCH"} 3
rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="PUT"} 1305
rest_client_request_status_codes{code="201",host="10.240.0.10:6443",method="POST"} 58
L’URL de métriques
Implémenté dans les Kubelets
Durée de rétention : 2 minutes
Expose des métriques d’un nœud
● Génériques (système)
● Spécifiques aux conteneurs
Heapster
Implémenté sous forme d’un pod K8s
Durée de rétention : 2 minutes
Agrège les métriques des cAdvisors de tous les nœuds
Permet de remonter les métriques dans le dashboard Kubernetes
Est utilisé pour l’autoscalling des pods via la configuration des
HorizontalPodAutoscalers
Peut être utilisé pour renvoyer des métriques vers un back-end à long terme
(InfluxDB, Elastisearch, Hawkular…)
Peut aussi collecter des métriques custom (implémentation bof bof)
Mais aussi...
Des services de base exposent également un /metrics qui va bien :
◉ les API Servers K8s
◉ Etcd
D’autres agents existent pour fournir des métriques complémentaires :
◉ node-exporter
> Métriques systèmes génériques (indépendant de K8s)
> https://github.com/prometheus/node_exporter
◉ wmi-exporter (non testé)
> Idem, mais spécifique Windows via WMI
> https://github.com/martinlindhe/wmi_exporter
◉ kube-state-metrics
> Ajoute des métriques spécifiques aux déploiements & à la vie du cluster K8s
> https://github.com/kubernetes/kube-state-metrics
Heapster
(court terme)
InfluxDB
(long terme)
Grafana
(présentation)
Prometheus
(moyen terme)
Custom metrics
autoscaling
E/S
(long terme)
...
(long terme)
etcd
KUBELET
cAdvisor
APIServer
Kube
Dashboard
1. J’utilise le SDK prometheus-client pour mon langage de programmation
préféré
2. J’expose une URL avec mes métriques (au hasard /metrics)
3. J’annote mes pods (ou rs, ou deploy) pour que Prometheus les collecte
(a.k.a: scraping)
4. Je vérifie que mes compteurs remontent dans Prometheus
5. Je fait un dashboard de ouf / j’admire le résultat dans Grafana
Et si je veux mes métriques à moi ?
DEMO
TIME!!
Conclusion
◉ Prometheus, c’est bon mangez-en
> Intégration K8s + Grafana
> Requêtage PromQL
◉ Ajouter ses propres métriques, c’est facile, go for it
◉ Double chaîne Heapster vs. Prometheus un peu dommage
◉ Pas de sharding dans Prometheus => Cortex ?
◉ Peu de profondeur d’historique
◉ Redémarrage de prometheus ou kill -HUP pour changer les alertes
> fichier de conf, pas d’API pour les modifier
◉ REX sous forte charge ?
◉ Dans le cluster ou hors du cluster K8s ?
◉ Alerte dans Prometheus ou dans Grafana ?
OCTO TECHNOLOGY > THERE IS A BETTER WAY 21
VOUS CROYEZ QUE LES TECHNOLOGIES CHANGENT LE MONDE ?
NOUS AUSSI ! REJOIGNEZ-NOUS !
recrutement@octo.com
Nous recrutons aussi dans nos filiales
PARIS I RABAT I LAUSANNE I SÃO PAULO I SYDNEY
Des questions ?

Contenu connexe

Tendances

Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec Rancher
Anthony Sigogne
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Jérôme Petazzoni
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
Jérôme Petazzoni
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
Zenika
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
Sylvain Boily
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Publicis Sapient Engineering
 
Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *
Thierry M.
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
Nicolas Muller
 
Introduction à Docker et Gaudi
Introduction à Docker et GaudiIntroduction à Docker et Gaudi
Introduction à Docker et Gaudi
Emmanuel Quentin
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Cédric Leblond
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
Membré Guillaume
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
Paris Container Day
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
Membré Guillaume
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
Nicolas Hennion
 
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et ComposeChroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
Damien Duportal
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Membré Guillaume
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
Romain Chalumeau
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
ALTER WAY
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
gcatt
 
Intro to docker
Intro to dockerIntro to docker
Intro to docker
Abderrahmane Mechri
 

Tendances (20)

Déploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec RancherDéploiement et gestion d'un site web avec Rancher
Déploiement et gestion d'un site web avec Rancher
 
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
Docker : quels enjeux pour le stockage et réseau ? Paris Open Source Summit ...
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Docker du mythe à la réalité
Docker du mythe à la réalitéDocker du mythe à la réalité
Docker du mythe à la réalité
 
Docker@linuq
Docker@linuqDocker@linuq
Docker@linuq
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
 
Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *Distribuer une application avec Symfony & Docker *
Distribuer une application avec Symfony & Docker *
 
Docker - YaJUG
Docker  - YaJUGDocker  - YaJUG
Docker - YaJUG
 
Introduction à Docker et Gaudi
Introduction à Docker et GaudiIntroduction à Docker et Gaudi
Introduction à Docker et Gaudi
 
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
Retour d'expérience Docker: Puissance et simplicité de VSTS, déploiement sur ...
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
OpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse FaureOpenShift en production - Akram Ben Assi & Eloïse Faure
OpenShift en production - Akram Ben Assi & Eloïse Faure
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
Introduction à docker.io
Introduction à docker.ioIntroduction à docker.io
Introduction à docker.io
 
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et ComposeChroniques de formation : Scaling Code Labs avec Swarm et Compose
Chroniques de formation : Scaling Code Labs avec Swarm et Compose
 
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
Une caméra 📹 en DIY sur une mangeoire d'oiseau 🐦 au milieu d’un jardin 🌳 ?
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
Intro to docker
Intro to dockerIntro to docker
Intro to docker
 

En vedette

Docker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise DockerDocker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise Docker
Arnaud MAZIN
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
CEE-SEC(R)
 
Comment transformer WordPress en portail de formation
Comment transformer WordPress en portail de formationComment transformer WordPress en portail de formation
Comment transformer WordPress en portail de formation
Benoit Tostain
 
Metodología Canvas de SEO v1.1 de Relevance
Metodología Canvas de SEO v1.1 de RelevanceMetodología Canvas de SEO v1.1 de Relevance
Metodología Canvas de SEO v1.1 de Relevance
Matias Dell'Anno Irigoyen
 
Comment devenir YouTubeur ? ECITV - 16 Mars 2017
Comment devenir YouTubeur ? ECITV - 16 Mars 2017Comment devenir YouTubeur ? ECITV - 16 Mars 2017
Comment devenir YouTubeur ? ECITV - 16 Mars 2017
Jean Baptiste Viet
 
Cnn ruolo notaio negoziazione assistita krogh
Cnn ruolo notaio negoziazione assistita kroghCnn ruolo notaio negoziazione assistita krogh
Cnn ruolo notaio negoziazione assistita krogh
Marco Krogh
 
[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique
[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique
[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique
FrenchWeb.fr
 
12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...
12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...
12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...
Julien Anouilh (noska)
 
Digitale Schulentwicklung
Digitale SchulentwicklungDigitale Schulentwicklung
Digitale Schulentwicklung
Philippe Wampfler
 
Rex gke-clustree
Rex gke-clustreeRex gke-clustree
Rex gke-clustree
Romain Vrignaud
 
Building images from dockerfiles
Building images from dockerfilesBuilding images from dockerfiles
Building images from dockerfiles
dotCloud
 
The building blocks of docker.
The building blocks of docker.The building blocks of docker.
The building blocks of docker.
Chafik Belhaoues
 
Fun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker imagesFun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker images
abadger1999
 
Spark Summit Europe 2016 Keynote - Databricks CEO
Spark Summit Europe 2016 Keynote  - Databricks CEO Spark Summit Europe 2016 Keynote  - Databricks CEO
Spark Summit Europe 2016 Keynote - Databricks CEO
Databricks
 
Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0
Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0
Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0
Databricks
 
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Thomas Fricke
 
Suchen und Finden im Netz
Suchen und Finden im NetzSuchen und Finden im Netz
Suchen und Finden im Netz
Stefan Kontschieder
 
Perfektionismus vermeiden und dadurch Zeit sparen
Perfektionismus vermeiden und dadurch Zeit sparenPerfektionismus vermeiden und dadurch Zeit sparen
Perfektionismus vermeiden und dadurch Zeit sparen
Meike Kranz
 
HR Business Partner
HR Business PartnerHR Business Partner
¿Qué es Bussi?
¿Qué es Bussi? ¿Qué es Bussi?
¿Qué es Bussi?
Alan Moreno Murillo
 

En vedette (20)

Docker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise DockerDocker Meetup Paris: enterprise Docker
Docker Meetup Paris: enterprise Docker
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
 
Comment transformer WordPress en portail de formation
Comment transformer WordPress en portail de formationComment transformer WordPress en portail de formation
Comment transformer WordPress en portail de formation
 
Metodología Canvas de SEO v1.1 de Relevance
Metodología Canvas de SEO v1.1 de RelevanceMetodología Canvas de SEO v1.1 de Relevance
Metodología Canvas de SEO v1.1 de Relevance
 
Comment devenir YouTubeur ? ECITV - 16 Mars 2017
Comment devenir YouTubeur ? ECITV - 16 Mars 2017Comment devenir YouTubeur ? ECITV - 16 Mars 2017
Comment devenir YouTubeur ? ECITV - 16 Mars 2017
 
Cnn ruolo notaio negoziazione assistita krogh
Cnn ruolo notaio negoziazione assistita kroghCnn ruolo notaio negoziazione assistita krogh
Cnn ruolo notaio negoziazione assistita krogh
 
[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique
[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique
[SEN#7] Le Top 100 des entreprises qui recrutent dans le numérique
 
12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...
12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...
12 secrets et astuces pour Booster votre visibilité sur Twitter & Facebook - ...
 
Digitale Schulentwicklung
Digitale SchulentwicklungDigitale Schulentwicklung
Digitale Schulentwicklung
 
Rex gke-clustree
Rex gke-clustreeRex gke-clustree
Rex gke-clustree
 
Building images from dockerfiles
Building images from dockerfilesBuilding images from dockerfiles
Building images from dockerfiles
 
The building blocks of docker.
The building blocks of docker.The building blocks of docker.
The building blocks of docker.
 
Fun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker imagesFun with containers: Use Ansible to build Docker images
Fun with containers: Use Ansible to build Docker images
 
Spark Summit Europe 2016 Keynote - Databricks CEO
Spark Summit Europe 2016 Keynote  - Databricks CEO Spark Summit Europe 2016 Keynote  - Databricks CEO
Spark Summit Europe 2016 Keynote - Databricks CEO
 
Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0
Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0
Spark Summit EU 2016 Keynote - Simplifying Big Data in Apache Spark 2.0
 
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
Endocode Kubernetes Meetup: Architecture Patterns for Microservices in Kubern...
 
Suchen und Finden im Netz
Suchen und Finden im NetzSuchen und Finden im Netz
Suchen und Finden im Netz
 
Perfektionismus vermeiden und dadurch Zeit sparen
Perfektionismus vermeiden und dadurch Zeit sparenPerfektionismus vermeiden und dadurch Zeit sparen
Perfektionismus vermeiden und dadurch Zeit sparen
 
HR Business Partner
HR Business PartnerHR Business Partner
HR Business Partner
 
¿Qué es Bussi?
¿Qué es Bussi? ¿Qué es Bussi?
¿Qué es Bussi?
 

Similaire à Kubernetes Meetup Paris #5 - Metriques applicatives k8s

Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
Julien Wittouck
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Microsoft
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Touchify
 
Kuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potentialKuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potential
OVHcloud
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
AZUG FR
 
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
Publicis Sapient Engineering
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
Microsoft
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
Arnaud Héritier
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
Nicolas Mussat
 
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckvPres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
BilelBoulehmi
 
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Arthur Lutz
 
Pyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftPyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shift
Arthur Lutz
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
Arnaud Héritier
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
Microsoft
 
Meetup - Construire des applications serverless avec Azure
Meetup - Construire des applications serverless avec AzureMeetup - Construire des applications serverless avec Azure
Meetup - Construire des applications serverless avec Azure
Samir Arezki ☁
 
Cycle de vie d'un projet web agile avec TFS 2013, Azure VM et Monaco
Cycle de vie d'un projet web agile avec TFS 2013, Azure VM et MonacoCycle de vie d'un projet web agile avec TFS 2013, Azure VM et Monaco
Cycle de vie d'un projet web agile avec TFS 2013, Azure VM et Monaco
Microsoft
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
The Incredible Automation Day
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
Vincent Composieux
 
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
Vincent Composieux
 

Similaire à Kubernetes Meetup Paris #5 - Metriques applicatives k8s (20)

Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
 
Kuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potentialKuberbetes 101: Unlocking containerisation’s full potential
Kuberbetes 101: Unlocking containerisation’s full potential
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
 
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckvPres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
 
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
Capitole du Libre 2018 - Déployer des applications python dans un cluster Ope...
 
Pyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shiftPyconfr2018 deploy des application python dans un cluster open shift
Pyconfr2018 deploy des application python dans un cluster open shift
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
Meetup - Construire des applications serverless avec Azure
Meetup - Construire des applications serverless avec AzureMeetup - Construire des applications serverless avec Azure
Meetup - Construire des applications serverless avec Azure
 
Cycle de vie d'un projet web agile avec TFS 2013, Azure VM et Monaco
Cycle de vie d'un projet web agile avec TFS 2013, Azure VM et MonacoCycle de vie d'un projet web agile avec TFS 2013, Azure VM et Monaco
Cycle de vie d'un projet web agile avec TFS 2013, Azure VM et Monaco
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
 
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
 

Kubernetes Meetup Paris #5 - Metriques applicatives k8s

  • 1. Métriques applicatives dans K8s Arnaud Mazin Aurélien Gabet Meetup Kubernetes #5 OCTO Technology 14 mars 2017
  • 2. Aurélien Gabet Consultant Senior OCTO Technology agabet@octo.com @aGabet Arnaud Mazin Senior Manager Référent OCTO Technology amazin@octo.com @ArnaudMAZIN
  • 3. « Ce que je ne mesure pas ne m’appartient pas » (Rocco S.)
  • 4. Architecture Technique Kubernetes 4 WWW VIRTUAL MACHINE KUBERNETES MASTER DAEMONS VIRTUAL MACHINE KUBERNETES MASTER DAEMONS VIRTUAL MACHINE KUBERNETES MASTER DAEMONS VIRTUAL MACHINE ETCD VIRTUAL MACHINE ETCD VIRTUAL MACHINE ETCD VIRTUAL MACHINE KUBELET - DMZ VIRTUAL MACHINE Ingress-Controller KUBELETES - DMZ Ingress-Controller VIRTUAL MACHINE KUBELET - App VIRTUAL MACHINE App KUBELET - App App VIRTUAL MACHINE KUBELET - Infra VIRTUAL MACHINE InfrApp KUBELET - Infra InfrApp
  • 5. Concepts Kubernetes 5 Isolation Quotas Pod Pod Pod Service ReplicatSet Namespaces VIP Exposition Load-Balancing Monitoring Provisioning Ingress Deployment Routage HTTP Terminaison SSL Cycle de vie (versioning, rolling-update…) StatefulSet DaemonSet ConfigMap Secret ...
  • 6. Beaucoup trop de solutions disponibles... Heapster
  • 13. curl http://localhost:8080/metrics # HELP rest_client_request_status_codes Number of http requests, partitioned by metadata # TYPE rest_client_request_status_codes counter rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="DELETE"} 3 rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="GET"} 2758 rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="PATCH"} 3 rest_client_request_status_codes{code="200",host="10.240.0.10:6443",method="PUT"} 1305 rest_client_request_status_codes{code="201",host="10.240.0.10:6443",method="POST"} 58 L’URL de métriques
  • 14. Implémenté dans les Kubelets Durée de rétention : 2 minutes Expose des métriques d’un nœud ● Génériques (système) ● Spécifiques aux conteneurs
  • 15. Heapster Implémenté sous forme d’un pod K8s Durée de rétention : 2 minutes Agrège les métriques des cAdvisors de tous les nœuds Permet de remonter les métriques dans le dashboard Kubernetes Est utilisé pour l’autoscalling des pods via la configuration des HorizontalPodAutoscalers Peut être utilisé pour renvoyer des métriques vers un back-end à long terme (InfluxDB, Elastisearch, Hawkular…) Peut aussi collecter des métriques custom (implémentation bof bof)
  • 16. Mais aussi... Des services de base exposent également un /metrics qui va bien : ◉ les API Servers K8s ◉ Etcd D’autres agents existent pour fournir des métriques complémentaires : ◉ node-exporter > Métriques systèmes génériques (indépendant de K8s) > https://github.com/prometheus/node_exporter ◉ wmi-exporter (non testé) > Idem, mais spécifique Windows via WMI > https://github.com/martinlindhe/wmi_exporter ◉ kube-state-metrics > Ajoute des métriques spécifiques aux déploiements & à la vie du cluster K8s > https://github.com/kubernetes/kube-state-metrics
  • 17. Heapster (court terme) InfluxDB (long terme) Grafana (présentation) Prometheus (moyen terme) Custom metrics autoscaling E/S (long terme) ... (long terme) etcd KUBELET cAdvisor APIServer Kube Dashboard
  • 18. 1. J’utilise le SDK prometheus-client pour mon langage de programmation préféré 2. J’expose une URL avec mes métriques (au hasard /metrics) 3. J’annote mes pods (ou rs, ou deploy) pour que Prometheus les collecte (a.k.a: scraping) 4. Je vérifie que mes compteurs remontent dans Prometheus 5. Je fait un dashboard de ouf / j’admire le résultat dans Grafana Et si je veux mes métriques à moi ?
  • 20. Conclusion ◉ Prometheus, c’est bon mangez-en > Intégration K8s + Grafana > Requêtage PromQL ◉ Ajouter ses propres métriques, c’est facile, go for it ◉ Double chaîne Heapster vs. Prometheus un peu dommage ◉ Pas de sharding dans Prometheus => Cortex ? ◉ Peu de profondeur d’historique ◉ Redémarrage de prometheus ou kill -HUP pour changer les alertes > fichier de conf, pas d’API pour les modifier ◉ REX sous forte charge ? ◉ Dans le cluster ou hors du cluster K8s ? ◉ Alerte dans Prometheus ou dans Grafana ?
  • 21. OCTO TECHNOLOGY > THERE IS A BETTER WAY 21 VOUS CROYEZ QUE LES TECHNOLOGIES CHANGENT LE MONDE ? NOUS AUSSI ! REJOIGNEZ-NOUS ! recrutement@octo.com Nous recrutons aussi dans nos filiales PARIS I RABAT I LAUSANNE I SÃO PAULO I SYDNEY