runtime: resource limits (kubernetes implementation) (#1931)

* runtime: add resource limit CreateOptions

* util/kubernetes/client: implement support for resource limits

* runtime/kubernetes: set resource limits for k8s deployments

* util/kubernetes: remove template check for ints

* util/kubernetes: fix incorrect yaml syntax

* runtime/kubernetes: fix incorrect units

* runtime: update create options to use Resources struct
This commit is contained in:
ben-toogood
2020-08-14 11:47:28 +01:00
committed by GitHub
parent 374aae1490
commit 5a88ea7247
5 changed files with 95 additions and 9 deletions

View File

@@ -2,6 +2,7 @@ package kubernetes
import (
"encoding/json"
"fmt"
"strings"
"time"
@@ -102,6 +103,22 @@ func newService(s *runtime.Service, c runtime.CreateOptions) *service {
kdeploy.Spec.Template.PodSpec.Containers[0].Args = c.Args
}
// apply resource limits
if c.Resources != nil {
resLimits := &client.ResourceLimits{}
if c.Resources.CPU > 0 {
resLimits.CPU = fmt.Sprintf("%vm", c.Resources.CPU)
}
if c.Resources.Mem > 0 {
resLimits.Memory = fmt.Sprintf("%vMi", c.Resources.Mem)
}
if c.Resources.Disk > 0 {
resLimits.EphemeralStorage = fmt.Sprintf("%vMi", c.Resources.Disk)
}
kdeploy.Spec.Template.PodSpec.Containers[0].Resources = &client.ResourceRequirements{Limits: resLimits}
}
return &service{
Service: s,
kservice: kservice,