2016-01-14 20 views
8

Scusate per la domanda niubbo ma da https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/getting-started-guides/logging-elasticsearch.md si dice:Variabili impostazione dell'ambiente su GCE (kubernetes)

Per utilizzare elasticsearch e Kibana per il cluster la registrazione è necessario impostare la seguente variabile d'ambiente come illustrato di seguito:

KUBE_LOGGING_DESTINATION=elasticsearch 

Dove e come faccio a impostare questo Env Var? Stavo pensando che dovrei usare

gcloud container clusters create 

e superare le opzioni di lì, ma non ci sono opzioni ...

risposta

3

che la documentazione sia per gli utenti che stanno trasformando in cluster tramite gli script di shell open source per GCE. Elasticsearch non è attualmente supportato come parte dei comandi di creazione del cluster per Google Container Engine. È possibile aggiungerlo manualmente al cluster dopo che il cluster è stato creato.

12

Come già accennato nella risposta di Robert, lo stack Elasticsearch/Kibana deve essere aggiunto manualmente se il cluster deve essere eseguito su Google Container Engine (GKE). Utilizzando le informazioni contenute in questo post, ero in grado di farlo funzionare effettuando le seguenti operazioni:

  1. Avviare un cluster GKE senza registrazione nuvola

    gcloud container --project <PROJECT_ID> clusters create <CLUSTER_ID> --no-enable-cloud-logging 
    
  2. Aggiungi un contenitore fluentd configurato per ciascun nodo in esecuzione usando un DaemonSet di kubernetes.

    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. Aggiungere elasticsearch e Kibana baccelli e servizi.

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

    nota sotto il kubernetes.io/cluster-service: "true" etichetta (presente nell'originale files) è stato rimosso. Avere questa etichetta nelle definizioni ha comportato la chiusura dei pod in esecuzione.

    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. creare un proxy kubectl

    kubectl proxy 
    
  5. Guarda i tuoi log con Kibana a

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

+2

Sapete se è possibile eseguire due versioni di fluentd, @Harry Haller. 1 per ELK e 1 per GCL. –

Problemi correlati