菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 设置breadcrumb arrow 安装 Grafanabreadcrumb arrow 在 Kubernetes 上部署 Grafana
Enterprise 开源

在 Kubernetes 上部署 Grafana

您可以使用 Grafana Cloud,避免自行安装、维护和扩展 Grafana 实例。创建免费账户,立即开始,永久免费访问 1 万个指标、50GB 日志、50GB 追踪、500 VUh k6 测试等。

在本页面上,您将找到使用 Kubernetes manifests 在 Kubernetes 上安装和运行 Grafana 的说明。如果您偏好使用 Helm,请参阅Grafana Helm 社区 Charts

观看此视频,了解更多关于在 Kubernetes 上安装 Grafana 的信息

开始之前

要遵循本指南

系统要求

本节提供最低硬件和软件要求。

最低硬件要求

  • 磁盘空间:1 GB
  • 内存:750 MiB(约 750 MB)
  • CPU:250m(约 0.25 核)

支持的数据库

有关支持的数据库列表,请参阅支持的数据库

支持的 Web 浏览器

有关支持的 Web 浏览器列表,请参阅支持的 Web 浏览器

注意

请确保在您的网络环境中启用端口3000,因为这是 Grafana 的默认端口。

在 Kubernetes 上部署 Grafana OSS

本节介绍如何使用 Kubernetes 安装 Grafana OSS。

注意

如果您想在 Kubernetes 上安装 Grafana Enterprise,请参阅在 Kubernetes 上部署 Grafana Enterprise

如果您在 Kubernetes 中部署应用,它将使用默认命名空间,其中可能已经运行了其他应用。这可能会导致冲突和其他问题。

建议在 Kubernetes 中创建一个新的命名空间,以便更好地管理、组织、分配和管理集群资源。有关命名空间的更多信息,请参阅官方Kubernetes 文档

  1. 要创建命名空间,请运行以下命令

    bash
    kubectl create namespace my-grafana

    在此示例中,命名空间为my-grafana

  2. 要验证和查看新创建的命名空间,请运行以下命令

    bash
    kubectl get namespace my-grafana

    此命令的输出提供了有关新创建的命名空间的更多信息。

  3. 创建名为grafana.yaml 的 YAML manifest 文件。此文件将包含部署所需的代码。

    bash
    touch grafana.yaml

    下一步,您将在 YAML 文件中定义以下三个对象。

    对象描述
    持久卷声明 (PVC)此对象用于存储数据。
    Service此对象为部署中定义的 Pod 提供网络访问。
    Deployment此对象负责创建 Pod,确保它们保持最新,并管理 Replicaset 和滚动更新。
  4. 复制并粘贴以下内容,并将其保存在grafana.yaml 文件中。

    yaml
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
    spec:
      selector:
        matchLabels:
          app: grafana
      template:
        metadata:
          labels:
            app: grafana
        spec:
          securityContext:
            fsGroup: 472
            supplementalGroups:
              - 0
          containers:
            - name: grafana
              image: grafana/grafana:latest
              imagePullPolicy: IfNotPresent
              ports:
                - containerPort: 3000
                  name: http-grafana
                  protocol: TCP
              readinessProbe:
                failureThreshold: 3
                httpGet:
                  path: /robots.txt
                  port: 3000
                  scheme: HTTP
                initialDelaySeconds: 10
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 2
              livenessProbe:
                failureThreshold: 3
                initialDelaySeconds: 30
                periodSeconds: 10
                successThreshold: 1
                tcpSocket:
                  port: 3000
                timeoutSeconds: 1
              resources:
                requests:
                  cpu: 250m
                  memory: 750Mi
              volumeMounts:
                - mountPath: /var/lib/grafana
                  name: grafana-pv
          volumes:
            - name: grafana-pv
              persistentVolumeClaim:
                claimName: grafana-pvc
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
    spec:
      ports:
        - port: 3000
          protocol: TCP
          targetPort: http-grafana
      selector:
        app: grafana
      sessionAffinity: None
      type: LoadBalancer
  5. 运行以下命令将 manifest 发送到 Kubernetes API 服务器

    bash
    kubectl apply -f grafana.yaml --namespace=my-grafana

    此命令创建 PVC、Deployment 和 Service 对象。

  6. 完成以下步骤来验证每个对象的部署状态。

    a. 对于 PVC,运行以下命令

    bash
    kubectl get pvc --namespace=my-grafana -o wide

    b. 对于 Deployment,运行以下命令

    bash
    kubectl get deployments --namespace=my-grafana -o wide

    c. 对于 Service,运行以下命令

    bash
    kubectl get svc --namespace=my-grafana -o wide

