После обсуждения было более ясно, что кажется неправильным.
Вы используете локальный кластер без балансировщика нагрузки.Вы должны установить вход или использовать NodePort в качестве типа сервиса.Я собираюсь описать решение с NodePort.Два шага:
- Измените
kibana-deployment.yaml
и удалите в разделе env
:
- name: SERVER_BASEPATH
value: /api/v1/namespaces/kube-system/services/kibana-logging/proxy
, чтобы вы kibana-deployment.yaml
выглядели так:
apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana-logging
namespace: kube-system
labels:
k8s-app: kibana-logging
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
spec:
replicas: 1
selector:
matchLabels:
k8s-app: kibana-logging
template:
metadata:
labels:
k8s-app: kibana-logging
annotations:
seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
spec:
containers:
- name: kibana-logging
image: docker.elastic.co/kibana/kibana-oss:6.3.2
resources:
# need more cpu upon initialization, therefore burstable class
limits:
cpu: 1000m
requests:
cpu: 100m
env:
- name: ELASTICSEARCH_URL
value: http://elasticsearch-logging:9200
ports:
- containerPort: 5601
name: ui
protocol: TCP
Измените
kibana-service.yaml
, чтобы установить тип службы для NodePort:
apiVersion: v1
kind: Service
metadata:
name: kibana-logging
namespace: kube-system
labels:
k8s-app: kibana-logging
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
kubernetes.io/name: "Kibana"
spec:
type: NodePort
ports:
- port: 5601
protocol: TCP
targetPort: ui
nodePort: 30601
selector:
k8s-app: kibana-logging
Затем выполните
kubectl apply -f kibana-deployment.yaml
kubectl apply -f kibana-service.yaml
Кибана должна быть доступна в http://<clusterip>:30601
Фон
Вы получите прямой доступ к http://clusterip:30601
без заданного базового пути.Так что это нужно удалить, чтобы кибана использовала /
в качестве базового пути.В противном случае он попытается добавить базовый путь / api / v1 / [...] к вашему URL.Вы можете попробовать это, если хотите проверить это.
В этом комментарии от парня с упругим поиском упоминается , что вам нужно полностью удалить base_path, если вы хотите использовать /
.
Изменение службы на NodePort необходимо, поскольку K8s не публикует порты по умолчанию.Я только что ответил на похожую проблему на этот вопрос .
Оригинальный ответ (неправильный)
В репозитории, с которым вы связывались, я вижу, что kibana-deploy.yaml должен установить переменные окружения:
env:
- name: ELASTICSEARCH_URL
value: http://elasticsearch-logging:9200
- name: SERVER_BASEPATH
value: /api/v1/namespaces/kube-system/services/kibana-logging/proxy
Вы установили их соответствующим образом?
Предположим, у вас есть вход, loadbalancer или NodePort непосредственно к экземпляру kibana, так что вы хотите получить к нему прямой доступ с помощью http://yourserver:9200/. Затем SERVER_BASEPATH
это /