🍆
Kubernetes に democratic-csi を入れて、TrueNAS に NFS バックエンドPVを作ってもらうようにした
はじめに
Kubernetes に democratic-csi を入れて、TrueNAS に自動的にPVを作ってもらうようにした の続きで、複数の Pod の間で共有してアクセスするボリュームが欲しくなったので、NFSをバックエンドにするPVを作れるようにしてみました。
CSI の概要や TrueNAS の ZFS Dataset の作成方法については上記の記事を参考にしてください。
作ってみました
TrueNAS の NFS サービスを設定する
TrueNAS のサービス管理画面から、NFS サービスの設定の以下の項目を有効化しておきます。(デフォルトだと両方ともOFF)
- Enable NFSv4
- NFSv3 ownership model for NFSv4
democratic-csi をセットアップする
truenas-nfs.yml
csiDriver:
name: "org.democratic-csi.nfs"
storageClasses:
- name: truenas-nfs-csi
defaultClass: false
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
parameters:
fsType: nfs
mountOptions:
- noatime
- nfsvers=4
secrets:
provisioner-secret:
controller-publish-secret:
node-stage-secret:
node-publish-secret:
controller-expand-secret:
driver:
config:
driver: freenas-nfs
httpConnection:
protocol: http
host: 192.168.1.xxx
port: 80
username: root
password: PASSWORD
sshConnection:
host: 192.168.1.xxx
port: 22
username: root
password: PASSWORD
zfs:
datasetParentName: main/k8s-nfs
detachedSnapshotsDatasetParentName: main/k8s-snaps
datasetPermissionsMode: "0777"
nfs:
shareHost: 192.168.1.xxx
shareAlldirs: true
shareAllowedHosts: []
shareAllowedNetworks: []
shareMaprootUser: root
shareMaprootGroup: wheel
shareMapallUser: ""
shareMapallGroup: ""
あとは Helm を使って導入していきます。
$ $ helm upgrade --install --values truenas-nfs.yml --create-namespace --namespace democratic-csi trunas-nfs democratic-csi/democratic-csi
Kubernetes 上で PVC 適用 → PV 作成された様子
TrueNAS 上でセットアップされた様子
おわりに
TrueNAS と democratic-csi を組み合わせることで、iSCSI によるブロックアクセス領域と、NFS によるファイルアクセス領域の両方を定義するだけで自動的に利用することが出来るようになりました。
これで、ワークロードに合わせて適切な PV が選択できるようになったことで、よりご家庭の盆栽 Kubernetes が捗るようになったと思います。
参考にしたページ
Moving to TrueNAS and Democratic CSI for Kubernetes Persistent Storage
Discussion