cluster-configs/k8s/zfs-provisioner
2025-05-02 20:07:32 +02:00
..
ssh init 2025-05-02 20:07:32 +02:00
Readme.md init 2025-05-02 20:07:32 +02:00
storage-class.yml init 2025-05-02 20:07:32 +02:00
values.yml init 2025-05-02 20:07:32 +02:00

ZFS-provisioner

Requirements

  • ZFS on storage server
  • nfs-kernel-server on storage server
  • sudo on storage server

Install

  • Add user adduser zfs-provisioner
  • Configure sudo on storage server:

echo "zfs-provisioner ALL=(ALL) NOPASSWD:/sbin/zfs *,/bin/chmod *" > /etc/sudoers.d/zfs-provisioner

  • Generate an ssh keypair: ssh-keygen
  • Edit values.yml
    • hostAliases: IP and name of hypervisor or storage server
    • ssh.identities.id_rsa: generated private key
    • ssh.knownHosts: public machine key of storage server (/etc/ssh/ssh_host_rsa_key.pub)
  • Install
kubectl create namespace zfs-provisioner

helm repo add zfs-provisioner https://ccremer.github.io/kubernetes-zfs-provisioner

helm install kubernetes-zfs-provisioner --namespace zfs-provisioner zfs-provisioner/kubernetes-zfs-provisioner -f values.yml
  • Edit storage-class.yml and create the storage class
    • parameters
      • hostname: hostname of stroage server (make sure it resolves!)
      • parentDataset: used ZFS dataset

kubectl apply -f storage-class.yml