aboutsummaryrefslogtreecommitdiff
path: root/content/posts/2021-12-26Enable_NFS_on_K3S.html
blob: 09f91e78e01caa8e58aad4dc1f37ca285a7fc510 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<section>
    <p>
        By default <a href="https://k3s.io/">K3S</a> comes only with <a
            href="https://github.com/rancher/local-path-provisioner">local-path</a> storage class, and if you are
        running
        with more than one node in your cluster you may want to use a more &ldquo;distributed&rdquo;
        solution. For may case I opted for NFS.
    </p>
    <p>
        To check the current storage class you can run:
    </p>
    <pre><code>k3s kubectl get storageclasses</code></pre>
    <p>
        And it will print something like:
    </p>
    <pre><code>NAME                   PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path (default)   rancher.io/local-path                           Delete          WaitForFirstConsumer   false                  154d</code></pre>
    <p>
        To start adding First you need to install <a href="https://github.com/helm/helm">helm</a> on your server. To do
        so you may
        run:
    </p>

    <pre><code>curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash</code></pre>
    <p>
        Be careful when running scripts directly into bash always check the source
        Sometimes is also recommended to do not pipe directly to bash
    </p>
    <p>
        Once it is installed we need to add the <a
            href="https://kubernetes.io/docs/concepts/storage/storage-classes/#nfs">NFS storage classes</a>. It has two
        providers, I have chose <a href="https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner">NFS Subdir
        External Provisioner</a>.
    </p>
    <p>
        Add the helm repo
    </p>

    <pre><code>helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/</code></pre>
    <p>
        Then we need to actually install the provider
    </p>
    <div class="org-src-container">
<pre><code>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</code></pre>
    </div>
    <p>
        Set the <code>nfs.server</code> and <code>nfs.path</code> accordingly with your setup.
    </p>

    <p>
        After that if we run <code>k3s kubectl get storageclasses</code> it will now print another
        NFS provider:
    </p>

    <pre><code>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</code></pre>
</section>