如何从 minikube 连接到主机上安装的 elasticsearch(本地开发和 kvm2)

How to connect from minikube to elasticsearch installed on host (local development & kvm2)

在 Ubuntu 18 我在我的电脑上安装了 elasticsearch 和 kibana 作为服务。此外,还安装了 minikube(使用 kvm2 驱动程序)。我正在学习 kubernetes (Add logging and metrics to the PHP / Redis Guestbook example) 上的教程,但无法连接到我的外部托管 elasticsearch 和 kibana。

如何在 minikube 中配置 elasticsearch/kibana 和 kube-state-metrics?

首先必须将elasticsearch & kibana 绑定到minikube "can see".

的特定主机ip

获取ip:

minikube ssh "route -n | grep ^0.0.0.0 | awk '{ print $2 }'"

In my case it returns 192.168.122.1

更新 elastic 和 kibana 配置并重启:

sudo nano /etc/elasticsearch/elasticsearch.yml
network.host: 192.168.122.1
cluster.initial_master_nodes: ["node-1","node-2"]

sudo nano /etc/kibana/kibana.yml
server.host: 192.168.122.1
elasticsearch.hosts: ["http://192.168.122.1:9200"]

sudo systemctl restart elasticsearch.service
sudo systemctl restart kibana.service

验证服务器是 运行:

curl 192.168.122.1:9200
curl 192.168.122.1:5601
curl 192.168.122.1:5601/api/status

sudo journalctl -u kibana
sudo journalctl -u elasticsearch

从 minikube 内部验证连通性:

minikube ssh
                         _             _            
            _         _ ( )           ( )           
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __  
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ curl 192.168.122.1:9200
$ curl 192.168.122.1:5601/api/status

现在我们只需要在kubernetes secret配置中使用这个ip即可kubernetes secret configuration for filebeat:

ELASTICSEARCH_HOSTS

["http://192.168.122.1:9200"]

KIBANA_HOSTS

"192.168.122.1:5601"