我尝试在kubernetes上运行elasticsearch和kibana。我跑了:
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/
当我进入elasticsearch pod时,一切看起来都很好,但是当我进入kibana时,该应用程序无法运行(我看到“ 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 pod上的kibana.yml:
server.name: kibana
server.host: "0"
elasticsearch.url: http://elasticsearch:9200
xpack.monitoring.ui.container.elasticsearch.enabled: true
我对Kubernetes还是很陌生,我不知道为什么他们不能彼此交谈。
答案 0 :(得分:2)
Kibana向您说明了什么问题:
{“ type”:“ log”,“ @ timestamp”:“ 2019-03-02T10:38:49Z”,“ tags”:[“ warning”,“ elasticsearch”,“ admin”],“ pid” :1,“消息”:“无法恢复连接:http://elasticsearch:9200/”}
pod elasticsearch的名称不足以用于kubernetes。
您应该按照Amitio的说明进行服务。这是kibana和elasticsearch在同一名称空间中运行的情况。
如果kibana和elasticsearch在不同的命名空间中运行,您将为服务编写完整的DNS名称:elasticsearch.my-namespace.svc.cluster.local
如果您要在同一吊舱中运行elasticsearch和kibana。然后localhost:9200将可以查询。
根据您的情况。当Elasticsearch运行时,当1-2-3-4是Pod的IP地址时,您可以将其用作ELASTIVSEARCH_URL pod DNS名称:1-2-3-4.default.pod.cluster.local。
如果您在创建elasticsearch时使用主机名:
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 pod DNS名称:elasticsearch.for-kibana.default.svc.cluster.local服务。
您可以找到所有here
的信息答案 1 :(得分:1)