在GCE上设置环境变量(kubernetes)

在GCE上设置环境变量(kubernetes),kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,很抱歉我的问题,但是 它说: 要使用Elasticsearch和Kibana进行集群日志记录,应设置 如下所示的环境变量: 在何处以及如何设置此环境变量?我在想我应该用 gcloud container clusters create 并在那里传递选项,但没有选项…该文档适用于通过GCE的开源shell脚本打开集群的用户。Elasticsearch目前不支持作为Google容器引擎集群创建命令的一部分。创建集群后,可以手动将其添加到集群中 如Robert的回答中所述,如果集群应该在Goo

很抱歉我的问题,但是 它说:

要使用Elasticsearch和Kibana进行集群日志记录,应设置 如下所示的环境变量:

在何处以及如何设置此环境变量?我在想我应该用

gcloud container clusters create   

并在那里传递选项,但没有选项…

该文档适用于通过GCE的开源shell脚本打开集群的用户。Elasticsearch目前不支持作为Google容器引擎集群创建命令的一部分。创建集群后,可以手动将其添加到集群中

如Robert的回答中所述,如果集群应该在Google容器引擎(GKE)上运行,则需要手动添加Elasticsearch/Kibana堆栈。使用本文中给出的信息,我能够让它执行以下步骤:

  • 在没有云日志记录的情况下启动GKE集群

    gcloud container --project <PROJECT_ID> clusters create <CLUSTER_ID> --no-enable-cloud-logging
    
    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
    
    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: {}
    
    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
    
    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
    
    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
    
  • 添加elasticsearch和kibana吊舱和服务

    kubectl create -f es-controller.yaml
    kubectl create -f es-service.yaml
    kubectl create -f kibana-controller.yaml
    kubectl create -f kibana-service.yaml
    
    请注意下面的
    kubernetes.io/cluster-service:“true”
    标签(存在 在原件中)已删除。 定义中有此标签导致运行吊舱终止

    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
    
    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: {}
    
    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
    
    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
    
    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
    
    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
    
    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: {}
    
    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
    
    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
    
    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
    
    kibana controller.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
    
    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: {}
    
    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
    
    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
    
    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
    
    kibana服务.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
    
    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: {}
    
    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
    
    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
    
    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
    
  • 创建kubectl代理

    kubectl proxy
    
  • 和kibana一起看你的日志


  • 你知道有没有可能运行两个版本的fluentd,@Harry Haller。麋鹿1只,GCL 1只。