Skip to content

Commit

Permalink
fix(policies): support for resource requests on side-cars (openebs-ar…
Browse files Browse the repository at this point in the history
…chive#889)

Ref: openebs/openebs#2294

With 0.7.0, there was support for configuring resource
limits on the pool and volume pod side-cars using
AuxilaryResourceLimits. With this PR, added the support
to specify AuxilaryResourceRequests.

This feature is useful in cases where user has to specify
minimum requests like ephemeral storage etc. to avoid
erroneous eviction by K8s as described in the above issue.

Also, some of the resource types are very version dependent
so keeping this as generic and not providing any defaults in
this PR.

In the future, it is possible that OpenEBS Operator could
automatically determine the version and set default values
on the generated default Storage Class.

Signed-off-by: kmova <kiran.mova@openebs.io>
(cherry picked from commit 9f12a28)
  • Loading branch information
kmova committed Jan 23, 2019
1 parent cf3aca0 commit dafedd5
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 10 deletions.
16 changes: 14 additions & 2 deletions pkg/install/v1alpha1/cstor_pool.go
Expand Up @@ -63,6 +63,10 @@ spec:
# memory: 1Gi
- name: PoolResourceLimits
value: "none"
# AuxResourceRequests allow you to set requests on side cars. Requests have to be specified
# in the format expected by Kubernetes
- name: AuxResourceRequests
value: "none"
# AuxResourceLimits allow you to set limits on side cars. Limits have to be specified
# in the format expected by Kubernetes
- name: AuxResourceLimits
Expand Down Expand Up @@ -220,6 +224,8 @@ spec:
{{- $resourceRequestsVal := fromYaml .Config.PoolResourceRequests.value -}}
{{- $setResourceLimits := .Config.PoolResourceLimits.value | default "none" -}}
{{- $resourceLimitsVal := fromYaml .Config.PoolResourceLimits.value -}}
{{- $setAuxResourceRequests := .Config.AuxResourceRequests.value | default "none" -}}
{{- $auxResourceRequestsVal := fromYaml .Config.AuxResourceRequests.value -}}
{{- $setAuxResourceLimits := .Config.AuxResourceLimits.value | default "none" -}}
{{- $auxResourceLimitsVal := fromYaml .Config.AuxResourceLimits.value -}}
apiVersion: extensions/v1beta1
Expand Down Expand Up @@ -290,13 +296,19 @@ spec:
command: ["/bin/sh", "-c", "sleep 2"]
- name: cstor-pool-mgmt
image: {{ .Config.CstorPoolMgmtImage.value }}
{{- if ne $setAuxResourceLimits "none" }}
resources:
{{- if ne $setAuxResourceRequests "none" }}
requests:
{{- range $rKey, $rLimit := $auxResourceRequestsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- if ne $setAuxResourceLimits "none" }}
limits:
{{- range $rKey, $rLimit := $auxResourceLimitsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- end }}
ports:
- containerPort: 9500
protocol: TCP
Expand Down
26 changes: 22 additions & 4 deletions pkg/install/v1alpha1/cstor_volume.go
Expand Up @@ -49,6 +49,10 @@ spec:
# By default, the resource limits are disabled.
- name: TargetResourceLimits
value: "none"
# AuxResourceRequests allow you to set requests on side cars. Requests have to be specified
# in the format expected by Kubernetes
- name: AuxResourceRequests
value: "none"
# AuxResourceLimits allow you to set limits on side cars. Limits have to be specified
# in the format expected by Kubernetes
- name: AuxResourceLimits
Expand Down Expand Up @@ -334,6 +338,8 @@ spec:
{{- $resourceRequestsVal := fromYaml .Config.TargetResourceRequests.value -}}
{{- $setResourceLimits := .Config.TargetResourceLimits.value | default "none" -}}
{{- $resourceLimitsVal := fromYaml .Config.TargetResourceLimits.value -}}
{{- $setAuxResourceRequests := .Config.AuxResourceRequests.value | default "none" -}}
{{- $auxResourceRequestsVal := fromYaml .Config.AuxResourceRequests.value -}}
{{- $setAuxResourceLimits := .Config.AuxResourceLimits.value | default "none" -}}
{{- $auxResourceLimitsVal := fromYaml .Config.AuxResourceLimits.value -}}
{{- $targetAffinityVal := .TaskResult.creategetpvc.targetAffinity -}}
Expand Down Expand Up @@ -444,13 +450,19 @@ spec:
{{- if eq $isMonitor "true" }}
- image: {{ .Config.VolumeMonitorImage.value }}
name: maya-volume-exporter
{{- if ne $setAuxResourceLimits "none" }}
resources:
{{- if ne $setAuxResourceRequests "none" }}
requests:
{{- range $rKey, $rLimit := $auxResourceRequestsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- if ne $setAuxResourceLimits "none" }}
limits:
{{- range $rKey, $rLimit := $auxResourceLimitsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- end }}
args:
- "-e=cstor"
command: ["maya-exporter"]
Expand All @@ -465,13 +477,19 @@ spec:
{{- end }}
- name: cstor-volume-mgmt
image: {{ .Config.VolumeControllerImage.value }}
{{- if ne $setAuxResourceLimits "none" }}
resources:
{{- if ne $setAuxResourceRequests "none" }}
requests:
{{- range $rKey, $rLimit := $auxResourceRequestsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- if ne $setAuxResourceLimits "none" }}
limits:
{{- range $rKey, $rLimit := $auxResourceLimitsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- end }}
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
Expand Down
18 changes: 14 additions & 4 deletions pkg/install/v1alpha1/jiva_volume.go
Expand Up @@ -135,6 +135,10 @@ spec:
# expected by Kubernetes. Example:
- name: ReplicaResourceLimits
value: "none"
# AuxResourceRequests allow you to set requests on side cars. Requests have to be specified
# in the format expected by Kubernetes
- name: AuxResourceRequests
value: "none"
# AuxResourceLimits allow you to set limits on side cars. Limits have to be specified
# in the format expected by Kubernetes
- name: AuxResourceLimits
Expand Down Expand Up @@ -713,6 +717,8 @@ spec:
{{- $resourceRequestsVal := fromYaml .Config.TargetResourceRequests.value -}}
{{- $setResourceLimits := .Config.TargetResourceLimits.value | default "none" -}}
{{- $resourceLimitsVal := fromYaml .Config.TargetResourceLimits.value -}}
{{- $setAuxResourceRequests := .Config.AuxResourceRequests.value | default "none" -}}
{{- $auxResourceRequestsVal := fromYaml .Config.AuxResourceRequests.value -}}
{{- $setAuxResourceLimits := .Config.AuxResourceLimits.value | default "none" -}}
{{- $auxResourceLimitsVal := fromYaml .Config.AuxResourceLimits.value -}}
{{- $hasNodeSelector := .Config.TargetNodeSelector.value | default "none" -}}
Expand Down Expand Up @@ -822,13 +828,19 @@ spec:
- maya-exporter
image: {{ .Config.VolumeMonitorImage.value }}
name: maya-volume-exporter
{{- if ne $setAuxResourceLimits "none" }}
resources:
{{- if ne $setAuxResourceRequests "none" }}
requests:
{{- range $rKey, $rLimit := $auxResourceRequestsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- if ne $setAuxResourceLimits "none" }}
limits:
{{- range $rKey, $rLimit := $auxResourceLimitsVal }}
{{ $rKey }}: {{ $rLimit }}
{{- end }}
{{- end }}
{{- end }}
ports:
- containerPort: 9500
protocol: TCP
Expand Down Expand Up @@ -872,8 +884,6 @@ spec:
{{- $resourceRequestsVal := fromYaml .Config.ReplicaResourceRequests.value -}}
{{- $setResourceLimits := .Config.ReplicaResourceLimits.value | default "none" -}}
{{- $resourceLimitsVal := fromYaml .Config.ReplicaResourceLimits.value -}}
{{- $setAuxResourceLimits := .Config.AuxResourceLimits.value | default "none" -}}
{{- $auxResourceLimitsVal := fromYaml .Config.AuxResourceLimits.value -}}
{{- $replicaAntiAffinityVal := .TaskResult.creategetpvc.replicaAntiAffinity -}}
{{- $hasNodeSelector := .Config.ReplicaNodeSelector.value | default "none" -}}
{{- $nodeSelectorVal := fromYaml .Config.ReplicaNodeSelector.value -}}
Expand Down

0 comments on commit dafedd5

Please sign in to comment.