ResourceQuota & LimitRange
Role
Le but est de définir combien de resources ont le droit d’être créé dans un namespace. Cela s’applique aux ressources suivantes :
podsPodservicesServicereplicationcontrollersReplicationControllerresourcequotasResourceQuotasecretsSecretconfigmapsConfigMappersistentvolumeclaimsPersistentVolumeClaimservices.nodeportsService of type NodePortservices.loadbalancersService of type LoadBalancer
mais aussi aux resources que peut demander l’ensemble des Pods d’un namespace
requests.cpurequests.memorylimits.cpulimits.memory- Dans ce cas de resourceQuota, les Pods seront obligé de donner leur request et/ou leur limit.
La création d’une resource échouera si vous dépassez le quota attribué dans le namespace. Attention cela compte aussi pour les resources qui sont créés par Kubernetes.
Exemple:
Lors de la création d’un nouveau serviceAccount, un secret va être créé pour y mettre son token. Si le quota n’est pas suffisant, le secret ne sera pas créé.
Structure
apiVersion: v1
kind: ResourceQuota
metadata:
name: object-quota-demo
spec:
hard:
persistentvolumeclaims: "1"
services.loadbalancers: "2"
services.nodeports: "0"
LimitRange
Pour aider, il existe un moyen de fixer des valeurs par défaut pour éviter d’avoir à les mettre sur chaque container.
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-limit-range
spec:
limits:
- default:
cpu: 1 #<=== valeur limite par défaut
defaultRequest:
cpu: 0.5 #<=== valeur demandé par défaut
max:
cpu: 2 #<=== valeur Maximum autorisée
min :
cpu: 0.1 #<=== valeur Minimum autorisée
type: Container