2016-01-14 13 views
8

Sorry für die Noob Frage, aber von https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/getting-started-guides/logging-elasticsearch.md heißt es:Einstellung von Umgebungsvariablen auf GCE (Kubernetes)

Um Elasticsearch und Kibana für Cluster verwenden Protokollierung Sie die folgende Umgebungsvariable sollte wie unten dargestellt:

KUBE_LOGGING_DESTINATION=elasticsearch 

Wo und wie ich diese Env Var gesetzt haben? Ich dachte, dass ich

gcloud container clusters create 

verwenden sollten und die Optionen dort passieren, aber es gibt keine Optionen ...

Antwort

3

Diese Dokumentation für Anwender, die Cluster über die Open-Source-Shell-Skripten für GCE sind Aufdrehen. Elasticsearch wird derzeit nicht als Teil der Clustererstellungsbefehle für Google Container Engine unterstützt. Sie können es nach dem Erstellen des Clusters manuell zu Ihrem Cluster hinzufügen.

12

Wie bereits in Roberts Antwort erwähnt, muss der Elasticsearch/Kibana-Stack manuell hinzugefügt werden, wenn der Cluster auf Google Container Engine (GKE) ausgeführt werden soll. Mit Hilfe der gegebenen Informationen in diesen post, ich war in der Lage, es zu erhalten zu arbeiten, um die folgenden Schritte ausführen:

  1. einen GKE Cluster starten ohne Cloud Logging

    gcloud container --project <PROJECT_ID> clusters create <CLUSTER_ID> --no-enable-cloud-logging 
    
  2. hinzufügen konfigurierten fluentd Behälter zu jedem Knoten mit einem kubernetes DaemonSet ausführen.

    kubectl create -f fluentd-es.yaml 
    

    fluentd-es.yaml

    apiVersion: extensions/v1beta1 
    kind: DaemonSet 
    metadata: 
        name: fluentd-elasticsearch 
        namespace: kube-system 
        labels: 
        app: fluentd-logging 
    
    spec: 
        template: 
        metadata: 
         labels: 
         app: fluentd-es 
        spec: 
         containers: 
         - name: fluentd-elasticsearch 
         image: gcr.io/google_containers/fluentd-elasticsearch:1.15 
         resources: 
          limits: 
          memory: 200Mi 
          requests: 
          cpu: 100m 
          memory: 200Mi 
         volumeMounts: 
         - name: varlog 
          mountPath: /var/log 
         - name: varlibdockercontainers 
          mountPath: /var/lib/docker/containers 
          readOnly: true 
         volumes: 
         - name: varlog 
         hostPath: 
          path: /var/log 
         - name: varlibdockercontainers 
         hostPath: 
          path: /var/lib/docker/containers 
    
  3. hinzufügen Elasticsearch und Kibana Schoten und Dienstleistungen.

    kubectl create -f es-controller.yaml 
    kubectl create -f es-service.yaml 
    kubectl create -f kibana-controller.yaml 
    kubectl create -f kibana-service.yaml 
    

    Hinweis, dass das unten kubernetes.io/cluster-service: "true" Etikett ( vorhanden in den ursprünglichen files) entfernt worden ist. Dieses Label in den Definitionen führte zur Beendigung der laufenden Pods.

    es-controller.yaml

    apiVersion: v1 
    kind: ReplicationController 
    metadata: 
        name: elasticsearch-logging-v1 
        namespace: kube-system 
        labels: 
        k8s-app: elasticsearch-logging 
        version: v1 
    spec: 
        replicas: 2 
        selector: 
        k8s-app: elasticsearch-logging 
        version: v1 
        template: 
        metadata: 
         labels: 
         k8s-app: elasticsearch-logging 
         version: v1 
         kubernetes.io/cluster-service: "true" 
        spec: 
         containers: 
         - image: gcr.io/google_containers/elasticsearch:1.8 
         name: elasticsearch-logging 
         resources: 
          limits: 
          cpu: 100m 
          requests: 
          cpu: 100m 
         ports: 
         - containerPort: 9200 
          name: db 
          protocol: TCP 
         - containerPort: 9300 
          name: transport 
          protocol: TCP 
         volumeMounts: 
         - name: es-persistent-storage 
          mountPath: /data 
         volumes: 
         - name: es-persistent-storage 
         emptyDir: {} 
    

    es-service.yaml

    apiVersion: v1 
    kind: Service 
    metadata: 
        name: elasticsearch-logging 
        namespace: kube-system 
        labels: 
        k8s-app: elasticsearch-logging 
        kubernetes.io/name: "Elasticsearch" 
    spec: 
        ports: 
        - port: 9200 
        protocol: TCP 
        targetPort: db 
        selector: 
        k8s-app: elasticsearch-logging 
    

    Kibana-controller.yaml

    apiVersion: v1 
    kind: ReplicationController 
    metadata: 
        name: kibana-logging-v1 
        namespace: kube-system 
        labels: 
        k8s-app: kibana-logging 
        version: v1 
    spec: 
        replicas: 1 
        selector: 
        k8s-app: kibana-logging 
        version: v1 
        template: 
        metadata: 
         labels: 
         k8s-app: kibana-logging 
         version: v1 
         kubernetes.io/cluster-service: "true" 
        spec: 
         containers: 
         - name: kibana-logging 
         image: gcr.io/google_containers/kibana:1.3 
         resources: 
          limits: 
          cpu: 100m 
          requests: 
          cpu: 100m 
         env: 
          - name: "ELASTICSEARCH_URL" 
          value: "http://elasticsearch-logging:9200" 
         ports: 
         - containerPort: 5601 
          name: ui 
          protocol: TCP 
    

    kibana-service. yaml

    apiVersion: v1 
    kind: Service 
    metadata: 
        name: kibana-logging 
        namespace: kube-system 
        labels: 
        k8s-app: kibana-logging 
        kubernetes.io/name: "Kibana" 
    spec: 
        ports: 
        - port: 5601 
        protocol: TCP 
        targetPort: ui 
        selector: 
        k8s-app: kibana-logging 
    
  4. erstellen kubectl Proxy

    kubectl proxy 
    
  5. Sehen Sie Ihre Logs mit Kibana bei

    http://localhost:8001/api/v1/proxy/namespaces/kube-system/services/kibana-logging/

+2

Wissen Sie, ob es möglich ist, zwei Versionen laufen fluentd, @Harry Haller. 1 für ELK und 1 für GCL. –