Aide-mémoire CKAD
exemple YAML ResourceQuota k8s
Un Quota refuse le create si le namespace dépasserait. Un LimitRange mute le Pod si les requests manquent.
kubectl create quota app --hard=pods=5,cpu=2,memory=2Gi -n app
apiVersion: v1
kind: ResourceQuota
metadata:
name: app
namespace: app
spec:
hard:
pods: "5"
requests.cpu: "2"
requests.memory: 2Gi
limits.cpu: "4"
limits.memory: 4Gi
apiVersion: v1
kind: LimitRange
metadata:
name: app
namespace: app
spec:
limits:
- type: Container
default:
cpu: "200m"
memory: 256Mi
defaultRequest:
cpu: "100m"
memory: 128Mi
max:
cpu: "500m"
memory: 1Gi
Champs
- hard
- Plafond pour tout le namespace. pods, cpu, memory, requests.cpu, limits.memory.
- default
- LimitRange. Injecté comme limit du conteneur si le Pod l’a omise.
- defaultRequest
- Injecté comme request si le Pod l’a omise. Le Quota en a souvent besoin.
- max
- Plafond par conteneur. Au-delà, le Pod est rejeté.
- kubectl create quota
- --hard=pods=5,cpu=2,memory=2Gi. 2Gi et 2G sont la même quantité.
Pièges
- Un Quota sur requests.cpu refuse un Pod sans request CPU. Poser un LimitRange defaultRequest à côté.
- LimitRange default = limit, defaultRequest = request. max est par conteneur, pas le namespace.
- 2Gi et 2G sont la même chose. Ne pas se battre avec kubectl sur le suffixe.
Doc officielle Resource Quotas Limit Ranges