4. Agenda
● Stockage opensource polyvalent et scalable sur Kubernetes avec Rook Ceph
● Optimisez vos Requests et Limits dans Kubernetes
● Surprise(s)
● Apéro / Jeux
5. Stockage sur Kubernetes avec Rook Ceph
Stockage sur Kubernetes
avec Rook Ceph
expliqué à un enfant de 35 ans…
7. Stockage sur Kubernetes avec Rook Ceph
Bob a un Raspberry PI et
utilise des conteneurs pour
ses projets
Il voudrait faire du K8S,
mais quid du stockage ?
Image by Freepik
8. Stockage sur Kubernetes avec Rook Ceph
Il choisit pour le stockage,
un "Local Path Provisioner"
Avec un seul noeud dans
son cluster, c'est simple !
Simple
V Léger
V
Image by Freepik
9. Stockage sur Kubernetes avec Rook Ceph
Mais pour assurer la haute-
disponibilité et la scalabilité
d'un de ses projets, Bob a
besoin de plusieurs noeuds
dans son cluster
Kubernetes
Image by Freepik
10. Stockage sur Kubernetes avec Rook Ceph
Problème ! Les
Local Path Provisioner ne
correspondent plus !
Pb serveur = Donnée perdue
X
Pas de scalabilité
X
Image by Freepik
11. Stockage sur Kubernetes avec Rook Ceph
Bob rêve d'une techno
qui sache tout faire, et
qui ne coûte pas trop cher
RWO
V RWX
V ROX
V
Scalabilité
V Durabilité
V
Object storage
V Snapshots
V
Image by Freepik
13. Stockage sur Kubernetes avec Rook Ceph
Y'a quoi dans un cluster Ceph ?
Image by Freepik
Attention !
3 / 5 sur l'échelle du doliprane
14. Stockage sur Kubernetes avec Rook Ceph
Y'a quoi dans un cluster Ceph ?
Image by Freepik
Ceph Metadata
data
CephFS Metadata
Manager/Dashboard
Ceph CLI
15. Stockage sur Kubernetes avec Rook Ceph
Comment ça fonctionne Ceph ?
Image by Freepik
Attention !
4 / 5 sur l'échelle du doliprane
16. Stockage sur Kubernetes avec Rook Ceph
Comment ça fonctionne Ceph ?
Image by Freepik
Distribution Réplication
RF3
17. Stockage sur Kubernetes avec Rook Ceph
Un parallèle avec Kubernetes ?
Image by Freepik
Distribution Réplication
RF3
18. Stockage sur Kubernetes avec Rook Ceph
Comment ça marche avec Rook ?
Image by Freepik
Détendez-vous !
1 / 5 sur l'échelle du doliprane
19. Stockage sur Kubernetes avec Rook Ceph
Comment ça marche avec Rook ?
Image by Freepik
Installation
V Mise à jour
V
gère
Discovery
V
20. Stockage sur Kubernetes avec Rook Ceph
Ca consomme beaucoup ?
Image by Freepik
Noeuds recommandés :
- en hyperconvergence : min 8c/32Gi
- noeuds dédiés Ceph : min 4c/16Gi
3 mon (2 cpu/2 Gi)
+ 2 mgr (1 cpu/1 Gi)
+ 3(+) osd (1 cpu/4 Gi)
+ operator/tools/csi/crash/… (2 cpu/2 Gi)
—------------------------------------------
Total : 14 cpu/22 Gi minimum pour Ceph
21. Stockage sur Kubernetes avec Rook Ceph
Démo time !!
Image by Freepik
AUcune donnée ne sera maltraitée …
normalement du moins …
23. Optimisez vos Requests et Limits dans Kubernetes
Agenda
● (R)appel Requests & Limits dans Kubernetes
● Stratégies : VPA, HPA, HCA, HHC, …
● KRR : Démo !
● Goldilocks : Démo !
● Nouveautés K8S 1.27
● Q/A : Apéro !
Spoiler : beaucoup d’images piquées de chez Sysdig, qui explique bien les choses
24. (R)appel Requests & Limits
Requests: Ressources
nécessaires pour scheduling du
pod sur un node
Limits: Ressources maximum
qu’un node peut allouer à un pod
Définition se fait au niveau du
conteneur
🫣
25. (R)appel Requests & Limits
CPU :
● Ressource compressible
● millicores (1000m = 1 core)
● shares : 1024 par core
Risques :
● CPU Throttling -> exponentielle avec les multicores
● Voir “Misérable vie d’une instruction CPU” de Samuel Ortiz
31. Stratégie Namespaces
Namespace ResourceQuota
- Limiter les ressources dans un namespace
Namespace LimitRange
- Restriction des requests / limits sur les ressources dans un NS
- Équivalent règle Kyverno ?
32. Stratégie HPA : Horizontal Pod Autoscaler (Scale
Out)
- Nouveau Pod lorsque limites atteintes
- Utile pour les microservices avec réplicas
- Par défaut sur CPU/RAM (metrics-server)
- Autres métriques via Prometheus (net latency)
- Temps de réaction ? Serverless / Event Driven
- Voir “Keda”, “Knative”, …
33. Stratégie HCA : Horizontal Cluster Autoscaler
- Si plus de nodes dispos:
Nouveau node
- Fourni par les CSP
34. Stratégie VPA : Vertical Pod Autoscaler (Scale Up)
- Pas par défaut, à installer
- Si manque de ressources, on augmente les Requests & Limits du conteneur
- 3 composants
- Recommender
- Updater
- Admission Controller
- Plusieurs modes
- Recreate
- Initial
- Off
35. Stratégie VPA : Vertical Pod Autoscaler (Scale Up)
- Besoin de créer une ressource particulière de type “Vertical Pod Autoscaler”
- A ne pas utiliser avec HPA
- Restart du conteneur*
- Fournit des métriques
- Calcul : Voir ici ;)
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: my-app
updatePolicy:
updateMode: "Auto"
36. Stratégie Resource Tracking
- Méthode 1 : Au doigt mouillé ☝️
- Méthode 2 : Grâce aux métriques !
- Prometheus (ou Datadog pour faire plaisir à Frédéric)
- VPA (rappelez-vous !)
37. Robustadev - Krr
- https://github.com/robusta-dev/krr
- “Prometheus-based Kubernetes Resource Recommendations”
- Sans agent, basé sur métriques prom ou autres, extensible, possibilité run in-
cluster périodique (notifs Slack)
41. Stratégies
Requests, Limits ?
● CPU Requests, No Limits
● RAM Requests = Limits
https://home.robusta.dev/blog/stop-using-cpu-limits
42. Nouveautés K8S 1.27
● In-place Resource Resize for Kubernetes Pods (alpha)
“In Kubernetes v1.27, we have added a new alpha feature that allows users to resize CPU/memory
resources allocated to pods without restarting the containers”
● HorizontalPodAutoscaler ContainerResource type metric moves to beta
“Kubernetes 1.20 introduced the ContainerResource type metric in HorizontalPodAutoscaler (HPA).
In Kubernetes 1.27, this feature moves to beta and the corresponding feature gate (HPAContainerMetrics)
gets enabled by default.”
● Quality-of-Service for Memory Resources (alpha)
“Support for Memory QoS was initially added in Kubernetes v1.22, and later some limitations around the
formula for calculating memory.high were identified. These limitations are addressed in Kubernetes v1.27.”
43. Des questions ?
Non ? Tant mieux ;)
Sources & images :
- https://sysdig.com/blog/kubernetes-limits-requests/
- https://sysdig.com/blog/monitoring-custom-metrics/
- https://sysdig.com/blog/kubernetes-cpu-requests-limits-autoscaling/
- https://sysdig.com/blog/kubernetes-capacity-planning/
- https://sysdig.com/blog/kubernetes-autoscaler/
- https://sysdig.com/blog/millions-wasted-kubernetes/
- https://sysdig.com/blog/kubernetes-1-27-whats-new/
- https://help.ovhcloud.com/csm/fr-public-cloud-kubernetes-using-cluster-
autoscaler?id=kb_article_view&sysparm_article=KB0055361