From d74a9d4708012a9f8cfd2ec945dad8c8d7fa2fcd Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Tue, 10 Dec 2019 16:38:22 +0100 Subject: [PATCH] explain what happens on update --- pkg/cluster/cluster.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/cluster/cluster.go b/pkg/cluster/cluster.go index ed8b465f3..0a7377389 100644 --- a/pkg/cluster/cluster.go +++ b/pkg/cluster/cluster.go @@ -497,6 +497,7 @@ func compareResourcesAssumeFirstNotNil(a *v1.ResourceRequirements, b *v1.Resourc func (c *Cluster) validateResources(spec *acidv1.PostgresSpec) error { + // setting limits too low can cause unnecessary evictions / OOM kills const ( cpuMinLimit = "256m" memoryMinLimit = "256Mi" @@ -554,10 +555,11 @@ func (c *Cluster) Update(oldSpec, newSpec *acidv1.Postgresql) error { } }() - // check if pod resources were edited below the enforced minimum limits if err := c.validateResources(&newSpec.Spec); err != nil { err = fmt.Errorf("insufficient resource limits specified: %v", err) + // cancel update only when (already too low) pod resources were edited + // if cluster was successfully running before the update, continue but log a warning isCPULimitSmaller, err2 := util.IsSmallerQuantity(newSpec.Spec.Resources.ResourceLimits.CPU, oldSpec.Spec.Resources.ResourceLimits.CPU) isMemoryLimitSmaller, err3 := util.IsSmallerQuantity(newSpec.Spec.Resources.ResourceLimits.Memory, oldSpec.Spec.Resources.ResourceLimits.Memory)