如何在Kubernetes中为Kibana设置入口

时间:2018-10-03 13:51:49

标签: kubernetes kibana kubernetes-ingress

我刚刚使用https://medium.com/@timfpark/efk-logging-on-kubernetes-on-azure-4c54402459c4上的指南在我的Kubernetes集群上安装了EFK堆栈

我可以按照指南中所述通过代理访问它

http://localhost:8001/api/v1/namespaces/kube-system/services/kibana-logging/proxy

但是,我希望它可以通过现有的入口控制器工作,因此我使用以下yaml创建了新的入口规则:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
  generation: 2
  labels:
    app: kibana
  name: kibana
  namespace: kube-system
spec:
  rules:
  - host: kibana.dev.example1.com
    http:
      paths:
      - backend:
          serviceName: kibana-logging
          servicePort: 5601
        path: /
status:
  loadBalancer:
    ingress:
    - {}

以我的服务身份运行:

apiVersion: v1
kind: Service
metadata:
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
    k8s-app: kibana-logging
    kubernetes.io/cluster-service: "true"
    kubernetes.io/name: Kibana
  name: kibana-logging
  namespace: kube-system
spec:
  clusterIP: X.X.195.49
  ports:
  - port: 5601
    protocol: TCP
    targetPort: ui
  selector:
    k8s-app: kibana-logging
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

但是,当我尝试访问我的URL时: http://kibana.dev.example1.com

我得到:{"statusCode":404,"error":"Not Found","message":"Not Found"}

如果我尝试访问:http://kibana.dev.example1.com/app/kibana#

我得到:“ Kibana无法正确加载。请检查服务器输出以获取更多信息。”

在查看了Kibana Pod和Ingress Pod的日志并比较了通过代理的成功请求和通过Ingress的不成功请求的结果之后,我发现...

击中/

"GET / HTTP/1.1" 200 197 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15" 491 0.003 [kube-system-kibana-logging-5601] X.X.22.204:5601 197 0.003 200 6101a7003003d34636d2012e53c23ca7
"GET /api/v1/namespaces/kube-system/services/kibana-logging/proxy/app/kibana HTTP/1.1" 404 85 "http://kibana.dev.example1.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15" 612 0.003 [kube-system-kibana-logging-5601] X.X.22.204:5601 85 0.003 404 5809ac2b33d3e23b200b13c9971d8520

点击/ app / kibana#

"GET /app HTTP/1.1" 404 85 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15" 470 0.003 [kube-system-kibana-logging-5601] X.X.22.204:5601 85 0.003 404 54a4abe0cae6d3d4298847a0db0786d6
"GET /app/kibana HTTP/1.1" 200 13301 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15" 477 0.041 [kube-system-kibana-logging-5601] X.X.22.204:5601 13272 0.040 200 6cb7e7698f5c72e0cd06b3408d8d4673
"GET /api/v1/namespaces/kube-system/services/kibana-logging/proxy/bundles/kibana.style.css?v=16627 HTTP/1.1" 404 85 "https://kibana.dev.example1.com/app/kibana" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15" 576 0.004 [kube-system-kibana-logging-5601] X.X.22.204:5601 85 0.004 404 0b825f03c36c2225ab082c2a0bab15f4

通过代理访问这些请求时,大多数请求将返回302而不是404。入口能否访问命名空间kube-system中的这些URL?

我是否在这里遗漏了一些明显的内容-可能是输入了错误的Kibana URL?我做了很多谷歌搜索,找不到类似的东西。

1 个答案:

答案 0 :(得分:2)

原来的问题出在kibana配置上。

在kibana部署Yaml中,有一个名为SERVER_BASEPATH的环境变量,它被设置为指向kibana服务代理。这导致每次我尝试从外部访问该端点时都要重写URL。

如果您注释掉此变量及其值并重新部署kibana,则只需单击入口地址即可工作。

例如http://kibana.dev.example1.com/