在托管 K8s 提供商上访问 Grafana

在此任务中,您将使用 Web 浏览器访问部署在托管 Kubernetes 提供商上的 Grafana。如果在托管 Kubernetes 提供商上部署 Grafana,通过 Web 浏览器访问非常简单,因为它使用了云提供商的 LoadBalancer,并且会自动创建外部负载均衡器路由。

  1. 运行以下命令获取部署信息

    bash
    kubectl get all --namespace=my-grafana

    返回的输出应类似于以下内容

    bash
    NAME                           READY   STATUS    RESTARTS   AGE
    pod/grafana-69946c9bd6-kwjb6   1/1     Running   0          7m27s
    
    NAME              TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
    service/grafana   LoadBalancer   10.5.243.226   1.120.130.330   3000:31171/TCP   7m27s
    
    NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/grafana   1/1     1            1           7m29s
    
    NAME                                 DESIRED   CURRENT   READY   AGE
    replicaset.apps/grafana-69946c9bd6   1         1         1       7m30s
  2. 在输出中找到 EXTERNAL-IP 值并将其输入到您的浏览器中。

    Grafana 登录页面将出现。

  3. 要登录,用户名为admin,密码也为admin

  4. 如果您没有看到 EXTERNAL-IP,请完成以下步骤

    a. 运行以下命令,将 Grafana service 的3000 端口进行端口转发。

    bash
    kubectl port-forward service/grafana 3000:3000 --namespace=my-grafana

    有关端口转发的更多信息,请参阅使用端口转发访问集群中的应用

    b. 在您的浏览器中导航到localhost:3000

    Grafana 登录页面将出现。

    c. 要登录,用户名为admin,密码也为admin

使用 minikube 访问 Grafana

使用 minikube 时,有多种方法可以在 Web 浏览器上访问 Grafana UI。有关 minikube 的更多信息,请参阅如何在 minikube 中访问运行的应用

本节列出了在 minikube 中访问运行应用的两种最常见选项。

选项 1:暴露 Service

此选项在grafana.yaml service manifest 中使用type: LoadBalancer,这使得该 service 可以通过minikube service 命令访问。有关更多信息,请参阅minikube Service 命令用法

  1. 运行以下命令获取 Grafana service IP

    bash
    minikube service grafana --namespace=my-grafana

    输出返回您本地集群中 service 的 Kubernetes URL。

    bash
    |------------|---------|-------------|------------------------------|
    | NAMESPACE  |  NAME   | TARGET PORT |             URL              |
    |------------|---------|-------------|------------------------------|
    | my-grafana | grafana |        3000 | http://192.168.122.144:32182 |
    |------------|---------|-------------|------------------------------|
    Opening service my-grafana/grafana in default browser...
    http://192.168.122.144:32182
  2. 运行curl 命令,验证在理想情况下给定连接是否可在浏览器中工作。

    bash
    curl 192.168.122.144:32182

    以下示例输出显示已找到一个端点

    <a href="/login">已找到</a>。

  3. 使用上述命令提供的 IP:Port 在浏览器中访问 Grafana UI。例如192.168.122.144:32182

    Grafana 登录页面将出现。

  4. 要登录 Grafana,用户名为admin,密码也为admin

选项 2:使用端口转发

如果选项 1 在您的 minikube 环境中不起作用(这主要取决于网络),那么作为替代方案,您可以对 Grafana service 的3000 端口使用端口转发选项。

