首页 > 解决方案 > 无法使用来自浏览器的入口访问我在 k8s 集群上的 grafana 仪表板

问题描述

我已经安装PrometheusGrafana在我的Kubernetes集群上使用helm

 $helm install prometheus prometheus-community/kube-prometheus-stack

所有pods,deploymentsservices都启动并运行。当我像这样使用端口转发时:

kubectl port-forward deployment/prometheus-grafana 3000

我可以访问我正在grafana dashboard使用的浏览器,但是当我想使用ingress而不是port-forward响应时:

在此处输入图像描述

而且我无法访问 Grafana 仪表板。


我的ingressyaml 文件:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: grafana-ingress
  namespace: default
spec:
  ingressClassName: kong
  rules:
  - http:
      paths:
      - path: /grafana/login
        pathType: Prefix
        backend:
          service:
            name: prometheus-grafana
            port:
              number: 80

服务prometheus-grafanayaml 文件是:

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Service
metadata:
  annotations:
    meta.helm.sh/release-name: prometheus
    meta.helm.sh/release-namespace: default
  creationTimestamp: "2021-09-15T11:07:30Z"
  labels:
    app.kubernetes.io/instance: prometheus
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: grafana
    app.kubernetes.io/version: 8.1.2
    helm.sh/chart: grafana-6.16.4
  name: prometheus-grafana
  namespace: default
  resourceVersion: "801373"
  uid: e1f57de9-94d0-460a-a427-4a97fd770e12
spec:
  clusterIP: 10.100.90.147
  clusterIPs:
  - 10.100.90.147
  ports:
  - name: service
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app.kubernetes.io/instance: prometheus
    app.kubernetes.io/name: grafana
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

标签: kubernetesprometheusgrafana

解决方案


我已经发布了社区 wiki 答案以获得更好的可见性。问题已解决,与入口 yaml 文件有关。

解决方案:

我更改了我的入口文件:添加 host: grafana.example.com 并更改 path/ . 一切顺利。

解决方案的建议:

我的意思是,入口只定义了一个路径, /grafana/login 类型为 Prefix。Grafana 肯定会有其他路径,而不是 /grafana/login 我尝试的第一件事就是只使用一条路径, /grafana. 使用端口转发时,在哪个路径可以打开 grafana 仪表盘?因为 Grafana 可能会期望请求到达相同的路径/路径。

解释:

Grafana 是一个 Web 应用程序,希望直接在服务器的根路径下提供服务。您需要将其/作为路径公开,使用重写目标规则或在主机的子域下提供它。尝试使用 path 是否/一切都按预期工作


推荐阅读