Aide-mémoire CKAD
exemple YAML requests limits k8s
requests : ce que le scheduler réserve. limits : le plafond runtime. Les deux sur le conteneur.
kubectl set resources deploy web --requests=cpu=100m,memory=128Mi --limits=cpu=200m,memory=256Mi
apiVersion: v1
kind: Pod
metadata:
name: web
spec:
containers:
- name: web
image: nginx:1.27
resources:
requests:
cpu: "100m"
memory: 128Mi
limits:
cpu: "200m"
memory: 256Mi
kubectl describe po web | grep -A6 Limits
kubectl top po web
Champs
- requests
- Ce que le scheduler garantit. Le Pod reste Pending si aucun nœud n’a assez de libre.
- limits
- Plafond. Mémoire dépassée → OOMKilled. CPU dépassé → throttle, pas de kill.
- cpu
- « 100m » = 0,1 cœur. À mettre entre quotes. 1 = un cœur entier.
- memory
- 128Mi, pas 128m. m = millicores. Mi = mébioctets.
- kubectl set resources
- Patche un Deployment en place. Lance un rollout.
Pièges
- requests = ordonnancement. limits = plafond. Mémoire au-delà → OOMKilled. CPU au-delà → throttle.
- 128Mi = mémoire. 128m = 0,128 CPU. Les confondre est un piège d’examen fréquent.
- request == limit sur chaque conteneur → QoS Guaranteed. Le HPA CPU vise la request, pas la limit.
Doc officielle Resource Management