有关端口转发的更多信息,请参阅使用端口转发访问集群中的应用

  1. 要查找 minikube IP 地址,请运行以下命令

    bash
    minikube ip

    输出包含您在端口转发期间用于访问 Grafana Pod 的 IP 地址。

    Pod 是 Kubernetes 中最小的部署单元,也是在 Kubernetes 集群中运行应用的核心构建块。有关 Pod 的更多信息,请参阅Pod

  2. 要获取 Grafana Pod 信息,请运行以下命令

    bash
    kubectl get pods --namespace=my-grafana

    输出应类似于以下内容

    bash
    NAME                       READY   STATUS    RESTARTS   AGE
    grafana-58445b6986-dxrrw   1/1     Running   0          9m54s

    输出在NAME 列中显示 Grafana POD 名称,您将使用此名称进行端口转发。

  3. 运行以下命令以在 POD 上启用端口转发

    bash
    kubectl port-forward pod/grafana-58445b6986-dxrrw --namespace=my-grafana --address 0.0.0.0 3000:3000
  4. 要在 Web 浏览器上访问 Grafana UI,请输入 minikube IP 地址以及转发的端口。例如192.168.122.144:3000

    Grafana 登录页面将出现。

  5. 要登录 Grafana,用户名为admin,密码也为admin

使用滚动更新策略更新现有部署

滚动更新允许在不停机的情况下进行部署更新,通过增量更新 Pod 实例来替换旧的实例。新的 Pod 将被调度到具有可用资源的节点上。有关滚动更新的更多信息,请参阅执行滚动更新

以下步骤使用kubectl annotate 命令添加元数据并跟踪部署。有关kubectl annotate 的更多信息,请参阅kubectl annotate 文档

注意

除了使用annotate 标志外,您仍然可以使用--record 标志。但是,它已被弃用,并将在未来的 Kubernetes 版本中移除。参阅:https://github.com/kubernetes/kubernetes/issues/40422

  1. 要查看滚动更新的当前状态,请运行以下命令

    bash
    kubectl rollout history deployment/grafana --namespace=my-grafana

    输出将类似于以下内容

    bash
    deployment.apps/grafana
    REVISION  CHANGE-CAUSE
    1         NONE

    输出显示应用grafana.yaml 文件后,没有任何内容被更新或更改。

  2. 要添加元数据以记录初始部署,请运行以下命令

    bash
    kubectl annotate deployment/grafana kubernetes.io/change-cause='deployed the default base yaml file' --namespace=my-grafana
  3. 要查看滚动更新历史记录并验证更改,请运行以下命令

    bash
    kubectl rollout history deployment/grafana --namespace=my-grafana

    您应该会看到之前在CHANGE-CAUSE 中添加的更新信息。

更改 Grafana 镜像版本

  1. 要更改已部署的 Grafana 版本,请运行以下kubectl edit 命令

    bash
    kubectl edit deployment grafana --namespace=my-grafana
  2. 在编辑器中,更改kind: Deployment 部分下的容器镜像。

    例如

      • yaml image: grafana/grafana-oss:10.0.1
      • yaml image: grafana/grafana-oss-dev:10.1.0-124419pre
  3. 保存更改。

    保存文件后,您将收到类似以下的消息

    bash
    deployment.apps/grafana edited

    这意味着更改已应用。

  4. 要验证集群上的滚动更新是否成功,请运行以下命令

    bash
    kubectl rollout status deployment grafana --namespace=my-grafana

    成功的部署滚动更新意味着 Grafana Dev 集群现已可用。

  5. 要检查所有已部署对象的状态,请运行以下命令并包含-o wide 标志以获取更详细的输出

    bash
    kubectl get all --namespace=my-grafana -o wide

    您应该会看到新部署的grafana-oss-dev 镜像。

  6. 要验证,请使用上述命令提供的 IP:Port 在浏览器中访问 Grafana UI。

    Grafana 登录页面将出现。

  7. 要登录 Grafana,用户名为admin,密码也为admin

  8. 在右上角,单击帮助图标。

    版本信息将出现。

  9. 添加change cause 元数据以使用命令跟踪变更

    bash
    kubectl annotate deployment grafana --namespace=my-grafana kubernetes.io/change-cause='using grafana-oss-dev:10.1.0-124419pre for testing'
  10. 要验证,请运行kubectl rollout history 命令

    bash
    kubectl rollout history deployment grafana --namespace=my-grafana

    您将看到类似以下内容的输出

    bash
    deployment.apps/grafana
    REVISION  CHANGE-CAUSE
    1         deploying the default yaml
    2         using grafana-oss-dev:10.1.0-124419pre for testing

这意味着REVISION#2 是当前版本。

注意

kubectl rollout history deployment 命令输出的最后一行是当前在您的 Kubernetes 环境中处于活动并运行的版本。

