KubernetesでGrafanaを動かす

目次

概要

KubernetesでGrafanaを動かしたので、その方法について紹介します。

環境

  • Kubernetes 1.8

方法

Grafanaは、InfluxDBやPrometheusといったメトリクスを収集するツールと連携して、それらの情報をグラフなどを使い視覚的に分かりやすく表示するためのものです。

GrafanaをKubernetesに配置する際には、Podの削除や作り直しをした際にもGrafanaで設定した設定を引き継げるようにデータを保存するためのストレージを用意します。

なので、Grafanaを動かす流れとして、ストレージの用意をしてから配置という流れになります。

ストレージの用意

私の環境ではnfsを使っているため、nfsを使ったものになっています。

他のものを使いたい場合は適切に内容を書き換えて使ってください。

ストレージの用意のために、PersitentVolumeとPersistentVolumeClaimを用意します。

PersistentVolumeは次のようなyamlで用意します。

apiVersion: v1
kind: PersistentVolume
metadata:
  name: grafana-pv
  labels:
    name: grafana-pv
spec:
  capacity:
    storage: "1Gi"
  accessModes:
    - ReadWriteMany
  nfs:
    server: ***
    path: ***

nfsのserverやpathなどは適当に書き換えてください。

PersistentVolumeClaimは次のようなyamlで用意します。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: grafana-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: "1Gi"
  selector:
    matchLabels:
      name: grafana-pv

あとは、これらのyamlを元にストレージを用意します。

Grafanaの配置

Grafanaを配置するために、Deploymentを使います。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: grafana
  labels:
    app: grafana
spec:
  replicas: 1
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
        - image: grafana/grafana
          name: grafana
          volumeMounts:
            - name: grafana-persistent-storage
              mountPath: /var/lib/grafana
      volumes:
        - name: grafana-persistent-storage
          persistentVolumeClaim:
            claimName: grafana-pvc

このyamlを元にDeploymentを用意しましょう。

これで、Grafanaの配置ができました。

Serviceの作成

外部からGrafanaにアクセスするためには、Serviceを用意します。

ここでは、Kubernetes内からアクセスするためのServiceを載せておきます。

apiVersion: v1
kind: Service
metadata:
  labels:
    app: grafana-service
  name: grafana-service
spec:
  type: ClusterIP
  ports:
    - name: http
      port: 3000
      targetPort: 3000
      protocol: TCP
  selector:
    app: grafana

さいごに

Kubernetsを使っていると、データの永続化が面倒です。

しかし、永続化の方法さえ分かってしまえばかなり便利だと思うので、早めに使い方に慣れたいと思います。