概要
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を使っていると、データの永続化が面倒です。
しかし、永続化の方法さえ分かってしまえばかなり便利だと思うので、早めに使い方へ慣れたいと思います。