回滚部署

当 Grafana 部署因崩溃循环、bug 等原因变得不稳定时,您可以将部署回滚到较早的版本(一个REVISION)。

默认情况下,Kubernetes 部署的滚动更新历史记录保留在系统中,以便您可以随时回滚。有关更多信息,请参阅回滚到先前的修订版本

  1. 要列出所有可能的REVISION 值,请运行以下命令

    bash
    kubectl rollout history deployment grafana --namespace=my-grafana
  2. 要回滚到先前的版本,请运行kubectl rollout undo 命令并提供一个修订版本号。

    示例:要回滚到先前的版本,请在--to-revision 参数中指定在运行kubectl rollout history deployment 命令后显示的REVISION 号。

    bash
    kubectl rollout undo deployment grafana --to-revision=1 --namespace=my-grafana
  3. 要验证集群上的回滚是否成功,请运行以下命令

    bash
    kubectl rollout status deployment grafana --namespace=my-grafana
  4. 使用上述命令提供的 IP:Port 在浏览器中访问 Grafana UI。

    Grafana 登录页面将出现。

  5. 要登录 Grafana,用户名为admin,密码也为admin

  6. 在右上角,单击帮助图标以显示版本号。

  7. 要查看新的滚动更新历史记录,请运行以下命令

    bash
    kubectl rollout history deployment grafana --namespace=my-grafana

如果您需要回滚到任何其他REVISION,只需重复上述步骤并在--to-revision 参数中使用正确的修订版本号。

使用配置文件预配 Grafana 资源

Grafana 启动时,预配可以添加、更新或删除您在配置文件中指定的资源。有关详细信息,请参阅Grafana 预配

本节概述了在 Kubernetes 中预配 Grafana 资源的一般说明,使用持久卷将配置文件提供给 Grafana pod。

  1. grafana.yaml 文件添加新的PersistentVolumeClaim

    yaml
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana-provisioning-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Mi
  2. grafana.yaml 文件中,按如下方式将持久卷挂载到/etc/grafana/provisioning

    yaml
    ...
        volumeMounts:
          - mountPath: /etc/grafana/provisioning
            name: grafana-provisioning-pv
          ...
    volumes:
      - name: grafana-provisioning-pv
        persistentVolumeClaim:
          claimName: grafana-provisioning-pvc
    ...
  3. 查找或创建您要添加的预配资源。例如,创建一个alerting.yaml 文件,添加一个静默时间 (报警资源)。

    yaml
    apiVersion: 1
    muteTimes:
      - orgId: 1
        name: MuteWeekends
        time_intervals:
          - weekdays: [saturday, sunday]
  4. 默认情况下,报警资源的配置文件需要放置在provisioning/alerting 目录中。

    alerting.yaml 文件保存在名为alerting 的目录中,因为接下来我们将把此alerting 目录提供给 Grafana pod 的/etc/grafana/provisioning 文件夹。

  5. 首先验证正在运行的 Grafana pod 中的预配目录内容。

    bash
    kubectl exec -n my-grafana <pod_name> -- ls /etc/grafana/provisioning/
    bash
    kubectl exec -n my-grafana <pod_name> -- ls /etc/grafana/provisioning/alerting

    由于alerting 文件夹尚不可用,最后一个命令应输出No such file or directory 错误。

  6. 将本地alerting 目录复制到 Grafana pod 中的/etc/grafana/provisioning/

    bash
    kubectl cp alerting my-grafana/<pod_name>:/etc/grafana/provisioning/

    您可以遵循相同的过程,通过提供以下文件夹来预配其他 Grafana 资源

    • provisioning/dashboards
    • provisioning/datasources
    • provisioning/plugins
  7. 验证正在运行的 Grafana pod 中的alerting 目录是否包含alerting.yaml 文件。

    bash
    kubectl exec -n my-grafana <pod_name> -- ls /etc/grafana/provisioning/alerting
  8. 重新启动 Grafana pod 以预配资源。

    bash
    kubectl rollout restart -n my-grafana deployment --selector=app=grafana

    请注意,rollout restart 会终止先前的 pod 并扩展一个新的 pod。当旧 pod 终止时,您可能需要在新的 pod 中启用端口转发。有关说明,请参阅本指南中有关端口转发的先前部分。

  9. 验证 Grafana 资源是否已在 Grafana 实例中正确预配。

