diff --git a/cluster/addons/metadata-agent/stackdriver/metadata-agent.yaml b/cluster/addons/metadata-agent/stackdriver/metadata-agent.yaml index 792c2bcdefd..1ac226eb7e6 100644 --- a/cluster/addons/metadata-agent/stackdriver/metadata-agent.yaml +++ b/cluster/addons/metadata-agent/stackdriver/metadata-agent.yaml @@ -7,6 +7,19 @@ metadata: kubernetes.io/cluster-service: "true" addonmanager.kubernetes.io/mode: Reconcile --- +apiVersion: v1 +kind: ConfigMap +metadata: + name: metadata-agent-config + namespace: kube-system +data: + node_level.conf: |- + KubernetesUseWatch: true + KubernetesClusterLevelMetadata: false + cluster_level.conf: |- + KubernetesUseWatch: true + KubernetesClusterLevelMetadata: true +--- kind: DaemonSet apiVersion: extensions/v1beta1 metadata: @@ -30,6 +43,24 @@ spec: - image: gcr.io/stackdriver-agents/stackdriver-metadata-agent:{{ metadata_agent_version }} imagePullPolicy: IfNotPresent name: metadata-agent + livenessProbe: + exec: + command: + - /bin/bash + - c + - | + if [[ -f /var/run/metadata-agent/health/unhealthy ]]; then + exit 1; + fi + periodSeconds: 10 + failureThreshold: 1 + successThreshold: 1 + volumeMounts: + - name: metadata-agent-config-volume + mountPath: /etc/config + command: + - /opt/stackdriver/metadata/sbin/metadatad + - --config-file=/etc/config/node_level.conf ports: - containerPort: 8000 hostPort: 8799 @@ -42,7 +73,73 @@ spec: restartPolicy: Always schedulerName: default-scheduler terminationGracePeriodSeconds: 30 + volumes: + - name: metadata-agent-config-volume + configMap: + name: metadata-agent-config updateStrategy: rollingUpdate: maxUnavailable: 1 type: RollingUpdate +--- +kind: Deployment +apiVersion: apps/v1beta1 +metadata: + labels: + app: metadata-agent-cluster-level + kubernetes.io/cluster-service: "true" + addonmanager.kubernetes.io/mode: Reconcile + name: metadata-agent-cluster-level + namespace: kube-system +spec: + replicas: 1 + selector: + matchLabels: + app: metadata-agent-cluster-level + template: + metadata: + labels: + app: metadata-agent-cluster-level + spec: + serviceAccountName: metadata-agent + containers: + - image: gcr.io/stackdriver-agents/stackdriver-metadata-agent:{{ metadata_agent_version }} + imagePullPolicy: IfNotPresent + name: metadata-agent + livenessProbe: + exec: + command: + - /bin/bash + - c + - | + if [[ -f /var/run/metadata-agent/health/unhealthy ]]; then + exit 1; + fi + periodSeconds: 10 + failureThreshold: 1 + successThreshold: 1 + volumeMounts: + - name: metadata-agent-config-volume + mountPath: /etc/config + command: + - /opt/stackdriver/metadata/sbin/metadatad + - --config-file=/etc/config/cluster_level.conf + ports: + - containerPort: 8000 + protocol: TCP + resources: + requests: + cpu: {{ metadata_agent_cluster_level_cpu_request }} + memory: {{ metadata_agent_cluster_level_memory_request }} + dnsPolicy: ClusterFirst + restartPolicy: Always + schedulerName: default-scheduler + terminationGracePeriodSeconds: 30 + volumes: + - name: metadata-agent-config-volume + configMap: + name: metadata-agent-config + strategy: + rollingUpdate: + maxUnavailable: 1 + type: RollingUpdate diff --git a/cluster/gce/config-default.sh b/cluster/gce/config-default.sh index 6c041074430..aef30e0b85e 100755 --- a/cluster/gce/config-default.sh +++ b/cluster/gce/config-default.sh @@ -158,7 +158,7 @@ ENABLE_METRICS_SERVER="${KUBE_ENABLE_METRICS_SERVER:-true}" ENABLE_METADATA_AGENT="${KUBE_ENABLE_METADATA_AGENT:-none}" # Version tag of metadata agent -METADATA_AGENT_VERSION="${KUBE_METADATA_AGENT_VERSION:-0.2-0.0.16-1}" +METADATA_AGENT_VERSION="${KUBE_METADATA_AGENT_VERSION:-0.2-0.0.19-1}" # One special node out of NUM_NODES would be created of this type if specified. # Useful for scheduling heapster in large clusters with nodes of small size. diff --git a/cluster/gce/config-test.sh b/cluster/gce/config-test.sh index 62b77e811eb..d8d6c816cc9 100755 --- a/cluster/gce/config-test.sh +++ b/cluster/gce/config-test.sh @@ -152,7 +152,7 @@ ENABLE_METRICS_SERVER="${KUBE_ENABLE_METRICS_SERVER:-true}" ENABLE_METADATA_AGENT="${KUBE_ENABLE_METADATA_AGENT:-none}" # Version tag of metadata agent -METADATA_AGENT_VERSION="${KUBE_METADATA_AGENT_VERSION:-0.2-0.0.16-1}" +METADATA_AGENT_VERSION="${KUBE_METADATA_AGENT_VERSION:-0.2-0.0.19-1}" # One special node out of NUM_NODES would be created of this type if specified. # Useful for scheduling heapster in large clusters with nodes of small size. diff --git a/cluster/gce/gci/configure-helper.sh b/cluster/gce/gci/configure-helper.sh index 5f1552106f8..0000f325992 100644 --- a/cluster/gce/gci/configure-helper.sh +++ b/cluster/gce/gci/configure-helper.sh @@ -2156,11 +2156,15 @@ EOF [[ "${METADATA_AGENT_VERSION:-}" != "" ]]; then metadata_agent_cpu_request="${METADATA_AGENT_CPU_REQUEST:-40m}" metadata_agent_memory_request="${METADATA_AGENT_MEMORY_REQUEST:-50Mi}" + metadata_agent_cluster_level_cpu_request="${METADATA_AGENT_CLUSTER_LEVEL_CPU_REQUEST:-40m}" + metadata_agent_cluster_level_memory_request="${METADATA_AGENT_CLUSTER_LEVEL_MEMORY_REQUEST:-50Mi}" setup-addon-manifests "addons" "metadata-agent/stackdriver" - daemon_set_yaml="${dst_dir}/metadata-agent/stackdriver/metadata-agent.yaml" - sed -i -e "s@{{ metadata_agent_version }}@${METADATA_AGENT_VERSION}@g" "${daemon_set_yaml}" - sed -i -e "s@{{ metadata_agent_cpu_request }}@${metadata_agent_cpu_request}@g" "${daemon_set_yaml}" - sed -i -e "s@{{ metadata_agent_memory_request }}@${metadata_agent_memory_request}@g" "${daemon_set_yaml}" + metadata_agent_yaml="${dst_dir}/metadata-agent/stackdriver/metadata-agent.yaml" + sed -i -e "s@{{ metadata_agent_version }}@${METADATA_AGENT_VERSION}@g" "${metadata_agent_yaml}" + sed -i -e "s@{{ metadata_agent_cpu_request }}@${metadata_agent_cpu_request}@g" "${metadata_agent_yaml}" + sed -i -e "s@{{ metadata_agent_memory_request }}@${metadata_agent_memory_request}@g" "${metadata_agent_yaml}" + sed -i -e "s@{{ metadata_agent_cluster_level_cpu_request }}@${metadata_agent_cluster_level_cpu_request}@g" "${metadata_agent_yaml}" + sed -i -e "s@{{ metadata_agent_cluster_level_memory_request }}@${metadata_agent_cluster_level_memory_request}@g" "${metadata_agent_yaml}" fi fi if [[ "${ENABLE_METRICS_SERVER:-}" == "true" ]]; then diff --git a/cluster/gce/util.sh b/cluster/gce/util.sh index 100c649ce87..39dfbafdf45 100755 --- a/cluster/gce/util.sh +++ b/cluster/gce/util.sh @@ -679,6 +679,10 @@ ENABLE_CLUSTER_MONITORING: $(yaml-quote ${ENABLE_CLUSTER_MONITORING:-none}) ENABLE_METRICS_SERVER: $(yaml-quote ${ENABLE_METRICS_SERVER:-false}) ENABLE_METADATA_AGENT: $(yaml-quote ${ENABLE_METADATA_AGENT:-none}) METADATA_AGENT_VERSION: $(yaml-quote ${METADATA_AGENT_VERSION:-}) +METADATA_AGENT_CPU_REQUEST: $(yaml-quote ${METADATA_AGENT_CPU_REQUEST:-}) +METADATA_AGENT_MEMORY_REQUEST: $(yaml-quote ${METADATA_AGENT_MEMORY_REQUEST:-}) +METADATA_AGENT_CLUSTER_LEVEL_CPU_REQUEST: $(yaml-quote ${METADATA_AGENT_CLUSTER_LEVEL_CPU_REQUEST:-}) +METADATA_AGENT_CLUSTER_LEVEL_MEMORY_REQUEST: $(yaml-quote ${METADATA_AGENT_CLUSTER_LEVEL_MEMORY_REQUEST:-}) DOCKER_REGISTRY_MIRROR_URL: $(yaml-quote ${DOCKER_REGISTRY_MIRROR_URL:-}) ENABLE_L7_LOADBALANCING: $(yaml-quote ${ENABLE_L7_LOADBALANCING:-none}) ENABLE_CLUSTER_LOGGING: $(yaml-quote ${ENABLE_CLUSTER_LOGGING:-false})