Previous slide Next slide Toggle fullscreen Open presenter view
Dimensionnez correctement vos déploiements Kubernetes
Rémi Verchère @ Accenture
Répondre à la question
Quelles Requests & Limits définir sur vos applications conteneurisées ?
Agenda
(R)appel Requests & Limits dans Kubernetes
Présentation de 2 outils (+ démo) pour vous aider à les définir
Stratégies de mise à l'échelle : focus sur Vertical Pod Autoscaler
Q/A si on a du temps
Crédits : beaucoup d’images de chez Sysdig, Datadog & Robusta qui expliquent bien les choses.
Qui suis-je ?
Rémi Verchère
Cloud Native Infrastructure Consultant
Ops qui aide les Devs à mettre en prod
Open Source & CNCF landscape
@rverchere
(R)appel Requests & Limits
Requests & Limits
Requests
Ressources nécessaires pour placer un conteneur sur un noeud.
Limits
Ressources maximum qu'un conteneur peut utiliser sur un noeud.
Sur Memory & CPU ( )
Requests & Limits
Qualité de Service
Ni Requests, ni Limits : Best Effort
Requests < Limits : Burstable
Requests = Limits : Guaranteed
PDB, Evictions, Priority Classes
Ce n'est pas le sujet aujourd'hui...
Requests & Limits
Quel sizing alors ? Trop ? Trop peu ?
Requests & Limits
Requests & Limits
Requests & Limits
Requests & Limits
Ça n'arrive pas qu'aux autres...
Aide au dimensionnement
Plusieurs méthodes
Au doigt mouillé itératif
Spécial devs Java
Grâce aux métriques !
Aide au dimensionnement
Plusieurs méthodes
Au doigt mouillé itératif
Spécial devs Java
Grâce aux métriques !
Outils pour vous faciliter la vie
Krr
Goldilocks
Krr
Krr
Démo !
Goldilocks
VPA - Vertical Pod Autoscaler
VPA
Adaptation automatique des Requests & Limits du pod
VPA
3 composants
Recommender
Updater
Admission Controller
Plusieurs modes
VPA
Remarques
Pas par défaut, à installer
Besoin de créer une ressource de type “VerticalPodAutoscaler”
A ne pas utiliser avec HPA
Restart du conteneur ★
Fournit des métriques : via le 'status ' de la resource VPA
Calcul : vertical-pod-autoscaler.md#recommendation-model
Requests : CPU 90% Percentile par défaut, RAM OOMKilled
Limits : Ratio Requests Initiaux
VPA
Exemple
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
updatePolicy:
updateMode: "Off"
status:
recommendation:
containerRecommendations:
- [... ]
Autres types d'Autoscalers
1) H orizontal P od A ustocaler
2) C luster A utoscaler
3) Mu lti-dimensional P od A utoscaling
AEP-5342 (Autoscaler Enhancement Proposal): Multi-dimensional Pod Autoscaler
Autres types d'Autoscalers
Un mot sur les HPA
Goldilocks
Démo !
Goldilocks
C'est moche hein ?
Goldilocks
On peut faire "moins moche..."
Parlons Kube-State-Metrics, mieux : CustomResourceStateMetrics !!
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
[... ]
status:
recommendation:
containerRecommendations:
- target:
cpu: 15m
memory: "1238659775"
Pour en savoir plus, venez jeudi au meetup "DevOps Aix-Marseille" !
Goldilocks + VPA + Grafana =
Mes stratégies
Mes Outils
Goldilocks + VPA
Prometheus + Grafana + CustomResourceStateMetrics
Requests, Limits ?
CPU Requests, No Limits
RAM Requests = Limits
Ce dont l'application à besoin ★
Nouveautés depuis 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)
Merci !
Rémi Verchère @ Accenture
Kubetrain
KubeTrain.io vise à permettre aux participants de la prochaine Cloud Native Computing Foundation (CNCF) #kubecon EU 2024 à paris de partager le voyage en train au départ de différentes villes d'Europe.
Plus d'infos sur le site kubetrain.io
Kubetrain - Objectif
L'objectif ? pouvoir réserver un wagon qui permettra à tous les participants venant d'Aix-en-Provence ou de Marseille de faire le déplacement à Paris ensembles.
Cela nous permet de :
réduire notre impact sur l'environnement
obtenir des tarifs préférentiels
échanger pendant le trajet (si vous en avez envie)
joindre l'utile à l'agréable
Les billets sont disponibles sur https://kutt.it/kubetrain
Page kubetrain : https://kubetrain.io/departures/aix-marseille/
Référent local : Frédéric Léger / webofmars
Le projet est en recherche de sponsoring afin de réduire les coûts de transport et pouvoir organiser un événement sur place (mais chut ! )
2 tickets de train à utiliser comme vous voulez (tech ou marketing)
Visibilité pour votre marque
Reconnaissance de toute la communauté tech Aix-Marseille
Probablement une tonne de points de karma
Mais aussi
Faire le voyage avec des développeurs, des ops, des devops, des tech de la région
Le nom et logo de votre société sur le coupon d'échange
Diffuser les messages de votre choix durant le trajet
Distribution de vos goodies si vous le souhaitez
Votre logo sur différentes pages du site kubetrain.io
Encore merci !
Rémi Verchère @ Accenture
Lorsqu'on doit déployer une application sur un cluster Kubernetes, une bonne pratique est de définir des ressources "requests" et "limits" pour garantir le bon fonctionnement de celle-ci tout en garantissant la bonne santé du cluster qui l'accueille.
OK, mais quelles valeurs de "requests" et "limits" doit-on spécifier ? Pas assez de RAM et l'application sera "OOMKilled" ? Trop de CPU mais cela bloquera les autres déploiements ?
Après un tour d'horizon des différentes options pour paramétrer ces ressources, je vous présenterai un outil simple mais efficace pour vous aider à définir des valeurs pragmatiques : Goldilocks et l'utilisation automatique des Vertical Pod Autoscaler.
The Miserable Life of a CPU Instruction - Samuel Ortiz
https://www.youtube.com/watch?v=j6-yGGBTXGU
1. Standards : Prometheus, VictoriaMetrics, Datadog, etc.
2. Plus "avancées" : VPA
1. Standards : Prometheus, VictoriaMetrics, Datadog, etc.
2. Plus "avancées" : VPA
- Requests trop basses & HPA
"*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*"