故障排除

本节包含在 Kubernetes 上部署 Grafana 时可能有所帮助的故障排除技巧。

收集日志

在故障排除时,查看 Grafana 服务器日志非常重要。

  1. 要查看 Grafana 日志,请运行以下命令

    bash
    # dump Pod logs for a Deployment (single-container case)
    kubectl logs --namespace=my-grafana deploy/grafana
  2. 如果部署中运行了多个容器,请运行以下命令仅获取 Grafana 部署的日志

    bash
    # dump Pod logs for a Deployment (multi-container case)
    kubectl logs --namespace=my-grafana deploy/grafana -c grafana

有关访问 Kubernetes 应用日志的更多信息,请参阅PodDeployment

将日志级别提高到 debug 模式

默认情况下,Grafana 日志级别设置为info,但您可以将其提高到debug 模式,以获取诊断和解决问题所需的信息。有关 Grafana 日志级别的更多信息,请参阅配置日志

以下示例使用 Kubernetes ConfigMap,它是一个 API 对象,用于以键值对存储非机密数据。有关更多信息,请参阅Kubernetes ConfigMap 概念

  1. 创建一个空文件,命名为grafana.ini 并添加以下内容

    bash
    [log]
    ; # Either "debug", "info", "warn", "error", "critical", default is "info"
    ; # we change from info to debug level
    level = debug

    此示例添加了配置文件中的日志部分。您可以参考配置 Grafana文档,查看所有默认配置设置。

  2. 要通过 ConfigMap 对象将配置文件添加到 Kubernetes 集群中,请运行以下命令

    bash
    kubectl create configmap ge-config --from-file=/path/to/file/grafana.ini --namespace=my-grafana
  3. 要验证 ConfigMap 对象创建,请运行以下命令

    bash
    kubectl get configmap --namespace=my-grafana
  4. 打开 grafana.yaml 文件,并在 Deployment 部分提供自定义配置的挂载路径 (/etc/grafana),并引用新创建的 ConfigMap。

    bash
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
    # the rest of the code remains the same.
    ...
    ....
    ...
                requests:
                cpu: 250m
                memory: 750Mi
            volumeMounts:
              - mountPath: /var/lib/grafana
                name: grafana-pv
               # This is to mount the volume for the custom configuration
              - mountPath: /etc/grafana
                name: ge-config
        volumes:
          - name: grafana-pv
            persistentVolumeClaim:
              claimName: grafana-pvc
           # This is to provide the reference to the ConfigMap for the volume
          - name: ge-config
            configMap:
              name: ge-config
  5. 使用以下 kubectl apply 命令部署 manifest

    bash
    kubectl apply -f grafana.yaml --namespace=my-grafana
  6. 要验证状态,请运行以下命令

    bash
    # first check the rollout status
    kubectl rollout status deployment grafana --namespace=my-grafana
    
    # then check the deployment and configMap information
    kubectl get all --namespace=my-grafana
  7. 要验证它,请使用提供的 IP:Port 在浏览器中访问 Grafana UI

    Grafana 登录页面将出现。

  8. 要登录 Grafana,用户名为admin,密码也为admin

  9. 导航到服务器管理 > 设置,然后搜索日志。

    您应该会看到日志级别已设置为 debug 模式。

使用 –dry-run 命令

您可以使用 Kubernetes --dry-run 命令向修改端点发送请求,并确定该请求是否会成功。

执行 dry run 有助于在错误或意外后果发生之前捕获它们。 有关更多信息,请参阅Kubernetes Dry-run

示例

以下示例展示了当您对 grafana.yaml 进行更改(例如使用新镜像版本或添加新标签)并想确定是否存在语法错误或冲突时如何执行 dry run。

要执行 dry run,请运行以下命令

bash
kubectl apply -f grafana.yaml --dry-run=server --namespace=grafana

如果没有错误,输出将类似于此

bash
persistentvolumeclaim/grafana-pvc unchanged (server dry run)
deployment.apps/grafana unchanged (server dry run)
service/grafana unchanged (server dry run)

如果存在错误或警告,您将在终端中看到它们。

移除 Grafana

