おうちk8sのPersistentVolumeにNFSを使う
おうちk8sで利用するデータの永続化のためにNFSでのPersistentVolumeを作ってみます
自分が作ったおうちk8sはラズパイ3台構成(master1台/node2台)で、今回はmasterサーバをNFSサーバとして利用します
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のデータの永続化はひとまずこれで運用していきます💪