diff options
Diffstat (limited to 'content/logs/2021-12-26-nfs-k3s.org')
-rw-r--r-- | content/logs/2021-12-26-nfs-k3s.org | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/content/logs/2021-12-26-nfs-k3s.org b/content/logs/2021-12-26-nfs-k3s.org new file mode 100644 index 0000000..5785d4f --- /dev/null +++ b/content/logs/2021-12-26-nfs-k3s.org @@ -0,0 +1,61 @@ +--- +title: "Enable NFS on K3S" +date: 2021-12-26 +tags: ['kubernetes', 'linux', 'helm', 'k3s'] +--- + +By default [[https://k3s.io/][K3S]] comes only with [[https://github.com/rancher/local-path-provisioner][local-path]] storage class, and if you are running +with more than one node in your cluster you may want to use a more "distributed" +solution. For may case I opted for NFS. + +To check the current storage class you can run: + +#+BEGIN_SRC bash +k3s kubectl get storageclasses +#+END_SRC + +And it will print something like: + +#+BEGIN_SRC +NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE +local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 154d +#+END_SRC + +To start adding First you need to install [[https://github.com/helm/helm][helm]] on your server. To do so you may +run: + +#+BEGIN_SRC bash +curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash +#+END_SRC + +*Be careful when running scripts directly into bash always check the source* +*Sometimes is also recommended to do not pipe directly to bash* + +Once it is installed we need to add the [[https://kubernetes.io/docs/concepts/storage/storage-classes/#nfs][NFS storage classes]]. It has two +providers, I have chose [[https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner][NFS Subdir External Provisioner]]. + +Add the helm repo + +#+BEGIN_SRC bash +helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ +#+END_SRC + +Then we need to actually install the provider + + +#+BEGIN_SRC bash +helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \ + --set nfs.server=x.x.x.x \ + --set nfs.path=/exported/path +#+END_SRC + +Set the ~nfs.server~ and ~nfs.path~ accordingly with your setup. + +After that if we run ~k3s kubectl get storageclasses~ it will now print another +NFS provider: + +#+BEGIN_SRC +NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE +local-path (default) rancher.io/local-path Delete WaitForFirstConsumer false 154d +nfs-client cluster.local/nfs-subdir-external-provisioner Delete Immediate true 76m +#+END_SRC |