Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kubernetes Meetup Paris #5 - Metriques applicatives k8s

770 views

Published on

14 mars 2017
Aurélien GABET
Arnaud MAZIN
OCTO Technology

Published in: Technology
  • Be the first to comment

Kubernetes Meetup Paris #5 - Metriques applicatives k8s

  1. 1. Métriques applicatives dans K8s Arnaud Mazin Aurélien Gabet Meetup Kubernetes #5 OCTO Technology 14 mars 2017
  2. 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. 3. « Ce que je ne mesure pas ne m’appartient pas » (Rocco S.)
  4. 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. 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. 6. Beaucoup trop de solutions disponibles... Heapster
  7. 7. collecte graphes alertes dashboard stockage À regrouper en catégories...
  8. 8. collecte graphes alertes dashboard stockage Au programme
  9. 9. collecte graphes alertes dashboard stockage Au programme Heapster
  10. 10. collecte graphes alertes dashboard stockage Au programme Heapster
  11. 11. collecte graphes alertes dashboard stockage Au programme Heapster
  12. 12. Architecture de Prometheus
  13. 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. 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. 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. 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. 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. 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 ?
  19. 19. DEMO TIME!!
  20. 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. 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
  22. 22. Des questions ?

×