From 212c00e67c6b34278a19c397a794fb00482d9e76 Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Thu, 29 Dec 2016 00:23:30 -0500 Subject: [PATCH 1/3] (experimental) addon for Elasticsearch logging --- addons/logging-elasticsearch/addon.yaml | 9 ++ addons/logging-elasticsearch/v1.5.0.yaml | 185 +++++++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 addons/logging-elasticsearch/addon.yaml create mode 100644 addons/logging-elasticsearch/v1.5.0.yaml diff --git a/addons/logging-elasticsearch/addon.yaml b/addons/logging-elasticsearch/addon.yaml new file mode 100644 index 0000000000..0cec48d6a5 --- /dev/null +++ b/addons/logging-elasticsearch/addon.yaml @@ -0,0 +1,9 @@ +kind: Addons +metadata: + name: logging-elasticsearch +spec: + addons: + - version: 1.5.0 + selector: + k8s-addon: logging-elasticsearch.addons.k8s.io + manifest: v1.5.0.yaml diff --git a/addons/logging-elasticsearch/v1.5.0.yaml b/addons/logging-elasticsearch/v1.5.0.yaml new file mode 100644 index 0000000000..151e2f3789 --- /dev/null +++ b/addons/logging-elasticsearch/v1.5.0.yaml @@ -0,0 +1,185 @@ +apiVersion: extensions/v1beta1 +kind: DaemonSet +metadata: + name: fluentd-es + namespace: kube-system + labels: + k8s-addon: logging-elasticsearch.addons.k8s.io + k8s-app: fluentd-es + kubernetes.io/cluster-service: "true" + version: v1.20 +spec: + template: + metadata: + labels: + k8s-app: fluentd-es + kubernetes.io/cluster-service: "true" + version: v1.20 + spec: + containers: + - name: fluentd-es + image: gcr.io/google_containers/fluentd-elasticsearch:1.20 + command: + - '/bin/sh' + - '-c' + - '/usr/sbin/td-agent 2>&1 >> /var/log/fluentd.log' + resources: + limits: + memory: 200Mi + requests: + cpu: 100m + memory: 200Mi + volumeMounts: + - name: varlog + mountPath: /var/log + - name: varlibdockercontainers + mountPath: /var/lib/docker/containers + readOnly: true + #nodeSelector: + # alpha.kubernetes.io/fluentd-ds-ready: "true" + terminationGracePeriodSeconds: 30 + volumes: + - name: varlog + hostPath: + path: /var/log + - name: varlibdockercontainers + hostPath: + path: /var/lib/docker/containers + +--- + +apiVersion: v1 +kind: Service +metadata: + name: elasticsearch-logging + namespace: kube-system + labels: + k8s-addon: logging-elasticsearch.addons.k8s.io + k8s-app: elasticsearch-logging + kubernetes.io/cluster-service: "true" + kubernetes.io/name: "Elasticsearch" +spec: + ports: + - port: 9200 + protocol: TCP + targetPort: db + selector: + k8s-app: elasticsearch-logging + +--- + +apiVersion: apps/v1beta1 +kind: StatefulSet +metadata: + name: elasticsearch-logging + namespace: kube-system + labels: + k8s-addon: logging-elasticsearch.addons.k8s.io + k8s-app: elasticsearch-logging + version: v1 + kubernetes.io/cluster-service: "true" +spec: + serviceName: elasticsearch-logging + replicas: 2 + template: + metadata: + labels: + k8s-app: elasticsearch-logging + version: v1 + kubernetes.io/cluster-service: "true" + spec: + containers: + - image: gcr.io/google_containers/elasticsearch:v2.4.1 + name: elasticsearch-logging + resources: + # need more cpu upon initialization, therefore burstable class + limits: + cpu: 1000m + requests: + cpu: 100m + ports: + - containerPort: 9200 + name: db + protocol: TCP + - containerPort: 9300 + name: transport + protocol: TCP + volumeMounts: + - name: es-persistent-storage + mountPath: /data + env: + - name: "NAMESPACE" + valueFrom: + fieldRef: + fieldPath: metadata.namespace + volumeClaimTemplates: + - metadata: + name: es-persistent-storage + annotations: + volume.beta.kubernetes.io/storage-class: "default" + spec: + accessModes: [ "ReadWriteOnce" ] + resources: + requests: + storage: 20Gi + +--- + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: kibana-logging + namespace: kube-system + labels: + k8s-addon: logging-elasticsearch.addons.k8s.io + k8s-app: kibana-logging + kubernetes.io/cluster-service: "true" +spec: + replicas: 1 + selector: + matchLabels: + k8s-app: kibana-logging + template: + metadata: + labels: + k8s-app: kibana-logging + spec: + containers: + - name: kibana-logging + image: gcr.io/google_containers/kibana:v4.6.1 + resources: + # keep request = limit to keep this container in guaranteed class + limits: + cpu: 100m + requests: + cpu: 100m + env: + - name: "ELASTICSEARCH_URL" + value: "http://elasticsearch-logging:9200" + - name: "KIBANA_BASE_URL" + value: "/api/v1/proxy/namespaces/kube-system/services/kibana-logging" + ports: + - containerPort: 5601 + name: ui + protocol: TCP + +--- + +apiVersion: v1 +kind: Service +metadata: + name: kibana-logging + namespace: kube-system + labels: + k8s-addon: logging-elasticsearch.addons.k8s.io + k8s-app: kibana-logging + kubernetes.io/cluster-service: "true" + kubernetes.io/name: "Kibana" +spec: + ports: + - port: 5601 + protocol: TCP + targetPort: ui + selector: + k8s-app: kibana-logging + From ccc8bb206f57d6685d57c7b210902aad1c5d3fde Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Thu, 6 Apr 2017 22:54:24 -0400 Subject: [PATCH 2/3] Add kubernetesVersion annotation to select k8s >= 1.5 --- addons/logging-elasticsearch/addon.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/logging-elasticsearch/addon.yaml b/addons/logging-elasticsearch/addon.yaml index 0cec48d6a5..69916ae6d3 100644 --- a/addons/logging-elasticsearch/addon.yaml +++ b/addons/logging-elasticsearch/addon.yaml @@ -7,3 +7,4 @@ spec: selector: k8s-addon: logging-elasticsearch.addons.k8s.io manifest: v1.5.0.yaml + kubernetesVersion: ">=1.5.0" # We use statefulsets From e0fd63cb14b50d2df55860406956153897a3fa30 Mon Sep 17 00:00:00 2001 From: Justin Santa Barbara Date: Thu, 6 Apr 2017 23:00:48 -0400 Subject: [PATCH 3/3] Upgrade versions to latest Thanks @arielkung --- addons/logging-elasticsearch/v1.5.0.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/logging-elasticsearch/v1.5.0.yaml b/addons/logging-elasticsearch/v1.5.0.yaml index 151e2f3789..e22c1ed3e0 100644 --- a/addons/logging-elasticsearch/v1.5.0.yaml +++ b/addons/logging-elasticsearch/v1.5.0.yaml @@ -7,7 +7,7 @@ metadata: k8s-addon: logging-elasticsearch.addons.k8s.io k8s-app: fluentd-es kubernetes.io/cluster-service: "true" - version: v1.20 + version: v1.22 spec: template: metadata: @@ -18,7 +18,7 @@ spec: spec: containers: - name: fluentd-es - image: gcr.io/google_containers/fluentd-elasticsearch:1.20 + image: gcr.io/google_containers/fluentd-elasticsearch:1.22 command: - '/bin/sh' - '-c' @@ -89,7 +89,7 @@ spec: kubernetes.io/cluster-service: "true" spec: containers: - - image: gcr.io/google_containers/elasticsearch:v2.4.1 + - image: gcr.io/google_containers/elasticsearch:v2.4.1-2 name: elasticsearch-logging resources: # need more cpu upon initialization, therefore burstable class @@ -146,7 +146,7 @@ spec: spec: containers: - name: kibana-logging - image: gcr.io/google_containers/kibana:v4.6.1 + image: gcr.io/google_containers/kibana:v4.6.1-1 resources: # keep request = limit to keep this container in guaranteed class limits: