えんじにあメモ

試してみた技術とか、たまに家電ネタ

おうちk8sのPersistentVolumeにNFSを使う

おうちk8sで利用するデータの永続化のためにNFSでのPersistentVolumeを作ってみます

自分が作ったおうちk8sはラズパイ3台構成(master1台/node2台)で、今回はmasterサーバをNFSサーバとして利用します

sminamot-dev.hatenablog.com

NFSクライアントの設定

以下nodeサーバ2台にログインしてから行います

$ sudo apt install nfs-common

クライアント側はこれでおわり

NFSサーバの設定

以下masterサーバにログインしてから行います

# NFSサーバのインストール
$ sudo apt install nfs-kernel-server

# NFSで利用するディレクトリの作成
$ mkdir -p /mnt/share/nfs

# NFSサーバ用の設定
$ echo "/mnt/share/nfs  172.22.1.0/24(rw,async,crossmnt,no_root_squash,no_subtree_check)" | sudo tee -a /etc/exports

# NFSサーバの起動
$ sudo systemctl start nfs-server.service
$ sudo systemctl enable nfs-server.service

NFSサーバ用の設定で指定しているIPレンジはおうちk8sで利用しているサーバのレンジです

自分の環境では

  • master -> 172.22.1.161
  • node1 -> 172.22.1.159
  • node2 -> 172.22.1.162

だったため、上記の設定としています

以上でNFSサーバ/クライアントの設定は終了になります

PV/PVCの作成

確認のためにPV/PVCを作成してみます

grafana用に1GiBのPV/PVCを作ります

事前にmasterサーバに対象のディレクトリを作っておきます

# 以下masterサーバで実行
$ sudo mkdir -p /mnt/share/nfs/grafana

PV

nfs-pv.yaml

kind: PersistentVolume
apiVersion: v1
metadata:
  name: grafana
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: grafana
  nfs:
    server: raspberrypi-master.local
    path: /mnt/share/nfs/grafana

この例ではPVが削除されてもデータが残るよう、persistentVolumeReclaimPolicyにはRetainを指定しますが、
ここ を参考に適宜指定してください

PVC

nfs-pvc.yaml

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: grafana
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  storageClassName: grafana

デプロイします 🚀

$ kubectl apply -f nfs-pv.yaml -f nfs-pvc.yaml

確認

$ kubectl get pv,pvc grafana
NAME                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                STORAGECLASS   REASON   AGE
persistentvolume/grafana   1Gi        RWO            Retain           Bound    monitoring/grafana   grafana                 4d19h

NAME                            STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/grafana   Bound    grafana   1Gi        RWO            grafana        4d19h

(monitoringネームスペースでデプロイしてます)

STATUSがBoundとなって無事デプロイされているようです 🎉🎉🎉

まとめ

おうちk8s上にNFSサーバの設定、NFSを利用したPV/PVCを作ってみました

prometheusやgrafanaのデータの永続化はひとまずこれで運用していきます💪

参考