All Policies

Memory Requests Equal Limits

Pods which have memory limits equal to requests are given a QoS class of Guaranteed which is the highest schedulable class. This policy checks that all containers in a given Pod have memory requests equal to limits.

Policy Definition

/other/memory-requests-equal-limits.yaml

 1apiVersion: kyverno.io/v1
 2kind: ClusterPolicy
 3metadata:
 4  name: memory-requests-equal-limits
 5  annotations:
 6    pod-policies.kyverno.io/autogen-controllers: none
 7    policies.kyverno.io/title: Memory Requests Equal Limits
 8    policies.kyverno.io/category: Sample
 9    policies.kyverno.io/severity: medium
10    policies.kyverno.io/subject: Pod
11    policies.kyverno.io/minversion: 1.3.6
12    policies.kyverno.io/description: >-
13      Pods which have memory limits equal to requests are given a QoS class of Guaranteed
14      which is the highest schedulable class. This policy checks that all containers in
15      a given Pod have memory requests equal to limits.      
16spec:
17  validationFailureAction: audit
18  background: false
19  rules:
20  - name: memory-requests-equal-limits-deployment
21    match:
22      resources:
23        kinds:
24        - Deployment
25        - DaemonSet
26        - StatefulSet
27        - Job
28    validate:
29      message: "resources.requests.memory must be equal to resources.limits.memory"
30      deny:
31        conditions:
32        - key: "{{ request.object.spec.template.spec.containers[?resources.requests.memory!=resources.limits.memory] | length(@) }}"
33          operator: NotEquals
34          value: 0
35  - name: memory-requests-equal-limits-pod
36    match:
37      resources:
38        kinds:
39        - Pod
40    validate:
41      message: "resources.requests.memory must be equal to resources.limits.memory"
42      deny:
43        conditions:
44        - key: "{{ request.object.spec.containers[?resources.requests.memory!=resources.limits.memory] | length(@) }}"
45          operator: NotEquals
46          value: 0
47  - name: memory-requests-equal-limits-cronjob
48    match:
49      resources:
50        kinds:
51        - CronJob
52    validate:
53      message: "resources.requests.memory must be equal to resources.limits.memory"
54      deny:
55        conditions:
56        - key: "{{ request.object.spec.jobTemplate.spec.template.spec.containers[?resources.requests.memory!=resources.limits.memory] | length(@) }}"
57          operator: NotEquals
58          value: 0
59