From 1a641027d2d84e52989a8f3192080d723b14387c Mon Sep 17 00:00:00 2001 From: Piotr Szczesniak Date: Mon, 5 Oct 2015 16:05:42 +0200 Subject: [PATCH 1/3] Changed data window size to 2m in Initial Resources It fixes the issue with delayed data after #14559 is merged --- plugin/pkg/admission/initialresources/admission.go | 2 +- plugin/pkg/admission/initialresources/influxdb.go | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/plugin/pkg/admission/initialresources/admission.go b/plugin/pkg/admission/initialresources/admission.go index 98aeb8f337..b3642a6616 100644 --- a/plugin/pkg/admission/initialresources/admission.go +++ b/plugin/pkg/admission/initialresources/admission.go @@ -39,7 +39,7 @@ var ( const ( initialResourcesAnnotation = "kubernetes.io/initial-resources" - samplesThreshold = 60 + samplesThreshold = 30 week = 7 * 24 * time.Hour month = 30 * 24 * time.Hour ) diff --git a/plugin/pkg/admission/initialresources/influxdb.go b/plugin/pkg/admission/initialresources/influxdb.go index 1664afbb7d..0dbef97d8f 100644 --- a/plugin/pkg/admission/initialresources/influxdb.go +++ b/plugin/pkg/admission/initialresources/influxdb.go @@ -27,10 +27,10 @@ import ( ) const ( - cpuSeriesName = "autoscaling.cpu.usage.1m" - memSeriesName = "autoscaling.memory.usage.1m" - cpuContinuousQuery = "select derivative(value) as value from \"cpu/usage_ns_cumulative\" where pod_id <> '' group by pod_id, pod_namespace, container_name, container_base_image, time(1m) into " + cpuSeriesName - memContinuousQuery = "select mean(value) as value from \"memory/usage_bytes_gauge\" where pod_id <> '' group by pod_id, pod_namespace, container_name, container_base_image, time(1m) into " + memSeriesName + cpuSeriesName = "autoscaling.cpu.usage.2m" + memSeriesName = "autoscaling.memory.usage.2m" + cpuContinuousQuery = "select derivative(value) as value from \"cpu/usage_ns_cumulative\" where pod_id <> '' group by pod_id, pod_namespace, container_name, container_base_image, time(2m) into " + cpuSeriesName + memContinuousQuery = "select mean(value) as value from \"memory/usage_bytes_gauge\" where pod_id <> '' group by pod_id, pod_namespace, container_name, container_base_image, time(2m) into " + memSeriesName timeFormat = "2006-01-02 15:04:05" ) @@ -140,7 +140,7 @@ func (s *influxdbSource) GetUsagePercentile(kind api.ResourceName, perc int64, i // TODO(pszczesniak): fix issue with dropped data base if len(res) == 0 { - return 0, 0, fmt.Errorf("Missing series %v in InfluxDB", series) + return 0, 0, fmt.Errorf("Missing data in series %v in InfluxDB", series) } points := res[0].GetPoints() if len(points) == 0 { From ddcb6051099bedaac764d27bd8fb53d70d5984e8 Mon Sep 17 00:00:00 2001 From: Piotr Szczesniak Date: Mon, 5 Oct 2015 16:07:16 +0200 Subject: [PATCH 2/3] Fixed panic in GCM data source implementation in Initial Resources The panic occured when there was no historical data to make prediction --- plugin/pkg/admission/initialresources/gcm.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugin/pkg/admission/initialresources/gcm.go b/plugin/pkg/admission/initialresources/gcm.go index e78556df93..ea60ddbecf 100644 --- a/plugin/pkg/admission/initialresources/gcm.go +++ b/plugin/pkg/admission/initialresources/gcm.go @@ -122,6 +122,9 @@ func (s *gcmSource) GetUsagePercentile(kind api.ResourceName, perc int64, image, } count := len(rawSamples) + if count == 0 { + return 0, 0, nil + } sort.Ints(rawSamples) usageIndex := int64(math.Ceil(float64(count)*9/10)) - 1 usage := rawSamples[usageIndex] From 0b798906e7b7f043b87a1712734dbf482ff4d1c8 Mon Sep 17 00:00:00 2001 From: Piotr Szczesniak Date: Mon, 5 Oct 2015 16:10:10 +0200 Subject: [PATCH 3/3] Espaced '/' character in query to InfluxDB --- plugin/pkg/admission/initialresources/influxdb.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugin/pkg/admission/initialresources/influxdb.go b/plugin/pkg/admission/initialresources/influxdb.go index 0dbef97d8f..3c6b756400 100644 --- a/plugin/pkg/admission/initialresources/influxdb.go +++ b/plugin/pkg/admission/initialresources/influxdb.go @@ -124,7 +124,8 @@ func (s *influxdbSource) GetUsagePercentile(kind api.ResourceName, perc int64, i if exactMatch { imgPattern = "='" + image + "'" } else { - imgPattern = "=~/^" + image + "/" + // Escape character "/" in image pattern. + imgPattern = "=~/^" + strings.Replace(image, "/", "\\/", -1) + "/" } var namespaceCond string if namespace != "" {