From 7626051698a7cf176607c85631fba2d3d4762521 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Fri, 11 Mar 2016 16:43:54 -0800 Subject: [PATCH 1/6] Support addon Deployments, make heapster a deployment with a nanny. --- .../google/heapster-controller.yaml | 63 +++++++++++++++++- .../heapster-controller-combined.yaml | 63 +++++++++++++++++- .../influxdb/heapster-controller.yaml | 64 ++++++++++++++++++- .../standalone/heapster-controller.yaml | 35 +++++++++- .../salt/kube-addons/kube-addon-update.sh | 1 + 5 files changed, 214 insertions(+), 12 deletions(-) diff --git a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml index a04e9d846e45d..1fb6d037f93d3 100644 --- a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml @@ -6,8 +6,8 @@ {% set eventer_memory = (200 * 1024 + num_nodes * 500)|string + "Ki" -%} {% endif -%} -apiVersion: v1 -kind: ReplicationController +apiVersion: extensions/v1beta1 +kind: Deployment metadata: name: heapster-v1.0.2 namespace: kube-system @@ -17,7 +17,8 @@ metadata: spec: replicas: 1 selector: - k8s-app: heapster + matchLabels: + k8s-app: heapster template: metadata: labels: @@ -62,6 +63,62 @@ spec: - name: ssl-certs mountPath: /etc/ssl/certs readOnly: true + - image: gcr.io/google_containers/addon-resizer:1.0 + name: heapster-nanny + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 50m + memory: 100Mi + env: + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /pod_nanny + - --cpu=100m + - --extra-cpu=0m + - --memory=200Mi + - --extra-memory=3Mi + - --threshold=5 + - --deployment=heapster-v1.0.0-beta1 + - --container=heapster + - --poll-period=300000 + - image: gcr.io/google_containers/addon-resizer:1.0 + name: eventer-nanny + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 50m + memory: 100Mi + env: + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /pod_nanny + - --cpu=100m + - --extra-cpu=0m + - --memory=200Mi + - --extra-memory=3Mi + - --threshold=5 + - --deployment=heapster-v1.0.0-beta1 + - --container=eventer + - --poll-period=300000 volumes: - name: ssl-certs hostPath: diff --git a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml index 2217f40119cbd..6e667d3f080c3 100644 --- a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml +++ b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml @@ -6,8 +6,8 @@ {% set eventer_memory = (200 * 1024 + num_nodes * 500)|string + "Ki" -%} {% endif -%} -apiVersion: v1 -kind: ReplicationController +apiVersion: extensions/v1beta1 +kind: Deployment metadata: name: heapster-v1.0.2 namespace: kube-system @@ -17,7 +17,8 @@ metadata: spec: replicas: 1 selector: - k8s-app: heapster + matchLabels: + k8s-app: heapster template: metadata: labels: @@ -63,6 +64,62 @@ spec: - name: ssl-certs mountPath: /etc/ssl/certs readOnly: true + - image: gcr.io/google_containers/addon-resizer:1.0 + name: heapster-nanny + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 50m + memory: 100Mi + env: + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /pod_nanny + - --cpu=100m + - --extra-cpu=0m + - --memory=200Mi + - --extra-memory=3Mi + - --threshold=5 + - --deployment=heapster-v1.0.0-beta1 + - --container=heapster + - --poll-period=300000 + - image: gcr.io/google_containers/addon-resizer:1.0 + name: eventer-nanny + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 50m + memory: 100Mi + env: + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /pod_nanny + - --cpu=100m + - --extra-cpu=0m + - --memory=200Mi + - --extra-memory=3Mi + - --threshold=5 + - --deployment=heapster-v1.0.0-beta1 + - --container=eventer + - --poll-period=300000 volumes: - name: ssl-certs hostPath: diff --git a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml index 3705d367adfb1..b32ab713319df 100644 --- a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml @@ -6,8 +6,8 @@ {% set eventer_memory = (200 * 1024 + num_nodes * 500)|string + "Ki" -%} {% endif -%} -apiVersion: v1 -kind: ReplicationController +apiVersion: extensions/v1beta1 +kind: Deployment metadata: name: heapster-v1.0.2 namespace: kube-system @@ -17,7 +17,8 @@ metadata: spec: replicas: 1 selector: - k8s-app: heapster + matchLabels: + k8s-app: heapster template: metadata: labels: @@ -54,3 +55,60 @@ spec: - /eventer - --source=kubernetes:'' - --sink=influxdb:http://monitoring-influxdb:8086 + - image: gcr.io/google_containers/addon-resizer:1.0 + name: heapster-nanny + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 50m + memory: 100Mi + env: + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /pod_nanny + - --cpu=100m + - --extra-cpu=0m + - --memory=200Mi + - --extra-memory=3Mi + - --threshold=5 + - --deployment=heapster-v1.0.0-beta1 + - --container=heapster + - --poll-period=300000 + - image: gcr.io/google_containers/addon-resizer:1.0 + name: eventer-nanny + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 50m + memory: 100Mi + env: + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /pod_nanny + - --cpu=100m + - --extra-cpu=0m + - --memory=200Mi + - --extra-memory=3Mi + - --threshold=5 + - --deployment=heapster-v1.0.0-beta1 + - --container=eventer + - --poll-period=300000 + diff --git a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml index 6279d87e6e317..cc3c5369cc7cf 100644 --- a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml @@ -4,8 +4,8 @@ {% set metrics_memory = (200 + num_nodes * 4)|string + "Mi" -%} {% endif -%} -apiVersion: v1 -kind: ReplicationController +apiVersion: extensions/v1beta1 +kind: Deployment metadata: name: heapster-v1.0.2 namespace: kube-system @@ -15,7 +15,8 @@ metadata: spec: replicas: 1 selector: - k8s-app: heapster + matchLabels: + k8s-app: heapster template: metadata: labels: @@ -37,3 +38,31 @@ spec: - /heapster - --source=kubernetes.summary_api:'' - --metric_resolution=60s + - image: gcr.io/google_containers/addon-resizer:1.0 + name: heapster-nanny + resources: + limits: + cpu: 50m + memory: 100Mi + requests: + cpu: 50m + memory: 100Mi + env: + - name: MY_POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: MY_POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + command: + - /pod_nanny + - --cpu=100m + - --extra-cpu=0m + - --memory=200Mi + - --extra-memory=3Mi + - --threshold=5 + - --deployment=heapster-v1.0.0-beta1 + - --container=heapster + - --poll-period=300000 diff --git a/cluster/saltbase/salt/kube-addons/kube-addon-update.sh b/cluster/saltbase/salt/kube-addons/kube-addon-update.sh index 6ba07b15f7157..239d163737176 100755 --- a/cluster/saltbase/salt/kube-addons/kube-addon-update.sh +++ b/cluster/saltbase/salt/kube-addons/kube-addon-update.sh @@ -475,6 +475,7 @@ function update-addons() { local -r addon_path=$1 # be careful, reconcile-objects uses global variables reconcile-objects ${addon_path} ReplicationController "-" & + reconcile-objects ${addon_path} Deployment "-" & # We don't expect names to be versioned for the following kinds, so # we match the entire name, ignoring version suffix. From a67cf8feb4eb59f132d26a71a090764c9ec0055b Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Wed, 16 Mar 2016 16:23:45 -0700 Subject: [PATCH 2/6] Removing versions from deployment names. --- .../cluster-monitoring/google/heapster-controller.yaml | 6 +++--- .../googleinfluxdb/heapster-controller-combined.yaml | 6 +++--- .../cluster-monitoring/influxdb/heapster-controller.yaml | 6 +++--- .../cluster-monitoring/standalone/heapster-controller.yaml | 4 ++-- cluster/saltbase/salt/kube-addons/kube-addon-update.sh | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml index 1fb6d037f93d3..4966885ebf2b7 100644 --- a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml @@ -9,7 +9,7 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.0.2 + name: heapster namespace: kube-system labels: k8s-app: heapster @@ -88,7 +88,7 @@ spec: - --memory=200Mi - --extra-memory=3Mi - --threshold=5 - - --deployment=heapster-v1.0.0-beta1 + - --deployment=heapster - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -116,7 +116,7 @@ spec: - --memory=200Mi - --extra-memory=3Mi - --threshold=5 - - --deployment=heapster-v1.0.0-beta1 + - --deployment=heapster - --container=eventer - --poll-period=300000 volumes: diff --git a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml index 6e667d3f080c3..203268b42f9f5 100644 --- a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml +++ b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml @@ -9,7 +9,7 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.0.2 + name: heapster namespace: kube-system labels: k8s-app: heapster @@ -89,7 +89,7 @@ spec: - --memory=200Mi - --extra-memory=3Mi - --threshold=5 - - --deployment=heapster-v1.0.0-beta1 + - --deployment=heapster - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -117,7 +117,7 @@ spec: - --memory=200Mi - --extra-memory=3Mi - --threshold=5 - - --deployment=heapster-v1.0.0-beta1 + - --deployment=heapster - --container=eventer - --poll-period=300000 volumes: diff --git a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml index b32ab713319df..82f85b1b76959 100644 --- a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml @@ -9,7 +9,7 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.0.2 + name: heapster namespace: kube-system labels: k8s-app: heapster @@ -80,7 +80,7 @@ spec: - --memory=200Mi - --extra-memory=3Mi - --threshold=5 - - --deployment=heapster-v1.0.0-beta1 + - --deployment=heapster - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -108,7 +108,7 @@ spec: - --memory=200Mi - --extra-memory=3Mi - --threshold=5 - - --deployment=heapster-v1.0.0-beta1 + - --deployment=heapster - --container=eventer - --poll-period=300000 diff --git a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml index cc3c5369cc7cf..5718699bf39a2 100644 --- a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml @@ -7,7 +7,7 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.0.2 + name: heapster namespace: kube-system labels: k8s-app: heapster @@ -63,6 +63,6 @@ spec: - --memory=200Mi - --extra-memory=3Mi - --threshold=5 - - --deployment=heapster-v1.0.0-beta1 + - --deployment=heapster - --container=heapster - --poll-period=300000 diff --git a/cluster/saltbase/salt/kube-addons/kube-addon-update.sh b/cluster/saltbase/salt/kube-addons/kube-addon-update.sh index 239d163737176..9f2f68022e790 100755 --- a/cluster/saltbase/salt/kube-addons/kube-addon-update.sh +++ b/cluster/saltbase/salt/kube-addons/kube-addon-update.sh @@ -475,13 +475,13 @@ function update-addons() { local -r addon_path=$1 # be careful, reconcile-objects uses global variables reconcile-objects ${addon_path} ReplicationController "-" & - reconcile-objects ${addon_path} Deployment "-" & # We don't expect names to be versioned for the following kinds, so # we match the entire name, ignoring version suffix. # That's why we pass an empty string as the version separator. # If the description differs on disk, the object should be recreated. # This is not implemented in this version. + reconcile-objects ${addon_path} Deployment "" & reconcile-objects ${addon_path} Service "" & reconcile-objects ${addon_path} PersistentVolume "" & reconcile-objects ${addon_path} PersistentVolumeClaim "" & From 90ef854f1fa9975897c10e0e0cf250098c97ac83 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Thu, 17 Mar 2016 13:25:01 -0700 Subject: [PATCH 3/6] Use the same constants as heapster for the heapster nanny. --- .../google/heapster-controller.yaml | 14 ++++++++------ .../heapster-controller-combined.yaml | 14 ++++++++------ .../influxdb/heapster-controller.yaml | 14 ++++++++------ .../standalone/heapster-controller.yaml | 7 ++++--- 4 files changed, 28 insertions(+), 21 deletions(-) diff --git a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml index 4966885ebf2b7..2e3282cf7f264 100644 --- a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml @@ -1,9 +1,11 @@ {% set metrics_memory = "200Mi" -%} {% set eventer_memory = "200Mi" -%} +{% set metrics_memory_per_node = 4 -%} +{% set eventer_memory_per_node = 500 -%} {% set num_nodes = pillar.get('num_nodes', -1) -%} {% if num_nodes >= 0 -%} - {% set metrics_memory = (200 + num_nodes * 4)|string + "Mi" -%} - {% set eventer_memory = (200 * 1024 + num_nodes * 500)|string + "Ki" -%} + {% set metrics_memory = (200 + num_nodes * metrics_memory_per_node)|string + "Mi" -%} + {% set eventer_memory = (200 * 1024 + num_nodes * eventer_memory_per_node)|string + "Ki" -%} {% endif -%} apiVersion: extensions/v1beta1 @@ -85,8 +87,8 @@ spec: - /pod_nanny - --cpu=100m - --extra-cpu=0m - - --memory=200Mi - - --extra-memory=3Mi + - --memory={{ metrics_memory }} + - --extra-memory={{metrics_memory_per_node}}Mi - --threshold=5 - --deployment=heapster - --container=heapster @@ -113,8 +115,8 @@ spec: - /pod_nanny - --cpu=100m - --extra-cpu=0m - - --memory=200Mi - - --extra-memory=3Mi + - --memory={{eventer_memory}} + - --extra-memory={{eventer_memory_per_node}}Ki - --threshold=5 - --deployment=heapster - --container=eventer diff --git a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml index 203268b42f9f5..6647497c68a84 100644 --- a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml +++ b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml @@ -1,9 +1,11 @@ {% set metrics_memory = "200Mi" -%} {% set eventer_memory = "200Mi" -%} +{% set metrics_memory_per_node = 4 -%} +{% set eventer_memory_per_node = 500 -%} {% set num_nodes = pillar.get('num_nodes', -1) -%} {% if num_nodes >= 0 -%} - {% set metrics_memory = (200 + num_nodes * 4)|string + "Mi" -%} - {% set eventer_memory = (200 * 1024 + num_nodes * 500)|string + "Ki" -%} + {% set metrics_memory = (200 + num_nodes * metrics_memory_per_node)|string + "Mi" -%} + {% set eventer_memory = (200 * 1024 + num_nodes * eventer_memory_per_node)|string + "Ki" -%} {% endif -%} apiVersion: extensions/v1beta1 @@ -86,8 +88,8 @@ spec: - /pod_nanny - --cpu=100m - --extra-cpu=0m - - --memory=200Mi - - --extra-memory=3Mi + - --memory={{ metrics_memory }} + - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - --deployment=heapster - --container=heapster @@ -114,8 +116,8 @@ spec: - /pod_nanny - --cpu=100m - --extra-cpu=0m - - --memory=200Mi - - --extra-memory=3Mi + - --memory={{ eventer_memory }} + - --extra-memory={{ eventer_memory_per_node }}Ki - --threshold=5 - --deployment=heapster - --container=eventer diff --git a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml index 82f85b1b76959..7302e0bc6545c 100644 --- a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml @@ -1,9 +1,11 @@ {% set metrics_memory = "200Mi" -%} {% set eventer_memory = "200Mi" -%} +{% set metrics_memory_per_node = 4 -%} +{% set eventer_memory_per_node = 500 -%} {% set num_nodes = pillar.get('num_nodes', -1) -%} {% if num_nodes >= 0 -%} - {% set metrics_memory = (200 + num_nodes * 4)|string + "Mi" -%} - {% set eventer_memory = (200 * 1024 + num_nodes * 500)|string + "Ki" -%} + {% set metrics_memory = (200 + num_nodes * metrics_memory_per_node)|string + "Mi" -%} + {% set eventer_memory = (200 * 1024 + num_nodes * eventer_memory_per_node)|string + "Ki" -%} {% endif -%} apiVersion: extensions/v1beta1 @@ -77,8 +79,8 @@ spec: - /pod_nanny - --cpu=100m - --extra-cpu=0m - - --memory=200Mi - - --extra-memory=3Mi + - --memory={{ metrics_memory }} + - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - --deployment=heapster - --container=heapster @@ -105,8 +107,8 @@ spec: - /pod_nanny - --cpu=100m - --extra-cpu=0m - - --memory=200Mi - - --extra-memory=3Mi + - --memory={{ eventer_memory }} + - --extra-memory={{ eventer_memory_per_node }}Ki - --threshold=5 - --deployment=heapster - --container=eventer diff --git a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml index 5718699bf39a2..468403366c6dd 100644 --- a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml @@ -1,7 +1,8 @@ {% set metrics_memory = "200Mi" -%} +{% set metrics_memory_per_node = 4 -%} {% set num_nodes = pillar.get('num_nodes', -1) -%} {% if num_nodes >= 0 -%} - {% set metrics_memory = (200 + num_nodes * 4)|string + "Mi" -%} + {% set metrics_memory = (200 + num_nodes * metrics_memory_per_node)|string + "Mi" -%} {% endif -%} apiVersion: extensions/v1beta1 @@ -60,8 +61,8 @@ spec: - /pod_nanny - --cpu=100m - --extra-cpu=0m - - --memory=200Mi - - --extra-memory=3Mi + - --memory={{ metrics_memory }} + - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - --deployment=heapster - --container=heapster From c33230c3369bfdb4c71a25dd0de788ad9eb59726 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Thu, 17 Mar 2016 17:10:46 -0700 Subject: [PATCH 4/6] Adding e2e test support for monitoring deployments. --- test/e2e/monitoring.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/test/e2e/monitoring.go b/test/e2e/monitoring.go index c690979a16202..c6b2a1a946fa8 100644 --- a/test/e2e/monitoring.go +++ b/test/e2e/monitoring.go @@ -102,14 +102,19 @@ func verifyExpectedRcsExistAndGetExpectedPods(c *client.Client) ([]string, error for _, rcLabel := range rcLabels { selector := labels.Set{"k8s-app": rcLabel}.AsSelector() options := api.ListOptions{LabelSelector: selector} + deploymentList, err := c.Deployments(api.NamespaceSystem).List(options) + if err != nil { + return nil, err + } rcList, err := c.ReplicationControllers(api.NamespaceSystem).List(options) if err != nil { return nil, err } - if len(rcList.Items) != 1 { - return nil, fmt.Errorf("expected to find one replica for RC with label %s but got %d", + if (len(rcList.Items) + len(deploymentList.Items)) != 1 { + return nil, fmt.Errorf("expected to find one replica for RC or deployment with label %s but got %d", rcLabel, len(rcList.Items)) } + // Check all the replication controllers. for _, rc := range rcList.Items { selector := labels.Set(rc.Spec.Selector).AsSelector() options := api.ListOptions{LabelSelector: selector} @@ -124,6 +129,21 @@ func verifyExpectedRcsExistAndGetExpectedPods(c *client.Client) ([]string, error expectedPods = append(expectedPods, string(pod.UID)) } } + // Do the same for all deployments. + for _, rc := range deploymentList.Items { + selector := labels.Set(rc.Spec.Selector.MatchLabels).AsSelector() + options := api.ListOptions{LabelSelector: selector} + podList, err := c.Pods(api.NamespaceSystem).List(options) + if err != nil { + return nil, err + } + for _, pod := range podList.Items { + if pod.DeletionTimestamp != nil { + continue + } + expectedPods = append(expectedPods, string(pod.UID)) + } + } } return expectedPods, nil } From 0e391c13072bf9ff3ee7a8e01a85a8fade171544 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Fri, 25 Mar 2016 16:37:56 -0700 Subject: [PATCH 5/6] Create a new Deployment in kube-system for every version. --- .../cluster-monitoring/google/heapster-controller.yaml | 10 ++++++---- .../googleinfluxdb/heapster-controller-combined.yaml | 10 ++++++---- .../influxdb/heapster-controller.yaml | 10 ++++++---- .../standalone/heapster-controller.yaml | 8 +++++--- cluster/saltbase/salt/kube-addons/kube-addon-update.sh | 2 +- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml index 2e3282cf7f264..61ff0bd4e58be 100644 --- a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml @@ -11,21 +11,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster + name: heapster-v1.1.0.beta1 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: replicas: 1 selector: matchLabels: k8s-app: heapster + version: v1.1.0.beta1 template: metadata: labels: k8s-app: heapster - kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -90,7 +92,7 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{metrics_memory_per_node}}Mi - --threshold=5 - - --deployment=heapster + - --deployment=heapster-v1.1.0.beta1 - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -118,7 +120,7 @@ spec: - --memory={{eventer_memory}} - --extra-memory={{eventer_memory_per_node}}Ki - --threshold=5 - - --deployment=heapster + - --deployment=heapster-v1.1.0.beta1 - --container=eventer - --poll-period=300000 volumes: diff --git a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml index 6647497c68a84..dc81350b16418 100644 --- a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml +++ b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml @@ -11,21 +11,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster + name: heapster-v1.1.0.beta1 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: replicas: 1 selector: matchLabels: k8s-app: heapster + version: v1.1.0.beta1 template: metadata: labels: k8s-app: heapster - kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -91,7 +93,7 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - - --deployment=heapster + - --deployment=heapster-v1.1.0.beta1 - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -119,7 +121,7 @@ spec: - --memory={{ eventer_memory }} - --extra-memory={{ eventer_memory_per_node }}Ki - --threshold=5 - - --deployment=heapster + - --deployment=heapster-v1.1.0.beta1 - --container=eventer - --poll-period=300000 volumes: diff --git a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml index 7302e0bc6545c..8194f055fcd16 100644 --- a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml @@ -11,21 +11,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster + name: heapster-v1.1.0.beta1 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: replicas: 1 selector: matchLabels: k8s-app: heapster + version: v1.1.0.beta1 template: metadata: labels: k8s-app: heapster - kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -82,7 +84,7 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - - --deployment=heapster + - --deployment=heapster-v1.1.0.beta1 - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -110,7 +112,7 @@ spec: - --memory={{ eventer_memory }} - --extra-memory={{ eventer_memory_per_node }}Ki - --threshold=5 - - --deployment=heapster + - --deployment=heapster-v1.1.0.beta1 - --container=eventer - --poll-period=300000 diff --git a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml index 468403366c6dd..715cf70222b34 100644 --- a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml @@ -8,21 +8,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster + name: heapster-v1.1.0.beta1 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: replicas: 1 selector: matchLabels: k8s-app: heapster + version: v1.1.0.beta1 template: metadata: labels: k8s-app: heapster - kubernetes.io/cluster-service: "true" + version: v1.1.0.beta1 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -64,6 +66,6 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - - --deployment=heapster + - --deployment=heapster-v1.1.0.beta1 - --container=heapster - --poll-period=300000 diff --git a/cluster/saltbase/salt/kube-addons/kube-addon-update.sh b/cluster/saltbase/salt/kube-addons/kube-addon-update.sh index 9f2f68022e790..239d163737176 100755 --- a/cluster/saltbase/salt/kube-addons/kube-addon-update.sh +++ b/cluster/saltbase/salt/kube-addons/kube-addon-update.sh @@ -475,13 +475,13 @@ function update-addons() { local -r addon_path=$1 # be careful, reconcile-objects uses global variables reconcile-objects ${addon_path} ReplicationController "-" & + reconcile-objects ${addon_path} Deployment "-" & # We don't expect names to be versioned for the following kinds, so # we match the entire name, ignoring version suffix. # That's why we pass an empty string as the version separator. # If the description differs on disk, the object should be recreated. # This is not implemented in this version. - reconcile-objects ${addon_path} Deployment "" & reconcile-objects ${addon_path} Service "" & reconcile-objects ${addon_path} PersistentVolume "" & reconcile-objects ${addon_path} PersistentVolumeClaim "" & From 0be34b74e2aace927687a6a3556a733b6d6ea7c4 Mon Sep 17 00:00:00 2001 From: Janet Kuo Date: Wed, 6 Apr 2016 15:20:45 -0700 Subject: [PATCH 6/6] Don't upgrade heapster version (keep v1.0.2) --- .../google/heapster-controller.yaml | 12 ++++++------ .../googleinfluxdb/heapster-controller-combined.yaml | 12 ++++++------ .../influxdb/heapster-controller.yaml | 12 ++++++------ .../standalone/heapster-controller.yaml | 10 +++++----- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml index 61ff0bd4e58be..575895cb3064f 100644 --- a/cluster/addons/cluster-monitoring/google/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/google/heapster-controller.yaml @@ -11,23 +11,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.1.0.beta1 + name: heapster-v1.0.2 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" - version: v1.1.0.beta1 + version: v1.0.2 spec: replicas: 1 selector: matchLabels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 template: metadata: labels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -92,7 +92,7 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{metrics_memory_per_node}}Mi - --threshold=5 - - --deployment=heapster-v1.1.0.beta1 + - --deployment=heapster-v1.0.2 - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -120,7 +120,7 @@ spec: - --memory={{eventer_memory}} - --extra-memory={{eventer_memory_per_node}}Ki - --threshold=5 - - --deployment=heapster-v1.1.0.beta1 + - --deployment=heapster-v1.0.2 - --container=eventer - --poll-period=300000 volumes: diff --git a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml index dc81350b16418..a4d7bcf19f0ad 100644 --- a/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml +++ b/cluster/addons/cluster-monitoring/googleinfluxdb/heapster-controller-combined.yaml @@ -11,23 +11,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.1.0.beta1 + name: heapster-v1.0.2 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" - version: v1.1.0.beta1 + version: v1.0.2 spec: replicas: 1 selector: matchLabels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 template: metadata: labels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -93,7 +93,7 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - - --deployment=heapster-v1.1.0.beta1 + - --deployment=heapster-v1.0.2 - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -121,7 +121,7 @@ spec: - --memory={{ eventer_memory }} - --extra-memory={{ eventer_memory_per_node }}Ki - --threshold=5 - - --deployment=heapster-v1.1.0.beta1 + - --deployment=heapster-v1.0.2 - --container=eventer - --poll-period=300000 volumes: diff --git a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml index 8194f055fcd16..ae617d0c0763f 100644 --- a/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/influxdb/heapster-controller.yaml @@ -11,23 +11,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.1.0.beta1 + name: heapster-v1.0.2 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" - version: v1.1.0.beta1 + version: v1.0.2 spec: replicas: 1 selector: matchLabels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 template: metadata: labels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -84,7 +84,7 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - - --deployment=heapster-v1.1.0.beta1 + - --deployment=heapster-v1.0.2 - --container=heapster - --poll-period=300000 - image: gcr.io/google_containers/addon-resizer:1.0 @@ -112,7 +112,7 @@ spec: - --memory={{ eventer_memory }} - --extra-memory={{ eventer_memory_per_node }}Ki - --threshold=5 - - --deployment=heapster-v1.1.0.beta1 + - --deployment=heapster-v1.0.2 - --container=eventer - --poll-period=300000 diff --git a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml index 715cf70222b34..4aebf1f4ac8f9 100644 --- a/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml +++ b/cluster/addons/cluster-monitoring/standalone/heapster-controller.yaml @@ -8,23 +8,23 @@ apiVersion: extensions/v1beta1 kind: Deployment metadata: - name: heapster-v1.1.0.beta1 + name: heapster-v1.0.2 namespace: kube-system labels: k8s-app: heapster kubernetes.io/cluster-service: "true" - version: v1.1.0.beta1 + version: v1.0.2 spec: replicas: 1 selector: matchLabels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 template: metadata: labels: k8s-app: heapster - version: v1.1.0.beta1 + version: v1.0.2 spec: containers: - image: gcr.io/google_containers/heapster:v1.0.2 @@ -66,6 +66,6 @@ spec: - --memory={{ metrics_memory }} - --extra-memory={{ metrics_memory_per_node }}Mi - --threshold=5 - - --deployment=heapster-v1.1.0.beta1 + - --deployment=heapster-v1.0.2 - --container=heapster - --poll-period=300000