From 79f0cc25e8bb36d352a2a23f7be46bbe921cc907 Mon Sep 17 00:00:00 2001 From: Quintin Lee Date: Fri, 11 Mar 2016 16:43:54 -0800 Subject: [PATCH] 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.