我有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服务的名称(效果很好):
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。如何使它们连接?
答案 0 :(得分:1)
我设法通过添加以下内容来修复它:
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 env。
答案 1 :(得分:0)
您能从Kibana pod获得弹性搜索服务吗? 删除Elasticsearch服务周围的一个。不需要。
答案 2 :(得分:0)
摘自官方文档docs:
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
您只需手动或使用kompose工具将其转换为kubernetes服务并运行它即可。
或者您可以尝试将env变量插入现有文件,然后从ur命令中删除elasticsearch url选项。
ELASTICSEARCH_HOSTS: http://elasticsearch.example.org
或者,如果您只是将elasticsearch服务命名为elasticsearch,则该服务应该可以正常运行,因为默认值为:
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"
答案 3 :(得分:-1)
请勿使用开关--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"
我也建议您,在另一个线程中阅读here,以获得更详细的k8s DNS解释。