Невозможно соединитьasticsearch и kibana на одномерном режиме kubernetes. - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь запустить эластичный поиск и кибану на кубернетес.Я запустил:

kubectl run elasticsearch --image=elasticsearch:6.6.1 --env="discovery.type=single-node" --port=9200 --port=9300
kubectl run kibana --image=kibana:6.6.1 --port=5601

, затем я запустил $kubectl proxy,

http://localhost:$IP_FROM_KUBECTL_PROXY(usually 8081)/api/v1/namespaces/default/pods/$POD_NAME/proxy/

Когда я вошел в модуль Flexiblesearch, все выглядит хорошо, но когда я вошел в кибану, приложение не "не работает (я вижу, что «сервер Kibana еще не готов» для бесконечности).

Журналы kibana следующие:

{"type":"log","@timestamp":"2019-03-02T10:38:47Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"No living connections"}
{"type":"log","@timestamp":"2019-03-02T10:38:49Z","tags":["warning","elasticsearch","admin"],"pid":1,"message":"Unable to revive connection: http://elasticsearch:9200/"}

Это kibana.yml на модуле kibana:

Конфигурация Kibana по умолчанию от kibana-docker.

server.name: kibana
server.host: "0"
elasticsearch.url: http://elasticsearch:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true

Я довольно новичок в Kubernetes и не могу понять, почему они не могут общаться друг с другом.

Ответы [ 2 ]

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

Кибана объясняет вам, в чем проблема:

{"type": "log", "@ timestamp": "2019-03-02T10: 38: 49Z", "tags": ["warning", "asticsearch "," admin "]," pid ": 1," message ":" Невозможно восстановить соединение: http://elasticsearch:9200/"}

Имя, которое вы задаете, не достаточно для kubernetes.

Вы должны сделать так, как вам объяснит Amitio Это если кибана и эластичный поиск работает в одном и том же пространстве имен.

Если кибана и эластичный поиск работает в разных пространствах имен, вы 'Я напишу полное DNS-имя для сервиса :asticsearch.my-namespace.svc.cluster.local

Если вы будете запускатьasticsearch и kibana в одном модуле, то localhost: 9200 сможет выполнить запрос.

И для вашей ситуации. Когда работаетasticsearch, вы можете использовать в качестве имени ELASTIVSEARCH_URL pod DNS: 1-2-3-4.default.pod.cluster.local, когда 1-2-3-4 является IP-адресоммодуль с точками, замененными на тире.

Если вы будете использовать имя хоста при созданииasticsearch:

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  labels:
    name: elasticsearch-single
spec:
  hostname: elasticsearch
  subdomain: for-kibana
  containers:
  - image: elasticsearch:6.6.1
    name: elasticsearch

Вы будетевозможность отправки ELASTICSEARCH_URL DNS-имени модуля: Служба упругого поиска.for-kibana.default.svc.cluster.local.

Всю информацию вы можете найти здесь

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

В кубернетесе стручки общаются с Сервисами.Вам нужно определить сервис, который выбирает ваш модуль (с селектором).

, например:

kind: Service
apiVersion: v1
metadata:
  name: elasticsearch
spec:
  selector:
    app: elasticsearch
  ports:
  - protocol: TCP
    port: 9200
    targetPort: 9200

Подробнее об услугах здесь и о ярлыках здесь

Обычно мы определяем модули как файлы yml и добавляем туда метки, но если вы хотите использовать kubectl run, вы можете добавить метки с помощью -l

  -l, --labels='': Comma separated labels to apply to the pod(s). Will override previous values.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...