如果您想移除任何 Grafana 部署对象,请使用 kubectl delete command

  1. 如果您想移除完整的 Grafana 部署,请运行以下命令

    bash
    kubectl delete -f grafana.yaml --namespace=my-grafana

    此命令删除 deployment、persistentvolumeclaim 和 service 对象。

  2. 要删除 ConfigMap,请运行以下命令

    bash
    kubectl delete configmap ge-config --namespace=my-grafana

在 Kubernetes 上部署 Grafana Enterprise

部署 Grafana Enterprise 的过程与前述过程几乎相同,只是需要额外的步骤来添加您的许可证文件。

获取 Grafana Enterprise 许可证

要运行 Grafana Enterprise,您需要一个有效的许可证。要获取许可证,请联系 Grafana Labs 代表。本主题假设您在 license.jwt 文件中拥有一个有效的许可证。将您的许可证与一个 URL 关联起来,以便稍后在本主题中使用。

创建许可证 secret

使用以下命令从您的许可证文件创建 Kubernetes secret

bash
kubectl create secret generic ge-license --from-file=/path/to/your/license.jwt

创建 Grafana Enterprise 配置

  1. 创建一个名为 grafana.ini 的 Grafana 配置文件

  2. 将以下 YAML 内容粘贴到您创建的文件中

    yaml
    [enterprise]
    license_path = /etc/grafana/license/license.jwt
    [server]
    root_url =/your/license/root/url
  3. root_url 字段更新为您获得的许可证关联的 URL。

为 Grafana Enterprise 配置创建 Configmap

使用以下命令从您的 grafana.ini 文件创建 Kubernetes Configmap

bash
kubectl create configmap ge-config --from-file=/path/to/your/grafana.ini

创建 Grafana Enterprise Kubernetes manifest

  1. 创建一个 grafana.yaml 文件,并将以下内容复制并粘贴到其中。

    以下 YAML 与 Grafana 安装的 YAML 相同,只是增加了对包含您的 Grafana 配置文件和许可证 secret 的 Configmap 的引用。

    yaml
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: grafana-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: grafana
      name: grafana
    spec:
      selector:
        matchLabels:
          app: grafana
      template:
        metadata:
          labels:
            app: grafana
        spec:
          securityContext:
            fsGroup: 472
            supplementalGroups:
              - 0
          containers:
            - image: grafana/grafana-enterprise:latest
              imagePullPolicy: IfNotPresent
              name: grafana
              ports:
                - containerPort: 3000
                  name: http-grafana
                  protocol: TCP
              readinessProbe:
                failureThreshold: 3
                httpGet:
                  path: /robots.txt
                  port: 3000
                  scheme: HTTP
                initialDelaySeconds: 10
                periodSeconds: 30
                successThreshold: 1
                timeoutSeconds: 2
              resources:
                limits:
                  memory: 4Gi
                requests:
                  cpu: 100m
                  memory: 2Gi
              volumeMounts:
                - mountPath: /var/lib/grafana
                  name: grafana-pv
                - mountPath: /etc/grafana
                  name: ge-config
                - mountPath: /etc/grafana/license
                  name: ge-license
          volumes:
            - name: grafana-pv
              persistentVolumeClaim:
                claimName: grafana-pvc
            - name: ge-config
              configMap:
                name: ge-config
            - name: ge-license
              secret:
                secretName: ge-license
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: grafana
    spec:
      ports:
        - port: 3000
          protocol: TCP
          targetPort: http-grafana
      selector:
        app: grafana
      sessionAffinity: None
      type: LoadBalancer

    注意

    如果您在 Service 中使用 LoadBalancer,并且取决于您的云平台和网络配置,这样做可能会将您的 Grafana 实例暴露给互联网。为了消除此风险,请使用 ClusterIP 将访问限制在部署 Grafana 的集群内部。

  2. 要将 manifest 发送到 Kubernetes API Server,请运行以下命令:kubectl apply -f grafana.yaml

  3. 要验证 manifest 是否已发送,请运行以下命令:kubectl port-forward service/grafana 3000:3000

  4. 在浏览器中导航到 localhost:3000

    您应该会看到 Grafana 登录页面。

  5. 使用 admin 作为用户名和密码登录。

  6. 要验证您使用的是 Enterprise 许可证,请滚动到页面底部,您应该会看到 Enterprise (Licensed)