From 79f0cc25e8bb36d352a2a23f7be46bbe921cc907 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Fri, 11 Mar 2016 16:43:54 -0800 Subject: [PATCH 1/4] 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 1370899cd46..26584bac4d1 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.0 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 928c82402c9..428ee5d61cf 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.0 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 de792b41892..9a30aa52c92 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.0 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 41f619679cb..51597940aa2 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.0 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 6ba07b15f71..239d1637371 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 c48456331504e32386311c3fb8d1fd7cec492308 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Wed, 16 Mar 2016 16:23:45 -0700 Subject: [PATCH 2/4] 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 26584bac4d1..db6d6f12dcd 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.0 + 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 428ee5d61cf..a464871fc82 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.0 + 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 9a30aa52c92..cbfa5b10e7b 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.0 + 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 51597940aa2..0fce59e364f 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.0 + 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 239d1637371..9f2f68022e7 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 0c22277020c6051f5c6335c4584161b75bba3702 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Thu, 17 Mar 2016 13:25:01 -0700 Subject: [PATCH 3/4] 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 db6d6f12dcd..f58310859ba 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 a464871fc82..9dc3665e6dd 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 cbfa5b10e7b..2ea4bbf3b1e 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 0fce59e364f..0537171dfd7 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 81ba98ae5d7fe46fa5c0fd01066efa01f604e4e9 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Thu, 17 Mar 2016 17:10:46 -0700 Subject: [PATCH 4/4] 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 f206d7b7f2a..6d119547f81 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 }