首页 > 解决方案 > Kubernetes + ELK : 将 kibana 连接到 elasticsearch 服务

问题描述

我有 Elasticsearch POD + SERVICE 和 Kibana POD + SERVICE。我正在尝试将我的 Kibana POD 连接到 Elasticsearch 服务,但出现连接错误。

这是我的 Kibaba POD 的 yaml:

apiVersion: v1
kind: Pod
metadata:
  name: kibana
  labels:
    app: kibana
spec:
  ports:
  containers:
  - name: kibana
    image: kibana:6.6.1
    command: ["/bin/sh"]
    args: ["-c", "bin/kibana --elasticsearch.url='elasticsearch-service:9200'"]

我收到以下错误:

 FATAL  ValidationError: child "elasticsearch" fails because [child "hosts" fails because [single value of "hosts" fails because ["hosts" must be a valid uri with a scheme matching the http|https pattern]]]

据我了解,我收到错误是因为 elasticsearch.url 不是以 http/https 开头的。所以我尝试运行 args: ["-c", "bin/kibana --elasticsearch.url='http://elasticsearch-service:9200'"],但我也遇到了连接错误(我认为是因为服务并不意味着用 http/https 指向)。

这是 elasticsearch 服务的 yaml(效果很好):

apiVersion: v1
kind: Service
metadata:
  name: elasticsearch-service
spec:
  ports:
  - port: 9200
    name: serving
    protocol: TCP
  - port: 9300
    name: node2node
    protocol: TCP
  selector:
    app: elasticsearch

对于其他 POD,我可以连接到 elasticsearch-service:9200,但 Kibana 不支持 http/https。我怎样才能让它们连接起来?

标签: elasticsearchkuberneteskibana

解决方案


我设法通过添加来修复它:

env:
  - name: ELASTICSEARCH_URL
    value: "http://elasticsearch-service:9200"
  - name: ELASTICSEARCH_PORT
    value: "9200"
  - name: SERVER_BASEPATH
    value: /api/v1/namespaces/default/services/kibana-service:5601/proxy
  - name: SERVER_HOST
    value: "0.0.0.0"

真正解决的是 SERVER_BASEPATH 环境。


推荐阅读