Kubernetes + ELK: подключение кибаны к службе поиска упругости - PullRequest
0 голосов
/ 09 марта 2019

У меня есть Elasticsearch POD + SERVICE и Kibana POD + SERVICE.Я пытаюсь подключить мой Kibana POD к сервису Elasticsearch, но я получаю ошибки подключения.

Это моя версия Kibaba POD:

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]]]

Из того, что я понимаю, я получаю сообщение об ошибке, потому чтоasticsearch.url не начинается с http / https.Поэтому я попытался запустить args: ["-c", "bin/kibana --elasticsearch.url='http://elasticsearch-service:9200'"], но я также получаю ошибки соединения (я думаю, потому что служба не предназначена для указания с http / https).

Это yaml службыasticsearch (который работает хорошо):

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 я мог подключиться с услугойasticsearch: 9200, но Кибана требует http / https.Как я могу заставить их соединиться?

Ответы [ 4 ]

1 голос
/ 09 марта 2019

Мне удалось это исправить, добавив:

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"

Что действительно решило, так это env. SERVER_BASEPATH.

0 голосов
/ 09 марта 2019

Из официальной документации документы :

версия docker-compose:

version: '2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:6.6.1
    environment:
      SERVER_NAME: kibana.example.org
      ELASTICSEARCH_HOSTS: http://elasticsearch.example.org

Вы просто конвертируете ее в службу kubernetes либо вручную, либо с помощью инструмента komposeи запустите его.

Или вы можете попробовать подключить переменную env к существующему файлу и удалить опцию из командной строкиasticsearch url.

ELASTICSEARCH_HOSTS: http://elasticsearch.example.org

ИЛИ Если вы просто назовете свой сервисasticsearchв качествеasticsearch, он должен работать, ничего не передавая, потому что значение по умолчанию:

http://elasticsearch:9200

пример с именем существующей службы:

apiVersion: v1
kind: Pod
metadata:
  name: kibana
  labels:
    app: kibana
spec:
  ports:
  containers:
  - name: kibana
    image: docker.elastic.co/kibana/kibana:6.6.1
    env:
    - name: ELASTICSEARCH_HOSTS
      value: "http://elasticsearch-service:9200"
0 голосов
/ 09 марта 2019

Не используйте переключатель --elasticsearch.url вместо этого используйте переменную окружения ELASTICSEARCH_URL.

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"]
    env:
    - name: ELASTICSEARCH_URL
      value: "http://elasticsearch-service:9200"

Я также предлагаю вам прочитать мой ответ в другой теме для более подробного объяснения DNS для k8s.

0 голосов
/ 09 марта 2019

Можете ли вы поработать с сервисомasticsearch от Kibana pod. Удалите одиночные довольно вокруг службы эластичного поиска. Это не обязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...